
[space] Get started

[title] Sandbox
[path] Quickstart/

## Cross River sandbox&#x20;

The Cross River Sandbox is a free, fully featured test environment. It is designed to help you build, test, and refine your integration before going live.

In our fully isolated sandbox, you can safely experiment with Cross River APIs and simulate a variety of workflows all without affecting your production data.

Sandbox is a **non-production environment** and behaves differently from production systems in terms of data handling, stability, and security controls.&#x20;

Sandbox is intended to simulate behavior, not replicate production data scenario&#x73;**&#x20;using real data**.

**Always use test data in sandbox environments.**

## ⚠️ Important: Do not use real customer data

**Do not use real customer data in sandbox under any circumstances.&#x20;**

This includes:

- Personally Identifiable Information (PII)
- Names, email addresses, phone numbers
- Account numbers or financial identifiers
- Any data that belongs to a real individual or business
- Any data that could be traced back to a real customer

## Why this matters

Sandbox is designed for testing, not data protection or storage of sensitive information. Using real data in Sandbox may result in:

- Data exposure in logs or debugging tools
- Unintended visibility to support or engineering teams
- Mixing of test and production data patterns
- Compliance and regulatory risk for your organization

## Key features

- **Full API parity:** Every route and data model behaves like production. Transactions hold state and follow the same flows you’ll see in live environments.
- **Safe testing:** Requests never reach banking or card networks, so no real money moves and no costs are incurred.
- **Data isolation:** Sandbox data does not transfer to production.
- **Persistent data:** Objects you create remain available across sessions, allowing end-to-end testing.
- **Simulations:** Use test helpers and special simulation endpoints to trigger specific responses or webhook events.

## Common use cases

- Explore new Cross River features without impacting your live integration.
- Error handling and edge cases using test numbers and triggers
- Verify webhook handling for different transaction statuses.
- Use the Simulation APIs to mimic card transactions, payment creation, or authorization scenarios.

## Additional information

- [Sandbox environments](docId\:YDqX1Hwsn_f6TZ4tdMY0t)&#x20;
- [Sandbox and production differences](docId\:nvmyp7ChkLj3_SxlC82Og)&#x20;


[title] Sandbox and production differences
[path] Quickstart/

## Differences between sandbox and production

The Sandbox environment uses test data and special endpoints designed for simulation.
&#x20;While it mirrors production behavior, there are several key differences to be aware of.&#x20;

| Function                                                                                                         | Sandbox | Production |
| ---------------------------------------------------------------------------------------------------------------- | ------- | ---------- |
| Uses standard product and program settings                                                                       | ✅       |            |
| Provides a test environment only, no real money movement occurs.                                                 | ✅       |            |
| Card interactions in Sandbox are fully simulated. No real card activity or payment processing occurs.            | ✅       |            |
| Can test simulation APIs (Cards and Wires also via [Postman](docId\:Fb95IuTT_D2JMljOJPHHb))                      | ✅       |            |
| Uses your configured product and program setup.                                                                  |         | ✅          |
| Enables real-world transactions, including ATM withdrawals, refunds, and ACH deposits.                           |         | ✅          |
| Operates on live customer data.                                                                                  |         | ✅          |
| Executes live transactions that move real funds.                                                                 |         | ✅          |
| Uses real cards. Virtual, physical, or both, to validate end-to-end transaction flows and common user scenarios. |         | ✅          |
| Transfer limits. by frequency or amount, may apply based on your program’s configuration and rules.              |         | ✅          |

Sandbox is a **non-production environment** and behaves differently from production systems in terms of data handling, stability, and security controls.&#x20;

Sandbox is intended to simulate behavior, not replicate production data scenario&#x73;**&#x20;using real data**.

**Always use test data in sandbox environments.**

## ⚠️ Important: Do not use real customer data

**Do not use real customer data in sandbox under any circumstances.&#x20;**

This includes:

- Personally Identifiable Information (PII)
- Names, email addresses, phone numbers
- Account numbers or financial identifiers
- Any data that belongs to a real individual or business
- Any data that could be traced back to a real customer

## Why this matters

Sandbox is designed for testing, not data protection or storage of sensitive information. Using real data in Sandbox may result in:

- Data exposure in logs or debugging tools
- Unintended visibility to support or engineering teams
- Mixing of test and production data patterns
- Compliance and regulatory risk for your organization

## Additional information

- [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
- [Sandbox environments](docId\:YDqX1Hwsn_f6TZ4tdMY0t)&#x20;

[title] Quickstart
[path] /

:::Iframe{iframeHeight="0" code="<div class=&#x22;stepper&#x22;>&#xA;  <a href=&#x22;/get-started/quickstart/get-api-credentials&#x22; class=&#x22;step active&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 1</div>&#xA;    <div class=&#x22;step-title&#x22;>Get API credentials</div>&#xA;  </a>&#xA;  <a href=&#x22;/get-started/quickstart/get-access-token&#x22; class=&#x22;step&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 2</div>&#xA;    <div class=&#x22;step-title&#x22;>Get Access Token</div>&#xA;  </a>&#xA;  <a href=&#x22;/get-started/quickstart/use-access-token&#x22; class=&#x22;step&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 3</div>&#xA;    <div class=&#x22;step-title&#x22;>Use Access Token</div>&#xA;  </a>&#xA;</div>"}

:::

***

[Get API credentials](docId\:Z-MVwOV-p00-xX082NabK): Your first step to working with Cross River APIs is to register for API credentials.&#x20;

[Get access token](docId\:kP_8xNEZDhnaTwYlGXt22): Once you've received your API credentials and before you can use our APIs, you must get an access token using the `client_id` and `client_secret` you received when you registered.

[Use access token](docId\:kc2TqgwGu54B4c5ZWpGMn): Once you've successfully authenticated, an `access_token` is returned to you. Include this token in the header of your API calls.

***

[Webhooks](docId\:dxhMTjduYWp5-pYQaJUdx): Webhooks are an important component of any integration with Cross River. While APIs let you request data on demand, webhooks push real-time updates directly to your system—eliminating the need for constant polling and reducing latency.

[Sandbox environments](docId\:YDqX1Hwsn_f6TZ4tdMY0t): The sandbox is a completely isolated environment, so feel free to experiment.&#x20;

[Postman collection](docId\:Fb95IuTT_D2JMljOJPHHb): To make development easier, we’ve put together a Postman collection with pre-built requests for all the Cross River API endpoints.

[title] Welcome
[path] /

:::Iframe{iframeHeight="0" code="<div class=&#x22;page-welcome-inner page-full-length&#x22;>&#xA;<div class=&#x22;banner&#x22;>&#xA;  <div class=&#x22;container&#x22;>&#xA;    <h1 class=&#x22;h1&#x22;>Welcome to Cross River<br />documentation​</h1>&#xA;    <div class=&#x22;banner-subtitle&#x22;>Discover, explore and start integrating our products with ease</div>&#xA;    <div class=&#x22;banner-btns&#x22;>&#xA;      <a href=&#x22;https://docs.crossriver.com/get-started/quickstart&#x22; class=&#x22;btn btn-primary&#x22;>Quickstart</a>&#xA;      <a href=&#x22;https://docs.crossriver.com/concepts&#x22; class=&#x22;btn btn-outline ml-3&#x22;>Explore all products</a>&#xA;    </div>&#xA;  </div>&#xA;</div><!-- banner -->&#xA;<div class=&#x22;cards-img cards-welcome&#x22;>&#xA;  <div class=&#x22;container cards-img-container&#x22;>&#xA;           <a><a href=&#x22;https://docs.crossriver.com/concepts&#x22; class=&#x22;cards-img-item card-solutions&#x22;>&#xA;      <div class=&#x22;cards-img-img&#x22;><img alt=&#x22;Cross River&#x22; src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/T90ICmx1YCYJIjyTDEBU3-aJmcdf1YqA_sV8HY18T0P-20250422-122314.png&#x22; /></div>&#xA;      <div class=&#x22;cards-img-txt&#x22;>&#xA;        <div class=&#x22;cards-img-title&#x22;>Concepts</div>&#xA;        <div class=&#x22;cards-img-desc&#x22;>Discover how Cross River solutions can transform your fintech journey</div>&#xA;      </div>&#xA;    </a><a href=&#x22;https://docs.crossriver.com/apis&#x22; class=&#x22;cards-img-item card-api&#x22;>&#xA;      <div class=&#x22;cards-img-img&#x22;><img alt=&#x22;Cross River&#x22; src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-n6jzKfKnP54QFbpPtyipJ-20250212-221053.png&#x22;/></div>&#xA;      <div class=&#x22;cards-img-txt&#x22;>&#xA;        <div class=&#x22;cards-img-title&#x22;>APIs</div>&#xA;        <div class=&#x22;cards-img-desc&#x22;>Develop using the Cross River banking platform and robust API sets</div>&#xA;      </div>&#xA;          </a><a href=&#x22;https://docs.crossriver.com/tutorials&#x22; class=&#x22;cards-img-item card-api&#x22;>&#xA;      <div class=&#x22;cards-img-img&#x22;><img alt=&#x22;Cross River&#x22; src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/T90ICmx1YCYJIjyTDEBU3-5acwcTxyuAbtB4yDrdgYF-20250422-122137.png&#x22;/></div>&#xA;      <div class=&#x22;cards-img-txt&#x22;>&#xA;        <div class=&#x22;cards-img-title&#x22;>Tutorials</div>&#xA;        <div class=&#x22;cards-img-desc&#x22;>Learn how to use Cross River APIs step by step</div>&#xA;      </div>&#xA;       <a href=&#x22;https://docs.crossriver.com/ops-and-admin&#x22; class=&#x22;cards-img-item card-discover&#x22;>&#xA;      <div class=&#x22;cards-img-img&#x22;><img alt=&#x22;Cross River&#x22; src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/pbkkEJvf4i0oUqOINB_wQ_ops-tile-light.png&#x22; /></div>&#xA;      <div class=&#x22;cards-img-txt&#x22;>&#xA;        <div class=&#x22;cards-img-title&#x22;>Ops and admin</div>&#xA;        <div class=&#x22;cards-img-desc&#x22;>Manage your platform with operational guides and reports.</div>&#xA;      </div>&#xA;      </a></div></div> "}

:::

:::::VerticalSplit{layout="middle"}
::::VerticalSplitItem
:::hint{type="success"}
<font color="#1296d9">**New/Updated content**</font>

[Connect via MCP server](docId\:UqbUGIJ4pdNHXSiPO-tdL) (new)

[Card payments](docId\:y_2uVmzGOChmtEPEO4IPy) (new)

[Accounts in COS Explorer](docId\:Gd5Lr5-2G8C1enoOEk5P3)  (new)
:::
::::

::::VerticalSplitItem
:::hint{type="info"}
<font color="#1296d9"></font>

[Payments APIs](docId:7Nr9dpvTEngbng2u4ys47)&#x20;

[Webhooks intro](docId\:ZW-MAsRoPivhvbu4juGkP)&#x20;

[Postman collection](docId\:Fb95IuTT_D2JMljOJPHHb)&#x20;
:::
::::
:::::


[title] Get access token
[path] Quickstart/

:::Iframe{iframeHeight="0" code="<div class=&#x22;stepper&#x22;>&#xA;  <a href=&#x22;/get-started/quickstart/get-api-credentials&#x22; class=&#x22;step&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 1</div>&#xA;    <div class=&#x22;step-title&#x22;>Get API credentials</div>&#xA;  </a>&#xA;  <a href=&#x22;/get-started/quickstart/get-access-token&#x22; class=&#x22;step active&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 2</div>&#xA;    <div class=&#x22;step-title&#x22;>Get Access Token</div>&#xA;  </a>&#xA;  <a href=&#x22;/get-started/quickstart/use-access-token&#x22; class=&#x22;step&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 3</div>&#xA;    <div class=&#x22;step-title&#x22;>Use Access Token</div>&#xA;  </a>&#xA;</div>"}

:::

***

## Token retrieval

Cross River uses OAuth 2.0 for authentication and authorization. This controls entry to our system and ensures that only authorized entities can access our APIs and other protected resources. The information you enter into our authentication system is confidential and can never be accessed from any other Cross River applications.

Once you've received your [API credentials](docId\:Z-MVwOV-p00-xX082NabK), and before you can use our APIs, you must get an access token using the `client_id` and `client_secret` you received when you registered. This access token allows you to send information securely as a JSON object for use in our APIs. You must include this token in the header of each API request.&#x20;

There are several ways to request and receive an access token:

- Use Command Line Interface (CLI) with cURL or any other language
- Use Postman or any other API testing tool

:::hint{type="info"}
Once obtained, copy the access token to your clipboard. Make sure you save it.
:::

## Command Line Interface

To request a token send a `POST connect/token` command containing the `client_id` and `client_secret` and `grant_type` to the [authentication server](docId\:kP_8xNEZDhnaTwYlGXt22) (auth server) of the appropriate sandbox, as shown in the sample below.&#x20;

Refer to the [HTTP components table](docId\:kP_8xNEZDhnaTwYlGXt22)  for an explanation of these tags.

The following example uses cURL to request a token from one of the auth servers.&#x20;

:::CodeblockTabs
Sample request in cURL for COS

```curl
curl --location --request POST 'https://idptest.crbcos.com/connect/token' \
 --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'client_id=[your id here]' \
 --data-urlencode 'client_secret=[your secret here]' \
 --data-urlencode 'grant_type=client_credentials' \
 --data-urlencode 'audience=https://api.crbcos.com/'
```
:::

:::CodeblockTabs
Sample response from cURL request

```curl
{ "access_token": "contains many characters", \
    "expires_in": 86400, \
    "token_type": "Bearer" }
```
:::

## Postman

To request a token using Postman, send a `POST connect/token` command to the [auth server](docId\:kP_8xNEZDhnaTwYlGXt22) of the appropriate sandbox. Add the `grant_type`, `scope (optional)`, `client_id` and `client_secret` to the call.&#x20;

Refer to the [HTTP components table](docId\:kP_8xNEZDhnaTwYlGXt22) for an explanation of these tags.

![](https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-hj3xIE3uswlpT1iyeFEPv-20250211-075754.png)

If the authentication is successful, the status code is 200 (OK).

![](https://archbee-image-uploads.s3.amazonaws.com/511c8QBH-VHiwWnyzIwUb/N4Jklg76LFqp7nwtIms8D_access-token-status-ok.png)

## Token request response

| Attribute      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `access_token` | A digitally signed JSON web token (JWT) sent from the oAuth server that allows access to specific Cross River resources                                                                                                                                                                                                                                                                                                                                                                        |
| `scope`        | A range of services that a user can access                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `expires_in`   | The amount of time until the token expires.<br />- Our Integration Team will inform you of the expiration time or you can decode your access token as well.<br />- We recommend that you retrieve a new access token a short time before the old token is set to expire.<br />- Reuse tokens for their entire lifespan rather than getting a new token for each call to the same protected resource (API).<br /><br />**IMPORTANT:**<br />Never decode your token on a publicly hosted website |
| `token-type`   | Bearer token                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

## HTTP components

The following HTTP components are used both in the API and Postman requests.

| HTTP component | Tag                        | Description                                                                                                                                                                                                                                                                                                                                                              |
| -------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Endpoint       | `POST /connect/token`      | Endpoint for retrieving an access token                                                                                                                                                                                                                                                                                                                                  |
| Header         | `content-type`             | `application/x-www-form- urlencoded`                                                                                                                                                                                                                                                                                                                                     |
| Body           | `client_id`                | The unique identifier for a client                                                                                                                                                                                                                                                                                                                                       |
| Body           | `client_secret`            | An encrypted string of characters used to sign and validate ID tokens.<br />**Important:&#x20;**&#x53;ecrets aren't recoverable by CR. If you lose a secret, a new one must be generated.<br />**Do not** commit your secrets into source control.                                                                                                                       |
| Body           | `grant_type`               | This field will always have a value of `client_credentials`                                                                                                                                                                                                                                                                                                              |
| Body           | `audience`<br />*optional* | A way for the user to validate if a particular access token is meant for them.                                                                                                                                                                                                                                                                                           |
| Body           | `scope`<br />*optional*    | A specific range or a limited set of services that a user can access with an access token.<br />If a scope isn't specified, the token returned will contain all scopes associated with your credentials.<br />**Note:** Multiple scopes can be sent in the same request by adding a space between the name of each scope.<br />For example: 'scope=scope1 scope2 scope3' |

***

## Auth server URLs

| Module           | Auth server URL                                                                        |
| ---------------- | -------------------------------------------------------------------------------------- |
| Accounts         | [https://idptest.crbcos.com/connect/token](https://idptest.crbcos.com/connect/token)   |
| ACH              | [https://idptest.crbcos.com/connect/token](https://idptest.crbcos.com/connect/token)   |
| Wires            | [https://idptest.crbcos.com/connect/token](https://idptest.crbcos.com/connect/token)   |
| Checks           | [https://idptest.crbcos.com/connect/token](https://idptest.crbcos.com/connect/token)   |
| Core             | [https://idptest.crbcos.com/connect/token](https://idptest.crbcos.com/connect/token)   |
| Instant payments | [https://idptest.crbcos.com/connect/token](https://idptest.crbcos.com/connect/token)   |
| Card issuing     | [https://idptest.crbcos.com/connect/token](https://idptest.crbcos.com/connect/token)   |
| Card payments    | [https://idptest.crbcos.com/connect/token](https://idptest.crbcos.com/connect/token)   |
| Lending          | [https://oauthtest.crbnj.net/connect/token](https://oauthtest.crbnj.net/connect/token) |

***

## Troubleshooting

If the authentication token is valid, it will return a 200. If the authentication token isn't valid, it will return a 401.

If you unable to get a bearer token and you haven't received one in the past:

- Confirm the URL.
- Check that the `client_id` and `client_secret` are typed correctly. They are case sensitive.
- Check your `client_id` and `client_secret` against the one you received.
- Make sure there are no network or allowlist issues.

Contact our [Integration Team](mailto\:Integrations.Support@crossriver.com) if your account is locked as a result of 3 incorrect log in attempts.

[title] Webhooks
[path] Quickstart/

Webhooks are an important component of any integration with Cross River. While APIs let you request data on demand, webhooks push real-time updates directly to your system eliminating the need for constant polling and reducing latency.  In many cases, webhooks are more efficient and reliable than APIs alone, ensuring your application stays in sync with critical events like account changes, transaction updates, and processing outcomes.&#x20;

A webhook is triggered when a specific event occurs, like a transaction posting, a payment settling, or an account status changing.

Once the registered event fires, a notification is sent to a partner’s designated callback URL, carrying JSON structured data that describes exactly what happened. This event-driven flow lets partners react in real time, update their internal systems, and automate follow-up actions without relying on constant polling or manual checks.

:::hint{type="warning"}
Use webhooks within the Cross River systems to notify you when different events occur. The event returns a resource object that contains relevant details about the subject of each event. The full event details are included and sent to your system.
:::

Webhooks report to your system with real-time notifications when an event happens.&#x20;

You must register via API to use webhooks:

- [Register for COS events](docId\:BN5XtgkJogBe-CtwomCbS)&#x20;
- [Register for Lending events](docId\:jXGfRbtNHOshrZJYHYKTo)


[title] Use access token
[path] Quickstart/

:::Iframe{iframeHeight="0" code="<div class=&#x22;stepper&#x22;>&#xA;  <a href=&#x22;/get-started/quickstart/get-api-credentials&#x22; class=&#x22;step&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 1</div>&#xA;    <div class=&#x22;step-title&#x22;>Get API credentials</div>&#xA;  </a>&#xA;  <a href=&#x22;/get-started/quickstart/get-access-token&#x22; class=&#x22;step&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 2</div>&#xA;    <div class=&#x22;step-title&#x22;>Get Access Token</div>&#xA;  </a>&#xA;  <a href=&#x22;/get-started/quickstart/use-access-token&#x22; class=&#x22;step active&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 3</div>&#xA;    <div class=&#x22;step-title&#x22;>Use Access Token</div>&#xA;  </a>&#xA;</div>"}

:::

***

## Token use

Once you've successfully [authenticated](docId\:kP_8xNEZDhnaTwYlGXt22), an `access_token` is returned to you. Include this token in the header of your API calls.

The access token expires after a set period of time. The response containing the token also specifies the expiration time in seconds. Store and use your access token until it expires. We recommend you use the token until you receive a 401 unauthorized error, and then request a new token.

:::hint{type="warning"}
**IMPORTANT**

1. Do not request a new token for every API request.
2. Make sure to protect your token. Anyone who steals your token can impersonate your client for the lifetime of the token.
:::

## API request header

In the header of each API request, include the access token as follows:

:::CodeblockTabs
Sample call for wire payment in cURL

```curl
curl --location --request 'POST https://sandbox.crbcos.com/Wires/v1/payments' \
--header 'Authorization: Bearer [YOUR TOKEN HERE]' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-raw '{
  "accountNumber": "2255685659",
  "businessFunctionCode": "CTR",
  "receiverRoutingNumber": "021000021",
  "beneficiaryFi": {
    "idCode": "F",
    "identifier": "021000021",
    "name": "JP Morgan Chase"
  },
  "beneficiary": {
    "idCode": "D",
    "identifier": "123456789",
    "name": "Peter Griffin"
  },
  "beneficiaryReference": "XYZ123",
  "amount": 10000,
  "purpose": "payment"
}'
```
:::

## Postman

To use a token in Postman, navigate to the **Authorization** tab in your request, select **Bearer Token** as the authentication type, and paste your token into the provided field. Postman will automatically add the **Bearer** prefix and the token to the **Token** field.

![](https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-tkX9OcfItT59xlrF2aWKz-20250311-102417.png)


[title] Postman collection
[path] Quickstart/

## Cross River Postman collection

To make development easier, we’ve put together a [Postman collection](https://www.postman.com/cross-river/cross-river-apis/overview) with pre-built requests for all the Cross River [API endpoints](docId\:sfnHqbapK4Sg6QBZw9P8y). Use this collection to explore, test, and build your integration directly in Postman with minimal extra coding and setup required.To immediately fork our collection, click

:::Iframe{iframeHeight="0" code="<div class=&#x22;postman-run-button&#x22;&#xA;data-postman-action=&#x22;collection/fork&#x22;&#xA;data-postman-visibility=&#x22;public&#x22;&#xA;data-postman-var-1=&#x22;47019181-21421164-5987-44e5-b242-84890920c4a0&#x22;&#xA;data-postman-collection-url=&#x22;entityId=47019181-21421164-5987-44e5-b242-84890920c4a0&entityType=collection&workspaceId=31a0ddbd-695b-483b-869b-211c7ed79cf3&#x22;&#xA;data-postman-param=&#x22;env%5BCross%20River%20Sandbox%5D=W3sia2V5IjoiY2xpZW50X2lkIiwidmFsdWUiOiJZb3VyIGNsaWVudCBpZCBoZXJlIiwiZW5hYmxlZCI6dHJ1ZSwidHlwZSI6InNlY3JldCIsInNlc3Npb25WYWx1ZSI6IllvdXIgY2xpZW50IGlkIGhlcmUiLCJjb21wbGV0ZVNlc3Npb25WYWx1ZSI6IllvdXIgY2xpZW50IGlkIGhlcmUiLCJzZXNzaW9uSW5kZXgiOjB9LHsia2V5IjoiY2xpZW50X3NlY3JldCIsInZhbHVlIjoiWW91IGNsaWVudCBzZWNyZXQgaGVyZSIsImVuYWJsZWQiOnRydWUsInR5cGUiOiJzZWNyZXQiLCJzZXNzaW9uVmFsdWUiOiJZb3UgY2xpZW50IHNlY3JldCBoZXJlIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiJZb3UgY2xpZW50IHNlY3JldCBoZXJlIiwic2Vzc2lvbkluZGV4IjoxfSx7ImtleSI6InRva2VuIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlLCJ0eXBlIjoiYW55Iiwic2Vzc2lvblZhbHVlIjoiIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiIiLCJzZXNzaW9uSW5kZXgiOjJ9LHsia2V5IjoicGFydG5lcl9pZCIsInZhbHVlIjoiWW91ciBwYXJ0bmVyIGlkIGhlcmUiLCJlbmFibGVkIjp0cnVlLCJ0eXBlIjoiZGVmYXVsdCIsInNlc3Npb25WYWx1ZSI6IllvdXIgcGFydG5lciBpZCBoZXJlIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiJZb3VyIHBhcnRuZXIgaWQgaGVyZSIsInNlc3Npb25JbmRleCI6M30seyJrZXkiOiJwcm9kdWN0X2lkIiwidmFsdWUiOiJZb3VyIHByb2R1Y3QgaWQgaGVyZSIsImVuYWJsZWQiOnRydWUsInR5cGUiOiJkZWZhdWx0Iiwic2Vzc2lvblZhbHVlIjoiWW91ciBwcm9kdWN0IGlkIGhlcmUiLCJjb21wbGV0ZVNlc3Npb25WYWx1ZSI6IllvdXIgcHJvZHVjdCBpZCBoZXJlIiwic2Vzc2lvbkluZGV4Ijo0fSx7ImtleSI6ImNvbmZpZ3VyYXRpb25faWQiLCJ2YWx1ZSI6IllvdXIgY29uZmlndXJhdGlvbiBpZCBoZXJlIiwiZW5hYmxlZCI6dHJ1ZSwidHlwZSI6ImRlZmF1bHQiLCJzZXNzaW9uVmFsdWUiOiJZb3VyIGNvbmZpZ3VyYXRpb24gaWQgaGVyZSIsImNvbXBsZXRlU2Vzc2lvblZhbHVlIjoiWW91ciBjb25maWd1cmF0aW9uIGlkIGhlcmUiLCJzZXNzaW9uSW5kZXgiOjV9LHsia2V5IjoiY2FsbGJhY2tfdXJsIiwidmFsdWUiOiJZb3VyIGNhbGxiYWNrIFVSTCBoZXJlIiwiZW5hYmxlZCI6dHJ1ZSwidHlwZSI6ImRlZmF1bHQiLCJzZXNzaW9uVmFsdWUiOiJZb3VyIGNhbGxiYWNrIFVSTCBoZXJlIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiJZb3VyIGNhbGxiYWNrIFVSTCBoZXJlIiwic2Vzc2lvbkluZGV4Ijo2fSx7ImtleSI6InB0cGVfdG9rZW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWUsInR5cGUiOiJkZWZhdWx0Iiwic2Vzc2lvblZhbHVlIjoiIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiIiLCJzZXNzaW9uSW5kZXgiOjd9LHsia2V5IjoiYWNjb3VudF9udW1iZXIiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWUsInR5cGUiOiJkZWZhdWx0Iiwic2Vzc2lvblZhbHVlIjoiIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiIiLCJzZXNzaW9uSW5kZXgiOjh9LHsia2V5Ijoic3NuIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlLCJ0eXBlIjoiZGVmYXVsdCIsInNlc3Npb25WYWx1ZSI6IiIsImNvbXBsZXRlU2Vzc2lvblZhbHVlIjoiIiwic2Vzc2lvbkluZGV4Ijo5fSx7ImtleSI6InBheW1lbnRfaWQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWUsInR5cGUiOiJkZWZhdWx0Iiwic2Vzc2lvblZhbHVlIjoiIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiIiLCJzZXNzaW9uSW5kZXgiOjEwfSx7ImtleSI6ImN1c3RvbWVyX2lkX2J1c2luZXNzIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlLCJ0eXBlIjoiZGVmYXVsdCIsInNlc3Npb25WYWx1ZSI6IiIsImNvbXBsZXRlU2Vzc2lvblZhbHVlIjoiIiwic2Vzc2lvbkluZGV4IjoxMX0seyJrZXkiOiJjdXN0b21lcl9pZCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZSwidHlwZSI6ImRlZmF1bHQiLCJzZXNzaW9uVmFsdWUiOiIiLCJjb21wbGV0ZVNlc3Npb25WYWx1ZSI6IiIsInNlc3Npb25JbmRleCI6MTJ9LHsia2V5IjoiY2FyZFRva2VuIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlLCJ0eXBlIjoiZGVmYXVsdCIsInNlc3Npb25WYWx1ZSI6IiIsImNvbXBsZXRlU2Vzc2lvblZhbHVlIjoiIiwic2Vzc2lvbkluZGV4IjoxM30seyJrZXkiOiJNQ19jYXJkVG9rZW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWUsInR5cGUiOiJkZWZhdWx0Iiwic2Vzc2lvblZhbHVlIjoiIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiIiLCJzZXNzaW9uSW5kZXgiOjE0fSx7ImtleSI6InJlZ2lzdHJhdGlvbl9pZCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZSwidHlwZSI6ImRlZmF1bHQiLCJzZXNzaW9uVmFsdWUiOiIiLCJjb21wbGV0ZVNlc3Npb25WYWx1ZSI6IiIsInNlc3Npb25JbmRleCI6MTV9LHsia2V5IjoiUFRQRV9jbGllbnRfaWQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWUsInR5cGUiOiJhbnkiLCJzZXNzaW9uVmFsdWUiOiIiLCJjb21wbGV0ZVNlc3Npb25WYWx1ZSI6IiIsInNlc3Npb25JbmRleCI6MTZ9LHsia2V5IjoiUFRQRV9jbGllbnRfc2VjcmV0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlLCJ0eXBlIjoiYW55Iiwic2Vzc2lvblZhbHVlIjoiIiwiY29tcGxldGVTZXNzaW9uVmFsdWUiOiIiLCJzZXNzaW9uSW5kZXgiOjE3fSx7ImtleSI6InJlcXVlc3RJZCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZSwidHlwZSI6ImFueSIsInNlc3Npb25WYWx1ZSI6IiIsImNvbXBsZXRlU2Vzc2lvblZhbHVlIjoiIiwic2Vzc2lvbkluZGV4IjoxOH0seyJrZXkiOiJhbW91bnQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWUsInR5cGUiOiJhbnkiLCJzZXNzaW9uVmFsdWUiOiIiLCJjb21wbGV0ZVNlc3Npb25WYWx1ZSI6IiIsInNlc3Npb25JbmRleCI6MTl9LHsia2V5Ijoic291cmNlU2VuZGVyTmFtZSIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZSwidHlwZSI6ImFueSIsInNlc3Npb25WYWx1ZSI6IiIsImNvbXBsZXRlU2Vzc2lvblZhbHVlIjoiIiwic2Vzc2lvbkluZGV4IjoyMH1d&#x22;></div>&#xA;<script type=&#x22;text/javascript&#x22;>&#xA;  (function (p,o,s,t,m,a,n) {&#xA;    !p[s] && (p[s] = function () { (p[t] || (p[t] = [])).push(arguments); });&#xA;    !o.getElementById(s+t) && o.getElementsByTagName(&#x22;head&#x22;)[0].appendChild((&#xA;      (n = o.createElement(&#x22;script&#x22;)),&#xA;      (n.id = s+t), (n.async = 1), (n.src = m), n&#xA;    ));&#xA;  }(window, document, &#x22;_pm&#x22;, &#x22;PostmanRunObject&#x22;, &#x22;https://run.pstmn.io/button.js&#x22;));&#xA;</script>"}

:::

Just complete the [Postman collection](docId\:Fb95IuTT_D2JMljOJPHHb) setup details, and start making calls in Sandbox through [Postman](https://www.postman.com/downloads/).&#x20;

## Access (bearer) token

We've created our Postman developer sandbox environment to provide a safe space to test the Cross River APIs. In the Cross River Postman collection, you perform authentication using a bearer token.&#x20;

To get the IDs you need to set up the access (bearer) token required to run the collection:

1. [Get API credentials](docId\:Z-MVwOV-p00-xX082NabK): With these credentials you request and receive an access token to use for sending APIs in our sandbox environment
2. [Get access token](docId\:kP_8xNEZDhnaTwYlGXt22): Once you receive your API credentials and before you can use our APIs, you get an access token using the `client_id` and `client_secret` you received when you registered.&#x20;

## Fork Cross River collection

Head straight to our [Postman workspace](https://www.postman.com/cross-river/cross-river-apis/overview) to fork our collection.&#x20;

:::hint{type="warning"}
Once forked, don’t forget to set your environment variables for sandbox.
:::

## Configure your Postman environment

To use the collection you just created, navigate to it, click **Environments,** and select **Sandbox**. Copy your Cross River client ID and client secret, and paste them into the `client_Id` and `client_secret` fields.   For Card Payments, paste them into the `ptpe_client_id` and `ptpe_client_secret` fields. &#x20;

Now you’re ready obtain a token and begin to send requests.&#x20;

1. Run `Authorization/Obtain token` to generate your token. For Card Payments, run `Card Payments/Authorization/Get P2PE token`.
2. The variable `{{token}}` (or `ptpe_token` for Card Payments) is added automatically to your environment by a post reponse script.  When the token expires you need to follow step 1 again.
3. There are several variables that you might need to populate depending on which endpoint you're exercising.  For example, `partner_id`, `product_id`, `configuration_id `and `callback_url`.
4. There are also some variables that are populated through scripts, such as `token` and `ptpe_token` that should not be populated manually.

## Ping the sandbox

Run a simple test to verify that you can connect to the Cross River sandbox.

To send a Ping request, in Postman open *Collections > Cross River API Collection > Authorization* and run the **Ping** endpoint.

## Modify requests

To update a request, make your changes on the **Body** tab. Values in double curly brackets pull from your environment variables. Check our [API docs](docId\:sfnHqbapK4Sg6QBZw9P8y) to see which fields each endpoint accepts, and view requests in your preferred language.

[title] Connect to Cross River docs via MCP
[path] Quickstart/

Ask your AI assistant questions about our APIs, and it answers directly from our documentation. No more searching through pages or switching tabs—your AI reads the same docs you do and gives you accurate answers about endpoints, flows, and schemas.

## Why this matters

Instead of clicking through documentation pages to find what you need, just ask your AI assistant. It's already connected to our docs.

Want to know which fields are required for a payment? Ask. Need an example request? Ask. Wondering why a transaction failed? Ask.

You get answers from the actual documentation, not AI guesses. And you get them faster.

## How it works

Our documentation uses a Model Context Protocol (MCP) server. AI tools like Claude and Cursor connect to it and read our API docs directly.

Once you connect, your AI assistant can search our documentation, pull specific pages, and answer questions using the actual content.

## Our connection information

Add this configuration to your AI tool's settings. This setup is read-only: it reads our published documentation and requires no API key.

**Example for Claude Code:**

:::CodeblockTabs
Claude Code MCP config

```json
  "mcpServers": {
    "archbee": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@archbee/mcp"],
      "env": {
        "API_BASE": "https://docs.crossriver.com"
      }
    }
  }
 
```
:::

Restart your AI tool and start asking questions about our APIs.

## What you can do

- `search_title` - Search docs by title
- `search_query` - Full-text search across all docs
- `get_all_docs` - List all documents
- `get_doc` - Fetch full content of a specific doc by ID

## Example questions&#x20;

- Show me a complete request and response example for POST /payments
- Why would a payment return a declined status?
- What fields are required to onboard a customer?
- Show me an example request for POST /customers including address and contact info
- What errors can occur when creating a customer?

## Keep in mind

Your AI reads our documentation but can't make API calls or access your account. This configuration is read-only and uses no API key—it only reads our published documentation, the same content available at docs.crossriver.com.

[title] Get API credentials
[path] Quickstart/

:::Iframe{iframeHeight="0" code="<div class=&#x22;stepper&#x22;>&#xA;  <a href=&#x22;/get-started/quickstart/get-api-credentials&#x22; class=&#x22;step active&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 1</div>&#xA;    <div class=&#x22;step-title&#x22;>Get API credentials</div>&#xA;  </a>&#xA;  <a href=&#x22;/get-started/quickstart/get-access-token&#x22; class=&#x22;step&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 2</div>&#xA;    <div class=&#x22;step-title&#x22;>Get Access Token</div>&#xA;  </a>&#xA;  <a href=&#x22;/get-started/quickstart/use-access-token&#x22; class=&#x22;step&#x22;>&#xA;    <div class=&#x22;step-check&#x22;>&#xA;      <div class=&#x22;step-disc&#x22;></div>&#xA;      <div class=&#x22;step-disc-active&#x22;></div>&#xA;    </div>&#xA;    <div class=&#x22;step-num&#x22;>Step 3</div>&#xA;    <div class=&#x22;step-title&#x22;>Use Access Token</div>&#xA;  </a>&#xA;</div>"}

:::

***

## API access setup

Your first step to working with Cross River APIs is to request API credentials. With these credentials you can request and receive an access token to use for sending APIs in our sandbox environment.

Sandbox is a **non-production environment** and behaves differently from production systems in terms of data handling, stability, and security controls.&#x20;

Sandbox is intended to simulate behavior, not replicate production data scenario&#x73;**&#x20;using real data**.

**Always use test data in sandbox environments.**

## ⚠️ Important: Do not use real customer data

**Do not use real customer data in sandbox under any circumstances.&#x20;**

This includes:

- Personally Identifiable Information (PII)
- Names, email addresses, phone numbers
- Account numbers or financial identifiers
- Any data that belongs to a real individual or business
- Any data that could be traced back to a real customer

## Why this matters

Sandbox is designed for testing, not data protection or storage of sensitive information. Using real data in Sandbox may result in:

- Data exposure in logs or debugging tools
- Unintended visibility to support or engineering teams
- Mixing of test and production data patterns
- Compliance and regulatory risk for your organization

:::hint{type="warning"}
**IMPORTANT**
Your IP address, which must be public and static, has to be on our allowlist. Your internal IT department should be able to provide you with this IP.  Learn more about [static IPs](docId\:z3wbkvnCkkie3kEJtxLI9).
:::

## Sandbox access

To get API credentials, [submit a request](https://crossriver.service-now.com/csm?id=cos_sandbox_request_form\&sys_id=713de878c300b5105d3eafdc7a013184\&sysparm_category=df09f2623310c2906b697d934d5c7b4a). You will complete a form that includes providing a static IP.

Once your static IP is added to our allowlist, we send you 2 encrypted emails with your credentials:&#x20;

- One email contains your `client_id`, `partner_id` and other information you'll need depending on what you have requested.&#x20;
- The second email, which is encrypted, contains your `client_secret` and `webhook_secret`. You'll need these for authentication and for working in the sandbox.&#x20;


[title] Sandbox environments
[path] Quickstart/

## Sandbox

Our sandbox is a completely isolated environment, so feel free to experiment. When you're ready to move to production, let us know and we will get you production credentials to access the live environment.

## Customer management

| Module              | Base URL for API calls            |
| ------------------- | --------------------------------- |
| Customer management | https\://sandbox.crbcos.com/core/ |

## Accounts

| Module           | Base URL for API calls                     |
| ---------------- | ------------------------------------------ |
| Deposit accounts | https\://sandbox.crbcos.com/core/          |
| Deposit sweeps   | https\://sandbox.crbcos.com/sweepsintrafi/ |

## Cards

| Module | Base URL for API calls                      |
| ------ | ------------------------------------------- |
| Cards  | https\://sandbox.crbcos.com/cardmanagement/ |

## Payments

| Module                 | Base URL for API calls                     |
| ---------------------- | ------------------------------------------ |
| Instant Payments       | https\://sandbox.crbcos.com/rtp/           |
| Card Payments          | https\://sandbox.crbcos.com/cardpayments   |
| International Payments | https\://sandbox.crbcos.com/international/ |
| ACH                    | https\://sandbox.crbcos.com/ach/           |
| Wires                  | https\://sandbox.crbcos.com/wires/         |
| Checks                 | https\://sandbox.crbcos.com/checks/        |

## COS webhooks

| Module       | Base URL for API calls                |
| ------------ | ------------------------------------- |
| COS webhooks | https\://sandbox.crbcos.com/webhooks/ |

## Lending

| Module                  | Base URL for API calls                            |
| ----------------------- | ------------------------------------------------- |
| Loan origination        | https\://arixapisandbox.crbnj.net                 |
| Application Decisioning | https\://lendingsandbox.crbcos.com/preapproval/v1 |

## Additional information

- [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
- [Sandbox and production differences](docId\:nvmyp7ChkLj3_SxlC82Og)&#x20;

[space] APIs (/apis)

[title] Registered
[path] Webhooks intro/COS webhooks/Webhook management: COS/

:::ApiMethodV2
```json
{
  "name": "Endpoint: /webhooks/v1/registrations",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/webhooks/v1/registrations",
  "description": "Returns a list of all webhook registrations by event delivery or by polling the system.\n",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "9_iYEGQQXTu50CXTRWYjO",
        "language": "curl",
        "code": "curl \n--location 'https://sandbox.crbcos.com/webhooks/v1/registrations?partnerId=19222b81-0e1e-452d-a842-b2f1011c16f3&CallbackUrl=https%3A%2F%2Fwebhook.site%2F27b9814b-16eb-4099-9999-32594aee5e04'",
        "customLabel": ""
      },
      {
        "id": "yuNrDEjpVBKHXwTnCvGEk",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/webhooks/v1/registrations?partnerId=19222b81-0e1e-452d-a842-b2f1011c16f3&CallbackUrl=https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "D69aLwgaohnGTZwFEJ7F9",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/webhooks/v1/registrations?partnerId=19222b81-0e1e-452d-a842-b2f1011c16f3&CallbackUrl=https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\"\n\npayload = {}\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "VhcjsRvCzWybM3gAp5QFw",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/webhooks/v1/registrations?partnerId=19222b81-0e1e-452d-a842-b2f1011c16f3&CallbackUrl=https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "tsINNz_oMAXGioDvfS9uI",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/webhooks/v1/registrations?partnerId=19222b81-0e1e-452d-a842-b2f1011c16f3&CallbackUrl=https%3A%2F%2Fwebhook.site%2F27b9814b-16eb-4099-9999-32594aee5e04\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "9_iYEGQQXTu50CXTRWYjO"
  },
  "results": {
    "languages": [
      {
        "id": "ItEO4EwgHbz1SOZOPg00G",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"d0dc5a57-ce2a-40d8-b7c4-b306003dd243\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"eventName\": \"ACH.Batch.Imported\",\n            \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\",\n            \"consecutiveErrors\": 0,\n            \"status\": \"Active\",\n            \"type\": \"Push\",\n            \"format\": \"Basic\"\n        },\n        {\n            \"id\": \"8be90643-86a5-4be4-9520-b30500f8d961\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"eventName\": \"Cards.Card.Created\",\n            \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\",\n            \"consecutiveErrors\": 0,\n            \"status\": \"Active\",\n            \"type\": \"Push\",\n            \"format\": \"Extended\"\n        },\n        {\n            \"id\": \"3a1d97dc-03a8-4858-851a-b306003f9357\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"eventName\": \"Core.Customer.Name.Changed\",\n            \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\",\n            \"consecutiveErrors\": 0,\n            \"status\": \"Active\",\n            \"type\": \"Push\",\n            \"format\": \"Extended\"\n        },\n        {\n            \"id\": \"c65b55f1-bbe5-4dc3-b952-b30500f3570a\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"eventName\": \"Core.Customer.Onboarded\",\n            \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\",\n            \"consecutiveErrors\": 0,\n            \"status\": \"Active\",\n            \"type\": \"Push\",\n            \"format\": \"Extended\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 4,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": false\n}"
      }
    ],
    "selectedLanguageId": "ItEO4EwgHbz1SOZOPg00G"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "partnerId",
        "kind": "required",
        "type": "string",
        "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
        "": "Your unique ID in the Cross River system. This ID is in GUID format."
      },
      {
        "name": "eventName",
        "kind": "optional",
        "type": "string",
        "description": "Webhook event being reported",
        "children": []
      },
      {
        "name": "callbackUrl",
        "kind": "required",
        "type": "string",
        "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required.",
        "": "required"
      },
      {
        "name": "pageNumber",
        "kind": "optional",
        "type": "Integer",
        "description": "Current page number determined by the total number of records and the number of records per page",
        "children": []
      },
      {
        "name": "pageSize",
        "kind": "optional",
        "type": "Integer",
        "description": "Number of records to list on a page. Maximum is 50.",
        "children": []
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format."
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "eventName",
      "kind": "optional",
      "type": "string",
      "description": "Webhook event being reported",
      "children": []
    },
    {
      "name": "callbackUrl",
      "kind": "optional",
      "type": "string",
      "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required.",
      "children": []
    },
    {
      "name": "authUsername",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication username to include in header of event",
      "children": []
    },
    {
      "name": "authPassword",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication password to include in event header",
      "children": []
    },
    {
      "name": "consecutiveErrors",
      "kind": "optional",
      "type": "Integer",
      "description": "The number of consecutive errors",
      "children": []
    },
    {
      "name": "lastError",
      "kind": "optional",
      "type": "string",
      "description": "Description of the last error",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of registration:\n- Active\n- Suspended\n- Restarting",
      "children": []
    },
    {
      "name": "type",
      "kind": "optional",
      "type": "string",
      "description": "Type of registration:\n- Push\n- Poll\n- File",
      "children": []
    },
    {
      "name": "format",
      "kind": "optional",
      "type": "string",
      "description": "Event format:\n- Basic\n- Extended",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-webhooksv1registrations",
  "legacyHash": "wc2aKKCqid4nPvAdRZNx3"
}
```
:::


[title] HTTP status codes
[path] API Basics/

This page explains the HTTP status codes returned by Cross River APIs and provides guidance on how to handle each status code, including when and how to retry requests using idempotency keys.

## Status Codes Reference

| Code | Status                     | Explanation                                                                                                                                                                                                 | Recovery                                                                                              |
| ---- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| 200  | OK                         | The request has succeeded.                                                                                                                                                                                  | N/A                                                                                                   |
| 400  | Bad request                | **The request was not processed** due to something the server considers to be a client error. Typically due to malformed request syntax, invalid request message framing, or deceptive request routing.     | Fix the request and retry using the same idempotency key.                                             |
| 401  | Unauthorized               | **The request was not processed** because it lacks valid authentication credentials (API key) for the requested resource.                                                                                   | Obtain a new token and retry using the same idempotency key.                                          |
| 403  | Forbidden                  | **The request was not processed** because API key doesn't have permission to perform the request.                                                                                                           | If your permissions are updated then retry using the same idempotency key.                            |
| 404  | Not found                  | **The request was not processed&#x20;**&#x62;ecause the server cannot find the requested resource. Common causes of 404 responses are mistyped URLs or pages that are moved or deleted without redirection. | Fix the request and retry using the same idempotency key.                                             |
| 408  | Request timeout            | **The request was not processed** because we were unable to respond before your server closed its connection. We recommend keeping connections open for at least 30 seconds.                                | Retry using the same idempotency key.                                                                 |
| 409  | Conflict                   | The request conflicts with another request (perhaps due to using the same idempotent key).                                                                                                                  | Retry using the same idempotency key. See [handling a cached response](docId\:O5LkHHUbBs7rmu7PXVSjP). |
| 424  | External dependency failed | **The request was not processed** due to a failure in a dependency external to Cross River.                                                                                                                 | Fix root cause and retry using the same idempotency key.                                              |
| 429  | Too many requests          | **The request was not processed** because your client has sent too many requests in a given amount of time. Slow down the rate of requests.                                                                 | Retry using the same idempotency key.                                                                 |
| 5xx  | Server errors              | Something went wrong on Cross River's end.                                                                                                                                                                  | Retry using the same idempotency key. See [handling cached responses](docId\:O5LkHHUbBs7rmu7PXVSjP).  |

## Handling Cached Responses

The `clientIdentifier` parameter allows you to determine the outcome of a request when a cached response is received and we recommend its use within your POST requests. This provides the ability to confirm the outcome of a request when used as a filter with our search endpoints.

**Example:** A POST request was made to `/ach/v1/payments` which resulted in a 500 HTTP response. The request was then retried using the same idempotency key and request body which resulted in a cached response.

The next step would be to send a GET request to `/ach/v1/payments` (for example) while using `clientIdentifier` as a filter:

```javascript
https://sandbox.crbcos.com/ach/v1/payments?ClientIdentifier=45654ac5-8385-4a1c-8154-b441006ab7b9
```

If the response returns a record then that means the original request was successful. Otherwise, if no record is returned then it is safe to retry the request using a new idempotency key.

## Key Principles

### Idempotency Keys

Use the same idempotency key as the original request when retrying failures. This ensures you receive a cached response if the original request was processed, allowing you to prevent duplicate operations.

### When Cached Responses Occur

In certain scenarios involving **409 Conflict** and **5xx Server errors**, you may receive a cached response:

- **409 Conflict**: The response may indicate a conflict with a previous request using the same idempotency key. The conflict might be due to:
  - A retry of a previously successful request (you'll receive the cached response)
  - A genuinely conflicting request (e.g., attempting to create a resource that already exists)
- **5xx Server errors**: In rare cases, a server error might occur after your request was processed but before the response was sent. When you retry with the same idempotency key:
  - If the original request was processed, you'll receive a cached response with the result
  - If the original request was not processed, the retry will process your request


[title] Add address
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.Customer.Address.Added](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;

## API reference

Adds an address to the customer record.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{customerId}/addresses",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/addresses",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "xK0mDfrnuxTC3HLNjR8-M",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/cm/customers//addresses' \\\n--data '{\n  \"addressType\": \"Work\",\n  \"classification\": \"Business\",\n  \"isPrimary\": true,\n  \"street1\": \"400 Kelby St\",\n  \"city\": \"Fort Lee\",\n  \"state\": \"NJ\",\n  \"postalCode\": \"07024\",\n  \"countryCode\": \"US\"\n}\n'",
        "customLabel": ""
      },
      {
        "id": "mqR1ym4lW48Uw_qQhCefc",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers//addresses',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"addressType\\\": \\\"Work\\\",\\r\\n  \\\"classification\\\": \\\"Business\\\",\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"street1\\\": \\\"400 Kelby St\\\",\\r\\n  \\\"city\\\": \\\"Fort Lee\\\",\\r\\n  \\\"state\\\": \\\"NJ\\\",\\r\\n  \\\"postalCode\\\": \\\"07024\\\",\\r\\n  \\\"countryCode\\\": \\\"US\\\"\\r\\n}\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "uEPLZetxZG8L_9oLKmDDa",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/core/v1/cm/customers//addresses\"\n\npayload = \"{\\r\\n  \\\"addressType\\\": \\\"Work\\\",\\r\\n  \\\"classification\\\": \\\"Business\\\",\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"street1\\\": \\\"400 Kelby St\\\",\\r\\n  \\\"city\\\": \\\"Fort Lee\\\",\\r\\n  \\\"state\\\": \\\"NJ\\\",\\r\\n  \\\"postalCode\\\": \\\"07024\\\",\\r\\n  \\\"countryCode\\\": \\\"US\\\"\\r\\n}\\r\\n\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Bpo9I1p6RWJnvUSDPrAV2",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers//addresses\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"addressType\\\": \\\"Work\\\",\\r\\n  \\\"classification\\\": \\\"Business\\\",\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"street1\\\": \\\"400 Kelby St\\\",\\r\\n  \\\"city\\\": \\\"Fort Lee\\\",\\r\\n  \\\"state\\\": \\\"NJ\\\",\\r\\n  \\\"postalCode\\\": \\\"07024\\\",\\r\\n  \\\"countryCode\\\": \\\"US\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "hMtrMy6biJOT2EBIK9Q9G",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers//addresses\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"addressType\": \"Work\",`+\"\n\"+`\n  \"classification\": \"Business\",`+\"\n\"+`\n  \"isPrimary\": true,`+\"\n\"+`\n  \"street1\": \"400 Kelby St\",`+\"\n\"+`\n  \"city\": \"Fort Lee\",`+\"\n\"+`\n  \"state\": \"NJ\",`+\"\n\"+`\n  \"postalCode\": \"07024\",`+\"\n\"+`\n  \"countryCode\": \"US\"`+\"\n\"+`\n}`+\"\n\"+``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xK0mDfrnuxTC3HLNjR8-M"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "code": "{\n    \"id\": \"23718022-262b-48c3-9fcd-b30000955c65\",\n    \"customerId\": \"bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887\",\n    \"isPrimary\": true,\n    \"status\": \"Active\",\n    \"classification\": \"Business\",\n    \"addressType\": \"Work\",\n    \"street1\": \"400 Kelby St\",\n    \"city\": \"Fort Lee\",\n    \"state\": \"NJ\",\n    \"postalCode\": \"07024\",\n    \"countryCode\": \"US\",\n    \"createdAt\": \"2025-06-18T05:03:48.3893582-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T05:03:48.3893582-04:00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\"\n}",
        "customLabel": ""
      },
      {
        "id": "qIx4Pk0iciJXvS-SeOD_a",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2232,\n            \"message\": \"Address already exists\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zuoamZSUzJOVAnQseRBuz"
  },
  "request": {
    "pathParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The customer ID of the customer record to update",
        "": "The customer ID of the customer record to update"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "addressType",
        "kind": "required",
        "type": "string",
        "description": "What this is the address of:\n- Home\n- Work\n- Other",
        "": "What this is the address of:\n- Home\n- Work\n- Other"
      },
      {
        "name": "classification",
        "kind": "required",
        "type": "string",
        "description": "What kind of address this is:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other",
        "": "What kind of address this is:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other"
      },
      {
        "name": "isPrimary",
        "kind": "required",
        "type": "boolean",
        "description": "True if this is the primary address record for this customer. Otherwise, false.",
        "": "required"
      },
      {
        "name": "street1",
        "kind": "required",
        "type": "string",
        "description": "Primary location details of customer, for instance, street name, house/building number,  or PO box. 255 character maximum.",
        "": "Primary location details of customer, for instance, street name, house/building number,  or PO box. 255 character maximum."
      },
      {
        "name": "street2",
        "kind": "optional",
        "type": "string",
        "description": "Additional address information. 255 character maximum.",
        "": "Additional address information. 255 character maximum."
      },
      {
        "name": "street3",
        "kind": "optional",
        "type": "string",
        "description": "Additional address information. 255 character maximum.",
        "": "Additional address information. 255 character maximum."
      },
      {
        "name": "city",
        "kind": "optional",
        "type": "string",
        "description": "City full name. 50 character maximum",
        "": "City full name. 50 character maximum"
      },
      {
        "name": "state",
        "kind": "optional",
        "type": "string",
        "description": "2-letter abbreviation for the state",
        "": "2-letter abbreviation for the state"
      },
      {
        "name": "postalCode",
        "kind": "optional",
        "type": "string",
        "description": "Postal code, also known as ZIP code. 10 character maximum.",
        "": "Postal code, also known as ZIP code. 10 character maximum."
      },
      {
        "name": "countryCode",
        "kind": "required",
        "type": "string",
        "description": "2-letter ISO country code",
        "": "required"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "COS ID for the record, in GUID format"
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The customerId of the customer record being updated",
      "children": []
    },
    {
      "name": "isPrimary",
      "kind": "optional",
      "type": "boolean",
      "description": "True if this is the primary address record for this customer. Otherwise, false.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the customer record:\n- Inactive\n- Active",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "The kind of address added to the record:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other",
      "children": []
    },
    {
      "name": "addressType",
      "kind": "optional",
      "type": "string",
      "description": "What this is the address of:\n- Home\n- Work\n- Other",
      "children": []
    },
    {
      "name": "street1",
      "kind": "optional",
      "type": "string",
      "description": "Primary location details of customer, for instance, street name, house/building number, or PO box",
      "children": []
    },
    {
      "name": "street2",
      "kind": "optional",
      "type": "string",
      "description": "Additional address information",
      "children": []
    },
    {
      "name": "street3",
      "kind": "optional",
      "type": "string",
      "description": "Additional address information",
      "children": []
    },
    {
      "name": "city",
      "kind": "optional",
      "type": "string",
      "description": "City full name",
      "children": []
    },
    {
      "name": "state",
      "kind": "optional",
      "type": "string",
      "description": "2-letter abbreviation for the state",
      "children": []
    },
    {
      "name": "postalCode",
      "kind": "optional",
      "type": "string",
      "description": "Postal code, also known as ZIP code",
      "children": []
    },
    {
      "name": "countryCode",
      "kind": "optional",
      "type": "string",
      "description": "2-letter ISO country code",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomerscustomeridaddresses",
  "legacyHash": "R4lDs5xhyOIV0ygD2aQpj"
}
```
:::


[title] Add identification
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.Customer.Identification.Added](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;

## API reference

Update a COS customer record with physical ID metadata or other identification information. This information is *mandatory* for every customer record.&#x20;

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{customerId}/identifications",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/identifications",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hw0N2ojFxAk00X4Ccombo",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/identifications' ^\n-d '{\n  \"isPrimary\": true,\n  \"idNumber\": \"18e5b61d-fbac-4a52-9cce-3af544886199\",\n  \"idType\": \"Other\",\n  \"issuedDate\": \"2022-08-18\",\n  \"expDate\": \"2027-08-18\",\n  \"verifiedDate\": \"2025-08-18\",\n  \"issuingAuthority\": \"Fintech\",\n  \"issuingStateOrProvince\": \"NJ\",\n  \"issuingCountryCode\": \"US\"\n}\n\n'",
        "customLabel": ""
      },
      {
        "id": "9PDGzXWqL7yvdrR8y-yn2",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/identifications',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"idNumber\\\": \\\"18e5b61d-fbac-4a52-9cce-3af544886199\\\",\\r\\n  \\\"idType\\\": \\\"Other\\\",\\r\\n  \\\"issuedDate\\\": \\\"2022-08-18\\\",\\r\\n  \\\"expDate\\\": \\\"2027-08-18\\\",\\r\\n  \\\"verifiedDate\\\": \\\"2025-08-18\\\",\\r\\n  \\\"issuingAuthority\\\": \\\"Fintech\\\",\\r\\n  \\\"issuingStateOrProvince\\\": \\\"NJ\\\",\\r\\n  \\\"issuingCountryCode\\\": \\\"US\\\"\\r\\n}\\r\\n\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "A4SfTAIE1V83-KmGi67ee",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/identifications\"\n\npayload = \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"idNumber\\\": \\\"18e5b61d-fbac-4a52-9cce-3af544886199\\\",\\r\\n  \\\"idType\\\": \\\"Other\\\",\\r\\n  \\\"issuedDate\\\": \\\"2022-08-18\\\",\\r\\n  \\\"expDate\\\": \\\"2027-08-18\\\",\\r\\n  \\\"verifiedDate\\\": \\\"2025-08-18\\\",\\r\\n  \\\"issuingAuthority\\\": \\\"Fintech\\\",\\r\\n  \\\"issuingStateOrProvince\\\": \\\"NJ\\\",\\r\\n  \\\"issuingCountryCode\\\": \\\"US\\\"\\r\\n}\\r\\n\\r\\n\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Mw3TxTD8PXM3GmJN_l-3J",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/identifications\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"idNumber\\\": \\\"18e5b61d-fbac-4a52-9cce-3af544886199\\\",\\r\\n  \\\"idType\\\": \\\"Other\\\",\\r\\n  \\\"issuedDate\\\": \\\"2022-08-18\\\",\\r\\n  \\\"expDate\\\": \\\"2027-08-18\\\",\\r\\n  \\\"verifiedDate\\\": \\\"2025-08-18\\\",\\r\\n  \\\"issuingAuthority\\\": \\\"Fintech\\\",\\r\\n  \\\"issuingStateOrProvince\\\": \\\"NJ\\\",\\r\\n  \\\"issuingCountryCode\\\": \\\"US\\\"\\r\\n}\\r\\n\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "eQxPlhOlFPke94QcMzmYv",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/identifications\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"isPrimary\": true,`+\"\n\"+`\n  \"idNumber\": \"18e5b61d-fbac-4a52-9cce-3af544886199\",`+\"\n\"+`\n  \"idType\": \"Other\",`+\"\n\"+`\n  \"issuedDate\": \"2022-08-18\",`+\"\n\"+`\n  \"expDate\": \"2027-08-18\",`+\"\n\"+`\n  \"verifiedDate\": \"2025-08-18\",`+\"\n\"+`\n  \"issuingAuthority\": \"Fintech\",`+\"\n\"+`\n  \"issuingStateOrProvince\": \"NJ\",`+\"\n\"+`\n  \"issuingCountryCode\": \"US\"`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hw0N2ojFxAk00X4Ccombo"
  },
  "results": {
    "languages": [
      {
        "id": "O5ylk9xNN0-gvwn-8j3Dp",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"811386d6-0a0c-43cf-a03f-b30400ba0b32\",\n    \"customerId\": \"bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887\",\n    \"isPrimary\": true,\n    \"idNumber\": \"18e5b61d-fbac-4a52-9cce-3af544886199\",\n    \"status\": \"Active\",\n    \"idType\": \"Other\",\n    \"issuedDate\": \"2022-08-18\",\n    \"expDate\": \"2027-08-18\",\n    \"verifiedDate\": \"2023-08-18\",\n    \"issuingAuthority\": \"Fintech\",\n    \"issuingStateOrProvince\": \"NJ\",\n    \"issuingCountryCode\": \"US\",\n    \"createdAt\": \"2025-06-22T07:17:21.8716505-04:00\",\n    \"lastModifiedAt\": \"2025-06-22T07:17:21.8716505-04:00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\"\n}"
      },
      {
        "id": "cQrGunp1Snu_toxeAW2c-",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2234,\n            \"message\": \"Identification already exists\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "cQrGunp1Snu_toxeAW2c-"
  },
  "request": {
    "pathParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The customer ID of the customer record to update",
        "": "The customer ID of the customer record to update"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "isPrimary",
        "kind": "required",
        "type": "boolean",
        "description": "True if this is the primary ID record for this customer. Otherwise, false",
        "": "required"
      },
      {
        "name": "idNumber",
        "kind": "required",
        "type": "string",
        "description": "The identification number being added. Maximum 50 characters.",
        "": "The identification number being added. Maximum 50 characters."
      },
      {
        "name": "idType",
        "kind": "required",
        "type": "string",
        "description": "The kind of ID:\n- DriversLicense\n- Passport\n- IdCard\n- SocialSecurity\n- Other",
        "": "required"
      },
      {
        "name": "issuedDate",
        "kind": "optional",
        "type": "string",
        "description": "Date the ID was issued, in the format yyyy-mm-dd",
        "": "Date the ID was issued, in the format yyyy-mm-dd"
      },
      {
        "name": "expDate",
        "kind": "optional",
        "type": "string",
        "description": "Date the ID expires, in the format yyyy-mm-dd",
        "": "Date the ID expires, in the format yyyy-mm-dd"
      },
      {
        "name": "verifiedDate",
        "kind": "optional",
        "type": "string",
        "description": "Date the ID was last verified, in the format yyyy-mm-dd",
        "": "Date the ID was last verified, in the format yyyy-mm-dd"
      },
      {
        "name": "issuingAuthority",
        "kind": "required",
        "type": "string",
        "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles. Maximum 255 characters.",
        "": "The official authority that issued the ID. For example, the Department of Motor Vehicles. Maximum 255 characters."
      },
      {
        "name": "issuingStateOrProvince",
        "kind": "optional",
        "type": "string",
        "description": "State or province where the ID was issued",
        "": "State or province where the ID was issued"
      },
      {
        "name": "issuingCountryCode",
        "kind": "required",
        "type": "string",
        "description": "Country where the ID was issued expressed as a 2-character code",
        "": "required"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "COS ID for the record, in GUID format"
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The customerId of the customer record being updated",
      "children": []
    },
    {
      "name": "isPrimary",
      "kind": "optional",
      "type": "string",
      "description": "True if this is the primary ID record for this customer. Otherwise, false",
      "children": []
    },
    {
      "name": "idNumber",
      "kind": "optional",
      "type": "string",
      "description": "The identification number being added",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "boolean",
      "description": "Status of the customer record:\n- Inactive\n- Active",
      "children": []
    },
    {
      "name": "idType",
      "kind": "optional",
      "type": "string",
      "description": "The kind of ID:\n- DriversLicense\n- Passport\n- IdCard\n- SocialSecurity\n- Other",
      "children": []
    },
    {
      "name": "issuedDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the ID was issued",
      "children": []
    },
    {
      "name": "expDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the ID expires",
      "children": []
    },
    {
      "name": "verifiedDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the ID was last verified",
      "children": []
    },
    {
      "name": "issuingAuthority",
      "kind": "optional",
      "type": "string",
      "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles.",
      "children": []
    },
    {
      "name": "issuingStateOrProvince",
      "kind": "optional",
      "type": "string",
      "description": "State or province where the ID was issued",
      "children": []
    },
    {
      "name": "issuingCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "Country where the ID was issued expressed as a 2-character code",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomerscustomerididentification",
  "legacyHash": "GrO3bQW-jXxxBjBKoh4QR"
}
```
:::


[title] Close card
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Closed](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

Permanently deactivates a card. **Closed cards cannot be reactivated.**

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/close",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/close",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/close?id=cac074a9-0f45-4cd4-89bf-b2ff009a0421' \\\n--header 'Idempotency-key: a5b1b129-421e-441b-9661-ec1c0396965e' \\\n--data '{\n  \"notes\": \"new card ordered\"\n}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}/close?id=cac074a9-0f45-4cd4-89bf-b2ff009a0421',\n  'headers': {\n    'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"notes\\\": \\\"new card ordered\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/close?id=cac074a9-0f45-4cd4-89bf-b2ff009a0421\"\n\npayload = \"{\\r\\n  \\\"notes\\\": \\\"new card ordered\\\"\\r\\n}\"\nheaders = {\n  'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/close?id=cac074a9-0f45-4cd4-89bf-b2ff009a0421\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"a5b1b129-421e-441b-9661-ec1c0396965e\"\nrequest.body = \"{\\r\\n  \\\"notes\\\": \\\"new card ordered\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/close?id=cac074a9-0f45-4cd4-89bf-b2ff009a0421\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"notes\": \"new card ordered\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"a5b1b129-421e-441b-9661-ec1c0396965e\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"cac074a9-0f45-4cd4-89bf-b2ff009a0421\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"processorCardId\": \"792112119400380\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Closed\",\n    \"statusReasonCode\": \"NotSet\",\n    \"processorCardStatus\": \"F\",\n    \"firstName\": \"Dalinar\",\n    \"lastName\": \"Kholiner\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkholiner@gmail.com\",\n    \"nameOnCard\": \"Dalinar Kholiner\",\n    \"panLastFour\": \"8518\",\n    \"isPinSet\": false,\n    \"expirationDate\": \"2028-06-17\",\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"Completed\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"processorCustomerId\": \"P0UTV968U1R28105IRHP\",\n    \"createdAt\": \"2025-06-17T05:20:45.67-04:00\",\n    \"closedAt\": \"2025-07-01T07:54:14.2452486-04:00\",\n    \"initialActivation\": \"2025-06-17T00:00:00-04:00\",\n    \"activatedAt\": \"2025-06-17T05:26:35.573-04:00\",\n    \"lastModifiedAt\": \"2025-07-01T07:54:14.2764906-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "notes",
        "kind": "required",
        "type": "string",
        "description": "Maximum length is 60 characters",
        "": "required"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format. See also here.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- FraudBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's Unique ID for the cardholder",
      "children": []
    },
    {
      "name": "cardDesignId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier associated to the card design to use when overriding a program's default card design",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidclose",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Ping by ID
[path] Webhooks intro/COS webhooks/Webhook management: COS/

:::ApiMethodV2
```json
{
  "name": "Endpoint: /webhooks/v1/registrations/{id}/ping",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/ping",
  "description": "Ping a webhook registration by ID to check the status. 202 response indicates that this is a valid webhook.",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "CleBcO_2wL3a16Buk3Pxm",
        "language": "curl",
        "code": "curl --location --globoff --request PUT 'https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/ping?id=8d6115c0-2a88-4a58-b731-b306002e8bc2'",
        "customLabel": ""
      },
      {
        "id": "jVtGnuIpM1gX09xe4zuqH",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/webhooks/v1/registrations/{id}/ping?id=8d6115c0-2a88-4a58-b731-b306002e8bc2',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "LA4C5-G_o7jo-_9HLKG0p",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/ping?id=8d6115c0-2a88-4a58-b731-b306002e8bc2\"\n\npayload = {}\nheaders = {}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "54UPZSVg6mAgKrCmko8BO",
        "language": "ruby",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/ping?id=8d6115c0-2a88-4a58-b731-b306002e8bc2\"\n  method := \"PUT\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      },
      {
        "id": "JIZrLaOwc4ur8V5eG2hBI",
        "language": "go",
        "code": "",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "CleBcO_2wL3a16Buk3Pxm"
  },
  "results": {
    "languages": [
      {
        "id": "tBg1_BVjgUmgoVNtaY8pg",
        "language": "202",
        "customLabel": "",
        "code": ""
      }
    ],
    "selectedLanguageId": "tBg1_BVjgUmgoVNtaY8pg"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format.",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-webhooksv1registrationsidping",
  "legacyHash": "UDDHj6qcaTfdBJ-oZJReG"
}
```
:::


[title] Account management APIs
[path] Accounts/


[title] 
[path] Accounts/


[title] Change card profile
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Profile.Changed](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

Updates the profile associated to a card.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/profile",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/profile",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff --request PUT 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/profile?id=1c243431-23b8-407c-afa4-b30000abbe0d' \\\n--data-raw '{\n     \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n     \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    }\n    \n}'",
        "customLabel": ""
      },
      {
        "id": "x_MG1v6sKtmoDOR0tOu8n",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}/profile?id=1c243431-23b8-407c-afa4-b30000abbe0d',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n     \\\"firstName\\\": \\\"Daly\\\",\\r\\n    \\\"lastName\\\": \\\"Khol\\\",\\r\\n     \\\"phone\\\": {\\r\\n        \\\"phoneType\\\": \\\"Home\\\",\\r\\n        \\\"phoneNumber\\\": \\\"7185551234\\\"\\r\\n    },\\r\\n    \\\"emailAddress\\\": \\\"dkhol@gmail.com\\\",\\r\\n    \\\"billingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"shippingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    }\\r\\n    \\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "BjNj18w3ge1Dp8xYETFNQ",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/profile?id=1c243431-23b8-407c-afa4-b30000abbe0d\"\n\npayload = \"{\\r\\n     \\\"firstName\\\": \\\"Daly\\\",\\r\\n    \\\"lastName\\\": \\\"Khol\\\",\\r\\n     \\\"phone\\\": {\\r\\n        \\\"phoneType\\\": \\\"Home\\\",\\r\\n        \\\"phoneNumber\\\": \\\"7185551234\\\"\\r\\n    },\\r\\n    \\\"emailAddress\\\": \\\"dkhol@gmail.com\\\",\\r\\n    \\\"billingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"shippingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    }\\r\\n    \\r\\n}\"\nheaders = {\n\n}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "7vCzq4QiptwpYN3fJ5pbc",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/profile?id=1c243431-23b8-407c-afa4-b30000abbe0d\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n     \\\"firstName\\\": \\\"Daly\\\",\\r\\n    \\\"lastName\\\": \\\"Khol\\\",\\r\\n     \\\"phone\\\": {\\r\\n        \\\"phoneType\\\": \\\"Home\\\",\\r\\n        \\\"phoneNumber\\\": \\\"7185551234\\\"\\r\\n    },\\r\\n    \\\"emailAddress\\\": \\\"dkhol@gmail.com\\\",\\r\\n    \\\"billingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"shippingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    }\\r\\n    \\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "r8rtjGLzdnx9k067fg8SY",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/profile?id=1c243431-23b8-407c-afa4-b30000abbe0d\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n     \"firstName\": \"Daly\",`+\"\n\"+`\n    \"lastName\": \"Khol\",`+\"\n\"+`\n     \"phone\": {`+\"\n\"+`\n        \"phoneType\": \"Home\",`+\"\n\"+`\n        \"phoneNumber\": \"7185551234\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"emailAddress\": \"dkhol@gmail.com\",`+\"\n\"+`\n    \"billingAddress\": {`+\"\n\"+`\n        \"street1\": \"1 Roshar Ave\",`+\"\n\"+`\n        \"city\": \"Roshar\",`+\"\n\"+`\n        \"state\": \"NY\",`+\"\n\"+`\n        \"postalCode\": \"10001\",`+\"\n\"+`\n        \"countryCode\": \"US\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"shippingAddress\": {`+\"\n\"+`\n        \"street1\": \"1 Roshar Ave\",`+\"\n\"+`\n        \"city\": \"Roshar\",`+\"\n\"+`\n        \"state\": \"NY\",`+\"\n\"+`\n        \"postalCode\": \"10001\",`+\"\n\"+`\n        \"countryCode\": \"US\"`+\"\n\"+`\n    }`+\"\n\"+`\n    `+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"1c243431-23b8-407c-afa4-b30000abbe0d\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"processorCardId\": \"827277613081398\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Active\",\n    \"statusReasonCode\": \"NotSet\",\n    \"processorCardStatus\": \"B\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Daly Khol\",\n    \"panLastFour\": \"4558\",\n    \"previousCardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n    \"isPinSet\": true,\n    \"expirationDate\": \"2028-06-18\",\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"Completed\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"processorCustomerId\": \"X5R364GI9VXUUK24QH1D\",\n    \"createdAt\": \"2025-06-18T06:25:17.697-04:00\",\n    \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n    \"activatedAt\": \"2025-07-01T03:01:41.433-04:00\",\n    \"lastModifiedAt\": \"2025-07-01T04:59:58.9530403-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "firstName",
        "kind": "required",
        "type": "string",
        "description": "Cardholder first name\n60 characters maximum",
        "": "required"
      },
      {
        "name": "middleName",
        "kind": "optional",
        "type": "string",
        "description": "Cardholder middle name\n60 characters maximum",
        "": "optional"
      },
      {
        "name": "lastName",
        "kind": "required",
        "type": "string",
        "description": "Cardholder last name\n60 characters maximum",
        "": "required"
      },
      {
        "name": "suffix",
        "kind": "optional",
        "type": "string",
        "description": "Cardholder name suffix\n60 characters maximum",
        "": "Cardholder name suffix\n60 characters maximum"
      },
      {
        "name": "phone",
        "kind": "optional",
        "type": "object",
        "description": "Details of the cardholder phone contact information",
        "": "optional",
        "children": [
          {
            "name": "phoneType",
            "kind": "required",
            "type": "string",
            "description": "Phone number is for:\n- Home\n- Mobile\n- Work\n"
          },
          {
            "name": "phoneNumber",
            "kind": "required",
            "type": "string",
            "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
          }
        ],
        "schema": [
          {
            "name": "phoneType",
            "kind": "required",
            "type": "string",
            "description": "Phone number is for:\n- Home\n- Mobile\n- Work\n"
          },
          {
            "name": "phoneNumber",
            "kind": "required",
            "type": "string",
            "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
          }
        ]
      },
      {
        "name": "emailAddress",
        "kind": "optional",
        "type": "string",
        "description": "Cardholder email address\n60 characters maximum",
        "": "optional"
      },
      {
        "name": "billingAddress",
        "kind": "required",
        "type": "object",
        "description": "Address to send cardit card bills",
        "": "required",
        "children": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. \n60 characters maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional filed for address information.\n60 characters maximum."
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Name of cardholder city\n60 characters maximum"
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character state code"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder US postal (ZIP) code"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character ISO country code"
          }
        ],
        "schema": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. \n60 characters maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional filed for address information.\n60 characters maximum."
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Name of cardholder city\n60 characters maximum"
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character state code"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder US postal (ZIP) code"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character ISO country code"
          }
        ]
      },
      {
        "name": "shippingAddress",
        "kind": "required",
        "type": "object",
        "description": "Address to which a physical card is shipped",
        "": "required",
        "children": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. \n60 characters maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional filed for address information.\n60 characters maximum."
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Name of cardholder city\n60 characters maximum"
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character state code"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder US postal (ZIP) code"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character ISO country code"
          }
        ],
        "schema": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. \n60 characters maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional filed for address information.\n60 characters maximum."
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Name of cardholder city\n60 characters maximum"
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character state code"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder US postal (ZIP) code"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character ISO country code"
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- FraudBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's unique ID for the cardholder",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidprofile",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Webhook events: customer management
[path] Customer management/

## Common events

When you work with Cross River customer management, you register for specific [webhooks](docId\:qF6bTOPBPNcpLPp9SAtWI) which have a specific [event format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents common Customer Management webhook events that are described in detail below.

| Event name                                                             | Description                                                             | Related endpoints                                          |
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------- |
| [Core.Customer.Onboarded](docId\:rl8xMrOEgISTYbmE-Y98D)                | New customer was onboarded                                              | [Add personal customer](docId\:isgkj7NIS9jHmyu3UPUBk)      |
| [Core.Customer.Address.Added](docId\:rl8xMrOEgISTYbmE-Y98D)            | Customer address was added                                              | [Add address](docId\:tWpyIp5zxe-kjEJqEUqfc)                |
| [Core.Customer.Phone.Added](docId\:rl8xMrOEgISTYbmE-Y98D)              | Customer phone number was added                                         | [Add phone](docId:5bNWSnxsqTB_GtuntlnPW)                   |
| [Core.Customer.Identification.Added](docId\:rl8xMrOEgISTYbmE-Y98D)     | Customer identification was added                                       | [Add identification](docId\:QjfGSujVfqoxCpJiqzLfF)         |
| [Core.Customer.Email.Added](docId\:rl8xMrOEgISTYbmE-Y98D)              | Customer email was added                                                | [Add email](docId\:ghuoBTAsQ0vfLcEaWXPte)                  |
| [Core.Customer.Ofac.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)             | Customer OFAC status changed                                            | [Add personal customer](docId\:isgkj7NIS9jHmyu3UPUBk)      |
| [Core.Customer.PepScan.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)          | Customer PEP Scan status changed                                        | [Add personal customer](docId\:isgkj7NIS9jHmyu3UPUBk)      |
| [Core.Customer.Name.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)             | Name on the customer record changed                                     | [Update name](docId\:oZgr8jG6O3eBhmieFcOic)                |
| [Core.Customer.BeneficialOwner.Added](docId\:rl8xMrOEgISTYbmE-Y98D)    | Beneficial owner associated with business customer record               | [Add beneficial owner](docId\:EOH9pzYARQnyhe9mh979u)       |
| [Core.Customer.BeneficialOwner.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)  | Benefical owner information changed                                     | [Update beneficial owner](docId\:kR2QhF0-bTklavDAO6GXI)    |
| [Core.Customer.BeneficialOwner.Removed](docId\:rl8xMrOEgISTYbmE-Y98D)  | Beneficial owner association with business customer removed             | [Delete beneficial owner](docId\:L5uuspwq_J-z3RKrtxZQ_)    |
| [Core.Customer.Profile.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)          | Information in Profile section of the customer record updated           | [Update profile](docId:9O3Q5vAMhily1ufwtKENh)              |
| Core.Customer.DueDiligence.Changed                                     | Information in the Due Diligence section of the customer record updated | [Update due diligence info](docId\:E6pfz1-BGdTt1VFDx_prh)  |

## Event examples

### Core.Customer.Onboarded

:::CodeblockTabs
Sample Event

```curl
{
  "id": "97b574c2-08d4-42c6-884c-b2e201267681",
  "eventName": "Core.Customer.Onboarded",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T13:52:06.393+00:00",
  "resources": [
    "core/v1/cm/customers/61dc4d4c-3b2c-47f3-b935-b2e201266e06"
  ],
  "details": [
    {
      "customerId": "61dc4d4c-3b2c-47f3-b935-b2e201266e06",
      "clientIdentifier": "35ba6120-f860-4caa-9479-b5aaebeca49d"
    }
  ]
}
```
:::

### Core.Customer.Address.Added

:::CodeblockTabs
Sample Event

```curl
{
  "id": "6d147ea6-2628-461f-9aa6-b2e20126769e",
  "eventName": "Core.Customer.Address.Added",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T13:52:06.483+00:00",
  "resources": [
    "core/v1/cm/customers/61dc4d4c-3b2c-47f3-b935-b2e201266e06/addresses/e30bd094-54c9-4388-a8ca-b2e201266e0b"
  ],
  "details": [
    {
      "addressId": "e30bd094-54c9-4388-a8ca-b2e201266e0b",
      "customerId": "61dc4d4c-3b2c-47f3-b935-b2e201266e06"
    }
  ]
}
```
:::

### Core.Customer.Phone.Added

:::CodeblockTabs
Sample Event

```curl
{
  "id": "27834c98-9474-4298-bd2c-b2e20126767f",
  "eventName": "Core.Customer.Phone.Added",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T13:52:06.383+00:00",
  "resources": [
    "core/v1/cm/customers/61dc4d4c-3b2c-47f3-b935-b2e201266e06/phones/c46bd68a-8c07-4548-b229-b2e201266e1e"
  ],
  "details": [
    {
      "phoneId": "c46bd68a-8c07-4548-b229-b2e201266e1e",
      "customerId": "61dc4d4c-3b2c-47f3-b935-b2e201266e06"
    }
  ]
}
```
:::

### Core.Customer.Identification.Added

:::CodeblockTabs
Sample Event

```curl
{
  "id": "431a3c49-429f-4001-a1fc-b2e201267683",
  "eventName": "Core.Customer.Identification.Added",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T13:52:06.483+00:00",
  "resources": [
    "core/v1/cm/customers/61dc4d4c-3b2c-47f3-b935-b2e201266e06/identifications/6420d9e4-3abe-4be5-ae19-b2e201266e14"
  ],
  "details": [
    {
      "identificationId": "6420d9e4-3abe-4be5-ae19-b2e201266e14",
      "customerId": "61dc4d4c-3b2c-47f3-b935-b2e201266e06"
    }
  ]
}
```
:::

### Core.Customer.Email.Added

:::CodeblockTabs
Sample Event

```curl
{
  "id": "3d862cdc-5fc7-45c4-b40d-b2e20126769b",
  "eventName": "Core.Customer.Email.Added",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T13:52:06.483+00:00",
  "resources": [
    "core/v1/cm/customers/61dc4d4c-3b2c-47f3-b935-b2e201266e06/emails/7ba8f19d-f224-4e83-926e-b2e201266e0f"
  ],
  "details": [
    {
      "emailId": "7ba8f19d-f224-4e83-926e-b2e201266e0f",
      "customerId": "61dc4d4c-3b2c-47f3-b935-b2e201266e06"
    }
  ]
}
```
:::

### Core.Customer.Ofac.Changed

:::CodeblockTabs
Sample event

```curl
{
    "id": "0c4a210c-43f5-4caf-a534-b390008c415c",
    "eventName": "Core.Customer.Ofac.Changed",
    "status": "Pending",
    "partnerId": "1101a33d-fbd9-4b9e-b169-b29500f12407",
    "createdAt": "2025-11-09T03:30:39.25-05:00",
    "resources": [
        "core/v1/cm/customers/7e9e1ab8-3416-47b1-921f-b390008c30ef"
    ],
    "details": [
        {
            "customerId": "7e9e1ab8-3416-47b1-921f-b390008c30ef",
            "ofacBefore": "Pending",
            "ofacAfter": "Clear",
            "clientIdentifier": null
        }
    ]
}
```
:::

### Core.Customer.PepScan.Changed

:::CodeblockTabs
Sample event

```curl
{
    "id": "05817022-32e5-4ea2-bcdc-b390008c415c",
    "eventName": "Core.Customer.PepScan.Changed",
    "status": "Pending",
    "partnerId": "1101a33d-fbd9-4b9e-b169-b29500f12407",
    "createdAt": "2025-11-09T03:30:39.247-05:00",
    "resources": [
        "core/v1/cm/customers/7e9e1ab8-3416-47b1-921f-b390008c30ef"
    ],
    "details": [
        {
            "customerId": "7e9e1ab8-3416-47b1-921f-b390008c30ef",
            "pepScanBefore": "Pending",
            "pepScanAfter": "Clear",
            "clientIdentifier": null
        }
    ]
}
```
:::

### Core.Customer.Name.Changed

:::CodeblockTabs
Sample event

```curl
{
  "id": "54b8d91e-f439-4063-b71f-b39000927023",
  "eventName": "Core.Customer.Name.Changed",
  "status": "Pending",
  "partnerId": "1101a33d-fbd9-4b9e-b169-b29500f12407",
  "createdAt": "2025-11-09T03:53:09.877-05:00",
  "resources": [
    "core/v1/cm/customers/7e9e1ab8-3416-47b1-921f-b390008c30ef"
  ],
  "details": [
    {
      "customerId": "7e9e1ab8-3416-47b1-921f-b390008c30ef",
      "clientIdentifier": null
    }
  ]
}
```
:::

### Core.Customer.BeneficialOwner.Added

:::CodeblockTabs
Sample event

```curl
{
  "id":"7c77cc7a-a15f-4da8-8359-b3a0008ebb45",
   "eventName":"Core.Customer.BeneficialOwner.Added",
   "status":"Pending",
   "partnerId":"cd9c12f4-7691-424a-b38b-af5b0134c611",
   "createdAt":"2025-11-25T03:39:40.19-05:00",
   "resources": [
     "core/v1/cm/customers/c3f1d6e8-3bca-48e5-9249-b30400b3ab47/beneficial-owners/09aa2fdc-2d4e-443a-95b9-b3a0008eb254"
  ],
  "details": [
   {
     "ownerId":"09aa2fdc-2d4e-443a-95b9-b3a0008eb254",
     "customerId":"c3f1d6e8-3bca-48e5-9249-b30400b3ab47",
     "ownerCustomerId":"861261af-1251-49e8-966f-b2ff00d627bd"
   }
  ]
}
```
:::

### Core.Customer.BeneficialOwner.Changed

:::CodeblockTabs
Sample event

```curl
{
   "id":"f4cc3fd2-8fc5-4fec-b860-b3ae00c34426",
   "eventName":"Core.Customer.BeneficialOwner.Changed",
   "status":"Pending",
   "partnerId":"cd9c12f4-7691-424a-b38b-af5b0134c611",
   "createdAt":"2025-12-09T06:50:56.567-05:00",
   "resources": [
      "core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c"
   ],
   "details": [
   ]
 }
```
:::

### Core.Customer.BeneficialOwner.Removed

:::CodeblockTabs
Sample event

```curl
{
   "id":"9aecc9a6-1e38-4c0d-afa1-b3ae00c8e62f",
   "eventName":"Core.Customer.BeneficialOwner.Removed",
   "status":"Pending",
   "partnerId":"cd9c12f4-7691-424a-b38b-af5b0134c611",
   "createdAt":"2025-12-09T07:11:27.08-05:00",
   "resources": [
      "core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c"
   ],
   "details": [
   ]
 }
```
:::

### Core.Customer.Profile.Changed

:::CodeblockTabs
Sample event

```curl
{
  "id":"43412508-b7f4-49af-91be-b3ad009ef330",
  "eventName":"Core.Customer.Profile.Changed",
  "status":"Pending",
  "partnerId":"cd9c12f4-7691-424a-b38b-af5b0134c611",
  "createdAt":"2025-12-08T04:38:43.143-05:00",
  "resources": [
    "core/v1/cm/customers/928668cc-27ca-4388-9754-b3ad0092be45"
  ],
  "details": [
    {
       "customerId":"928668cc-27ca-4388-9754-b3ad0092be45",
       "clientIdentifier":null
    }
  ]
}
```
:::

### Core.Customer.DueDiligence.Changed

:::CodeblockTabs
Sample event

```javascript
{
    "id": "4083b6e4-7b35-414c-97fa-b47f00c7acab",
    "eventName": "Core.Customer.DueDiligence.Changed",
    "status": "Pending",
    "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
    "createdAt": "2026-07-06T08:06:59.547-04:00",
    "resources": [
        "core/v1/cm/customers/53c34cf0-4cd2-4768-937b-b30000dffdca"
    ],
    "details": [
        {
            "customerId": "53c34cf0-4cd2-4768-937b-b30000dffdca",
            "clientIdentifier": "35ba6120-f860-4caa-9479-b5aaebeca49d"
        }
    ]
}
```
:::


[title] Pagination
[path] API Basics/

## Pagination overview

Pagination is a process that divides a large dataset into smaller chunks. All endpoints that return a list of resources support pagination.

## How it works

When using a list method on a resource, our system supports parameters to specify the paging of the results returned.

For example, if you want to return the second page of your customer list with a 50-record page size, specify that in the request query string:

`pageNumber` integer
Current page number determined by the total number of records and the number of records per page

***

`pageSize` -  integer

Number of records to list on a page. Maximum is 50.

***

:::CodeblockTabs
Paging example

```curl
https://api.crbcos.com/core/v1/cm/customers?pageNumber=2&pageSize=50
```
:::

Results are wrapped in a standard paging object as follows:

`id`  string

Unique identifier

***

`name` string

Customer name

***

`pageNumber`  integer

Current page number determined by the total number of records and the number of records per page

***

`pageSize` integer

Number of records to list on a page. Maximum is 50.

***

`hasPreviousPage` boolean

True if there is a previous page, otherwise false

***

`hasNextPage` boolean

True if there is a next page, otherwise false

```json
{
  "results":[
    {
      "id":"123",
      "name":"John C. Customer"
    }],
  "pageNumber":2,
  "pageSize":50,
  "hasPreviousPage":true,
  "hasNextPage":false
}
```


[title] Cards
[path] /

:::CtaButton{label="Card Concepts" docId="xJUtOOcHA5khMt9uzyS18" openInNewTab="true"}

:::

## Cards APIs

Cross River card issuing lets you offer customers different types of debit card products. These products, known as **instrument types**, include contact-less and virtual cards.&#x20;

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [Pagination](docId:6EKvQUYWeVh9x4zxmuKlJ)  to control presentation of your results.

## API calls

| Action                                                          | API Call                                                      | Description                                                                               |
| --------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| [Create new card](docId\:EJCciNVxb0oMKjA567gUM)                 | POST /cardmanagement/v1/cards                                 | Requests creation of a new card.                                                          |
| [Activate card by ID](docId\:E_U42earZiwDZOiIXuunI)             | POST /cardmanagement/v1/cards/\{id}/activate                  | Activates a card for a customer. This is the preferred way to activate a card.            |
| [Set PIN](docId\:yFZLDNDP2NxSd7hQ2tIKu)                         | PUT /cardmanagement/v1/cards/\{id}/pin                        | Sets the customer PIN.                                                                    |
| [Replace card by ID](docId\:AxI2pLSUCMHXDN8-vhCoH)              | POST /cardmanagement/v1/cards/\{id}/replace                   | Order a replacement for damaged, lost or stolen cards.                                    |
| [Card details](docId:8dktW3wHbpLKlAqXFwwmu)                     | GET<br />/cardmanagement/v1/cards                             | Returns details about all cards based on the input.                                       |
| [Card details by ID](docId\:R5ZWm6VkWz-VS8_uVbZoH)              | GET /cardmanagement/v1/cards/\{id}                            | Returns the details of a specific debit card based on its ID.                             |
| [Transaction details by ID](docId\:nKkKZa00pXT9PveD3nfwm)       | GET /cardmanagement/v1/transactions/\{id}                     | Returns information about card transactions based on partner ID.                          |
| [Change card profile](docId\:P_TiF6EjyBAGbP4VsIEg6)             | PUT /cardmanagement/v1/cards/\{id}/profile                    | Retrieves the profile associated to a card.                                               |
| [Suspend card](docId\:K4JUvw-0ny1dOxTSOVNFx)                    | POST /cardmanagement/v1/cards/\{id}/suspend                   | Suspends a card based on card ID.                                                         |
| [Unsuspend card](docId\:m4ISy77gMgYBkgwRXliaX)                  | POST /cardmanagement/v1/cards/\{id}/unsuspend                 | Unsuspends a card based on card ID.                                                       |
| [Admin block](docId\:eRw0IIaPwTMvyz_stwvLJ)                     | POST<br />/cardmanagement/v1/cards/\{id}/admin-block          | Card blocked by admin. Status returned is suspended.<br />                                |
| [Close card](docId:9tDjvhU9S37a-7Cqj3VEJ)                       | POST cardmanagement/v1/cards/\{id}/close                      | Permanently deactivates a card. Closed cards cannot be reactivated.<br />                 |
| [Set card controls](docId\:r_Cxcl0l2UoyWkuuJpaJ1)               | PUT /cardmanagement/v1/cards/\{cardId}/controls               | Limit the amount of money that can be spent through different channels in a given period. |
| [Get card controls](docId\:AT16WGXZGoV5cqFuFNPTP)               | GET /cardmanagement/v1/cards/\{cardId}/controls               | Limit the amount of money that can be spent through different channels in a given period. |
| [Retrieve wallet tokens](docId\:XkoW0XYhCILYqvZGbtuRS)          | GET /cardmanagement/v1/cards/\{cardId}/tokens                 | Retrieve all wallet tokens associated with a card.                                        |
| [Retrieve specific wallet token](docId\:m4QVkVrG6emlcJBmOtz-7)  | GET<br />/cardmanagement/v1/cards/\{cardId}/tokens/\{tokenId} | Retrieve a specific wallet token by its Cross River token ID                              |
| [Update token status](docId\:oSHmkZDitQJD88th2HSXe)             | PUT /cardmanagement/v1/cards/\{cardId}/tokens/\{tokenId}      | Update token status (suspend, resume, delete).                                            |
| [3DS authentication details](docId\:Su5NVsUfruWN28v1O7gM8)      | GET<br />/cardmanagement/v1/3ds/\{id}                         | This API enables you to get your webhook event details.                                   |
| [Validate OUTOFBANDOTHER](docId:0-MnW4CrKX4T_GPrujleW)          | POST /cardmanagement/v1/3ds/\{id}/validate                    | Enables you to proactively notify when a transaction has completed.                       |

## Simulations - Sandbox only

| Action                                                                | API Call                                                           | Description                                                                                                                                                                                     |
| --------------------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Simulate card auth](docId\:KlhKL7f7udKCkg4lK2vWI)                    | POST<br />/cardmanagement/v1/simulate/authorization                | Simulates merchant authorization.                                                                                                                                                               |
| [Simulate card clearing](docId\:JkywJbbJ5vZss_4VYApdu)                | POST<br />/cardmanagement/v1/simulate/clearing                     | Simulates replacement of a memo post with a core transaction.                                                                                                                                   |
| [Simulate card reversal](docId:--Zu5qBy2bYatnKskhGMX)                 | POST<br />/cardmanagement/v1/simulate/reversal                     | Simulates the reversal an existing authorization. This reverses the original authorization placed on the account and removes it from the deposit account activity.                              |
| [Simulate card incremental](docId\:RTQomduN8IwgfOgeqZpav)             | POST<br />/cardmanagement/v1/simulate/incremental                  | Simulates an incremental transaction reflected in the deposit account activity. <br />                                                                                                          |
| [Simulate single-message-clearing](docId\:fOEhdDYZNvdGf-E2QnxL7)      | POST<br />/cardmanagement/v1/simulate/single-message-clearing      | Simulates verification and requires the cardholder to enter their PIN to authorize and clear their transaction.<br />                                                                           |
| [Simulate single-message-reversal](docId\:o5jr5Y2sCriIC2hagqXgL)      | POST<br />/cardmanagement/v1/simulate/single-message-reversal      | Simulates a reversal transaction to a single message clearing transaction.<br />                                                                                                                |
| [Simulate wallet provisioning approval](docId:23MdxOy5tf6TGyerC16so)  | POST /cardmanagement/v1/simulate/tokenization/approve-provisioning | Simulate an approval of a wallet provisioning request.                                                                                                                                          |
| [Simulate activation passcode](docId\:hF101EqWnlQ5O3x8PxtDl)          | POST /cardmanagement/v1/simulate/tokenization/send-passcode        | Simulate sending activation passcode to cardholder                                                                                                                                              |
| [Simulate tokenization completion](docId\:VZ-IrIKMkcgIK-OiM5-GA)      | POST<br />/cardmanagement/v1/simulate/tokenization/token-completed | Simulate completion of tokenization process.                                                                                                                                                    |
| [Simulate authentication](docId\:VDmgALvyG_2Gld_bUaJXf)               | POST /cardmanagement/v1/simulate/3ds/authenticate                  | Simulates a card transaction 3DS authentication with OTP (One-Time Passcode). The OTP will be sent to your chosen webhook URL or OOB (Out-of-band) that interacts with a 3rd party application. |

## Related topics&#x20;

- [Webhook events: Cards](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;
- [Request and response codes: Cards](docId:6nTOAXWfuc2Rbx-vN4_sw)&#x20;
- [Error codes: Cards](docId\:vofiURcg2TMteqOAwVl74)&#x20;

## Tutorials

See our API tutorials to learn how to:

- [Create a card](docId\:RZZRD7am62-KTyv9G1n9-): Create and order a new card.
- [Activate a card](docId\:WZYv6QGm31LDTeAGrt2fc): Change the card status to Active. &#x20;
- [Simulate card management](docId\:cY6Inx4O9CeJ74FOVu7o6): Test the system with our card simulation endpoints.&#x20;


[title] Webhook events list
[path] Webhooks intro/COS webhooks/

## List of webhook events

The tables below describe the different webhook events you can register for. Where relevant, additional information is provided for some of the events.

## Customer events

See Customer Management [webhook events](docId\:rl8xMrOEgISTYbmE-Y98D) for some examples.

| Event Name                                   | Description                                                                 |
| -------------------------------------------- | --------------------------------------------------------------------------- |
| `Core.Customer.Onboarded`                    | New customer was onboarded                                                  |
| `Core.Customer.Profile.Changed`              | Customer profile was changed                                                |
| `Core.Customer.Name.Changed`                 | Customer name changed                                                       |
| `Core.Customer.Address.Added`                | Customer address was added                                                  |
| `Core.Customer.Address.Changed`              | Customer address was changed                                                |
| `Core.Customer.Address.Removed`              | Customer address was removed                                                |
| `Core.Customer.Phone.Added`                  | Customer phone number was added                                             |
| `Core.Customer.Phone.Changed`                | Customer phone number was changed                                           |
| `Core.Customer.Phone.Removed`                | Customer phone number was removed                                           |
| `Core.Customer.Identification.Added`         | Customer identification was added                                           |
| `Core.Customer.Identification.Changed`       | Customer identification changed                                             |
| `Core.Customer.Identification.Removed`       | Customer identification was removed                                         |
| `Core.Customer.Email.Added`                  | Customer email was added                                                    |
| `Core.Customer.Email.Changed`                | Customer email was changed                                                  |
| `Core.Customer.Email.Removed`                | Customer email was removed                                                  |
| `Core.Customer.Ofac.Changed`                 | Customer OFAC scan resulted in a status change                              |
| `Core.Customer.PepScan.Changed`              | Customer PEP Scan resulted in a status change                               |
| `Core.Customer.BeneficialOwner.Added`        | Beneficial owner associated with business customer record                   |
| `Core.Customer.BeneficialOwner.Changed`      | Business customer beneficial owner changed                                  |
| `Core.Customer.BeneficialOwner.Removed`      | Business customer beneficial owner removed from record                      |
| `Core.Customer.BusinessDueDiligence.Changed` | Data in the business due diligence section of the customer record changed   |
| `Core.Customer.DueDiligence.Changed `        | Data in the due diligence section of the individual customer record changed |

## General account webhook events

See Accounts [webhook events](docId\:eAs8aFqW7M97baeZUC8Sr) for some examples.

| Event Name                       | Description                                                      |
| -------------------------------- | ---------------------------------------------------------------- |
| `Core.Account.Opened`            | A new account was opened                                         |
| `Core.Account.Status.Changed`    | Status of an account changed                                     |
| `Core.Account.Closed`            | Account was closed                                               |
| `Core.Account.Title.Changed`     | Account title changed                                            |
| `Core.Account.Balance.Changed`   | Indicates account balance fluctuations                           |
| `Core.Relationship.Added`        | Relationship was added to the account                            |
| `Core.Relationship.Removed`      | Relationship was removed from the account                        |
| `Core.Restriction.Placed`        | Restriction was placed on the account                            |
| `Core.Restriction.Removed`       | Restriction was removed for the account                          |
| `Core.StopPayment.Placed`        | Stop payment placed on the account                               |
| `Core.StopPayment.Removed`       | Stop payment removed from the account                            |
| `Core.Hold.Placed`               | Hold placed on the account                                       |
| `Core.Hold.Changed`              | Hold status has changed                                          |
| `Core.Hold.Removed`              | Hold was removed from the account                                |
| `Core.Statement.Generated`       | Account statement generated                                      |
| `Core.TaxDocument.Generated`     | Tax document generated                                           |
| `Core.Account.RateCard.Changed ` | Rate card that configures interest rates for the account changed |

## Subledgers webhook events

See Accounts [webhook events](docId\:eAs8aFqW7M97baeZUC8Sr) for some examples.

| Event Name                          | Description                              |
| ----------------------------------- | ---------------------------------------- |
| `Core.SubAccount.Opened`            | Subledger (subaccount) was opened        |
| `Core.SubAccount.Closed`            | Subledger (subaccount) was closed        |
| `Core.SubAccount.Title.Changed`     | Title of subledger (subaccount) changed  |
| `Core.SubAccount.Balance.Changed`   | The balance of the subledger has changed |
| `Core.SubAccount.Changed `          |                                          |
| `Core.SubAccount.Customer.Changed ` |                                          |

## Time deposit (CD) webhook events

| Event Name                   | Description                                      |
| ---------------------------- | ------------------------------------------------ |
| `Core.TimeDeposit.Withdrawn` | Funds withdrawn from a time deposit (CD) account |

## Deposit sweeps webhook events

| Event Name                       | Description                                           |
| -------------------------------- | ----------------------------------------------------- |
| `Sweeps.Intrafi.Account.Updated` | Sweeps-related data on the account record has changed |

## Transaction events

| Event Name                   | Description                          |
| ---------------------------- | ------------------------------------ |
| `Core.Transaction.Completed` | Transaction completed successfully   |
| `Core.Transaction.Rejected`  | Transaction was rejected on account  |
| `Core.Activity.Posted`       | Activity was posted to the account   |
| `Core.Product.Settled `      |                                      |
| `Core.MemoPost.Created`      | Memo post was created on the account |
| `Core.MemoPost.Changed`      | Memo post was changed                |
| `Core.MemoPost.Removed`      | Memo post was removed                |

## Cards events

See cards [Webhook events: Cards](docId\:paDKAtuyIo5w0YsAexxwl)  for some examples.

| Event Name                               | Description                                                                       |
| ---------------------------------------- | --------------------------------------------------------------------------------- |
| `Cards.Card.Ordered`                     | Card ordered                                                                      |
| `Cards.Card.Created`                     | Card created                                                                      |
| `Cards.Card.Activated`                   | Card activated                                                                    |
| `Cards.Card.Status.Changed`              | Card state has changed                                                            |
| `Cards.Card.Pin.Set`                     | PIN set for card                                                                  |
| `Cards.Card.Suspended`                   | Card use temporarily suspended                                                    |
| `Cards.Card.Unsuspended`                 | Suspension removed from card                                                      |
| `Cards.Card.Profile.Changed`             | Profiled of cardholder changed                                                    |
| `Cards.Card.Replaced`                    | New card created to replace an existing card                                      |
| `Cards.Card.Closed`                      | Card closed                                                                       |
| `Cards.Card.Failed`                      |                                                                                   |
| `Cards.Transaction.Authorized`           | Card transaction approved                                                         |
| `Cards.Transaction.Cleared`              | Card transaction successfully completed                                           |
| `Cards.Transaction.Declined`             | Card transaction not approved                                                     |
| `Cards.Transaction.Reversed`             | Payment credited to the originating account                                       |
| `Cards.Transaction.Failed`               | Card transaction failed                                                           |
| `Cards.Token.ProvisioningReceived`       | Wallet provisioning request initiated when user adds card to Apple Pay/Google Pay |
| `Cards.Token.ActivationReceived`         | Token activation requested. After provisioning approval.                          |
| `Cards.Token.CompletionReceived`         | Tokenization process completed. Token successfully activated.                     |
| `Cards.3ds.OtpTransactionReceived`       | Sent when <br />OTP-based authentication is initiated                             |
| `Cards.3ds.OutOfBandTransactionReceived` | Sent when out-of-band authentication is initiated (requires validation)           |

## Card Payments events

See Card payments [webhook events](docId\:wso2E9CMh8zs8PyIjC-7r) for some examples.

| Event Name                       | Description                                          |
| -------------------------------- | ---------------------------------------------------- |
| Card Events                      |                                                      |
| `CardPayments.Card.Approved`     | When a card token authorization is approved          |
| `CardPayments.Card.Rejected`     | When a card token authorization is rejected          |
| Payment Events                   |                                                      |
| `CardPayments.Payment.Cleared`   | When a payment passes hold evaluations.              |
| `CardPayments.Payment.Completed` | When a payment transaction is successfully completed |
| `CardPayments.Payment.Rejected`  | When a payment transaction is rejected               |
| `CardPayments.Payment.Failed`    | When a payment fails to submit                       |

## RTP events

See Instant Payments [webhook events](docId\:ffGq2OHYEbWPzn2old6Mc) for some examples.

| Event Name                               | Description                                                                                                                                                                                                |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Rtp.Payment.Sent`                       | RTP payment has been successfully sent to the receiving institution and the funds are available in the receiver's bank account                                                                             |
| `Rtp.Payment.Received`                   | Inbound payment has been received from another institution and has successfully posted to an account in COS                                                                                                |
| `Rtp.Payment.Rejected`                   | Payment has been rejected by the receiving institution or RTP Network. The payment originated from an account with insufficient funds.                                                                     |
| `Rtp.Payment.Canceled`                   | Payment was canceled at the request of the partner or a payment with a status of ResearchRequired has been canceled                                                                                        |
| `Rtp.Received.Funds.Outside.Of.Network ` |                                                                                                                                                                                                            |
|  `Rtp.Payment.TimedOut`                  | Occurs when we received an incoming RTP payment and we did not process the payment in a timely manner. The payment network then sent us a timeout message on that payment.                                 |
| `Rtp.Payment.ResearchRequired`           | No response was received for an outbound payment, manual research is required to determine if the payment should be completed or canceled                                                                  |
| `Rtp.Payment.Failed`                     | Payment has failed due to technical reasons.                                                                                                                                                               |
| `Rtp.Hold.Escalated`                     | A hold relating to either an outbound payment was marked for escalation by a member of the Operations team. Commonly this is used to indicate additional documentation or action is needed by the partner. |
| `Rtp.Refund.Requested`                   | Request has been received to refund a previously accepted credit transfer                                                                                                                                  |
| `Rtp.Payment.Queued`                     | The receiving institution is offline. The payment will be processed when the receiving institution is back online.                                                                                         |
| `Rtp.Payment.Expired `                   | Payment could not be sent because the receiving institution was offline for too long                                                                                                                       |
| `Rtp.Limits.Utilization.Changed`         | This webhook fires when the percentage of successful transfers hits 5%, and fires again every time the transfer interval goes up 5% (at 5%, 10%, 15% and so on).                                           |

## International payments events

See International Payments [webhook events](docId\:o9fUc2dKPczcl1h4yIChr) for some examples.

| Event Name                       | Description                                                      |
| -------------------------------- | ---------------------------------------------------------------- |
| `International.Hold.Placed `     | Funds are not yet sent due to payment hold                       |
| `International.Hold.Cleared`     | Hold on payment cleared. Funds sent.                             |
| `International.Hold.Escalated`   | Payment on hold and status escalated. Additional actions needed. |
| `International.Payment.Sent`     | Funds sent via a wire payment to the receiver bank               |
| `International.Payment.Canceled` | Payment canceled at partner request                              |
| `International.Payment.Rejected` | Payment rejected by the receiving bank                           |
| `International.Payment.Returned` |                                                                  |
| `Core.Transaction.Completed`     | Transaction completed successfully                               |

## ACH events

See ACH [webhook events](docId\:AVRvavzdk7hC0UfXn6XZ9) for some examples.

| Event Name                        | Description                                                                                                                                 |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `Ach.Batch.Canceled`              | Any pending or on-hold payments in an ACH client batch canceled                                                                             |
| `Ach.Batch.Imported`              | Entire ACH client batch import process into the CR system complete                                                                          |
| `Ach.Payment.Canceled`            | ACH payment canceled at partner request                                                                                                     |
| `Ach.Payment.Rejected`            | ACH payment rejected due to a compliance failure or fail to fund                                                                            |
| `Ach.Payment.Sent`                | ACH payment sent to the Federal Reserve                                                                                                     |
| `Ach.Payment.Received`            | ACH inbound payment received                                                                                                                |
| `Ach.Payment.ReceivedEarly`       | ACH early direct deposit payment received                                                                                                   |
| `Ach.Return.Received`             | ACH payment was returned from the receiving bank and has been marked as received                                                            |
| `Ach.Noc.Received`                | A Notification of Change was sent from the receiving bank regarding a previous origination                                                  |
| `Ach.Hold.Escalated`              | ACH inbound or outbound payment is on hold and it's status was escalated. This is often used to indicate that additional actions are needed |
| `Ach.Limits.Utilization.Changed ` | Notifies about a partner's ACH use limit                                                                                                    |

## Wire events

See Wires [webhook events](docId\:OA3cg-apKn_510VPq2yYe) for some examples.

| Event Name                  | Description                                                                                                                                                                                                        |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Wire.Payment.Approved`     | Wire payment was approved. This can happen because authorization or dual authorization is required.                                                                                                                |
| `Wire.Payment.Canceled`     | Outbound wire was canceled at the partner's request                                                                                                                                                                |
| `Wire.Payment.Rejected`     | Outbound wire could not be processed due to compliance reasons or was rejected by the Federal Reserve                                                                                                              |
| `Wire.Payment.Processed`    | Outbound wire has been transmitted to the Federal Reserve. Still possible the wire could be rejected                                                                                                               |
| `Wire.Payment.Sent`         | Outbound wire has been transmitted to the Federal Reserve and has been successfully acknowledged. IMAD number is now available.                                                                                    |
| `Wire.Payment.Received`     | Inbound wire has been received from another bank                                                                                                                                                                   |
| `Wire.Hold.Escalated`       | A hold relating to either an inbound or outbound wire was marked for escalation by a member of the Operations team. Commonly this is used to indicate additional documentation or action is needed by the partner. |
| `Wire.Payment.Authorizing ` |                                                                                                                                                                                                                    |

## Checks events

See Checks [webhook events](docId\:cWUBvaS0BDIfokyxu5LhQ) for some examples.

| Event Name                  | Description                                                                                                                                                                                                         |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Check.Payment.Sent`        | A check deposit has been sent to the Federal Reserve for clearing                                                                                                                                                   |
| `Check.Payment.Received`    | A check drawn on an account in COS has been deposited at another bank and has been received from the Federal Reserve for posting                                                                                    |
| `Check.Payment.Canceled`    | An outbound payment has been canceled at the request of the partner                                                                                                                                                 |
| `Check.Payment.Rejected`    | Outbound check could not be processed due to compliance reasons or was rejected by the Federal Reserve                                                                                                              |
| `Check.Return.Received`     | A previously deposited check has been returned by the receiving bank                                                                                                                                                |
| `Check.Details.Changed`     | Details of a check have been changed                                                                                                                                                                                |
| `Check.Hold.Escalated`      | A hold relating to either an inbound or outbound check was marked for escalation by a member of the Operations team. Commonly this is used to indicate additional documentation or action is needed by the partner. |
| `Check.Policy.Changed`      | A check's Reg CC Policy has been updated                                                                                                                                                                            |
| `Check.PositivePay.Created` | A check has been authorized for Positive Pay                                                                                                                                                                        |
| `Check.PositivePay.Revoked` | A check's Positive Pay status has been revoked                                                                                                                                                                      |

## Crypto events

| Event Name                | Description                                                  |
| ------------------------- | ------------------------------------------------------------ |
| `Crypto.Payment.Sent`     | Outbound crypto payment successfully sent/broadcast to chain |
| `Crypto.Payment.Canceled` | Outbound payment canceled before blockchain initiation       |
| `Crypto.Payment.Rejected` | Outbound payment rejected during validation/compliance       |
| `Crypto.Payment.Received` | Inbound crypto payment credited to your account              |


[title] Change subledger title
[path] Accounts/Subledgers APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.SubAccount.Title.Changed](docId\:eAs8aFqW7M97baeZUC8Sr)&#x20;

## API reference

Changes the title on a subledger (subaccount).

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/subaccounts/{accountNumber}/title",
  "method": "PUT",
  "url": "    https://sandbox.crbcos.com/core/v1/dda/subaccounts/{accountNumber}/title",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "P9idftSfTSKm5GwLRp3lQ",
        "language": "curl",
        "code": "curl --location --request PUT 'https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/title' \\\n--data '{\n  \"title\": \"Devra business checking test\"\n}'",
        "customLabel": ""
      },
      {
        "id": "sjZ6ScuddiYhUaZx4C86K",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'PUT',\n  'url': 'https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/title',\n  'headers': {\n  },\n  body: '{\\r\\n  \"title\": \"Devra business checking acct\"\\r\\n}'\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "gDB_P0O6T95GP_EHqfwx2",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"title\\\": \\\"Devra business checking test\\\"\\r\\n}\"\nheaders = {}\nconn.request(\"PUT\", \"/core/v1/subaccounts/395388745774/title\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "FXvCnwdEDvWGa2RUa43LJ",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/title\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n  \\\"title\\\": \\\"Devra business checking test\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "U9BrpgYsCj1siiLdweM6D",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/title\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"title\": \"Devra business checking test\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "sjZ6ScuddiYhUaZx4C86K"
  },
  "results": {
    "languages": [
      {
        "id": "vjutubmVyYLoLEjt5Wkle",
        "language": "200",
        "code": "{\n    \"accountNumber\": \"395388745774\",\n    \"accountType\": \"Deposit\",\n    \"status\": \"Active\",\n    \"ledgerType\": \"Passthrough\",\n    \"productType\": \"Checking\",\n    \"title\": \"Devra business checking test\",\n    \"currentBalance\": 0,\n    \"availableBalance\": 0,\n    \"holdAmount\": 0,\n    \"transactionCount\": 0,\n    \"creditLimit\": 0,\n    \"currency\": \"usd\",\n    \"openedAt\": \"2026-04-20T08:27:10.133-04:00\",\n    \"masterAccountNumber\": \"2418494833\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"classification\": \"Personal\",\n    \"beneficiary\": {\n        \"countryCode\": \"US\"\n    },\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastMaintenanceAt\": \"2026-07-09T02:54:33.8957846-04:00\",\n    \"productId\": \"a68a0fa5-98fe-4cd5-b626-af5b0137e0cb\",\n    \"lastModifiedAt\": \"2026-07-09T02:54:33.8958295-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "vjutubmVyYLoLEjt5Wkle"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number for the subaccount (subledger) you want to change the title of",
        "": "Account number for the subaccount (subledger) you want to change the title of"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The subledger account number"
    },
    {
      "name": "accountType",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account type:\n- GeneralLedger\n- Deposit\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Subledger account status:\n- Closed\n- Active",
      "children": []
    },
    {
      "name": "ledgerType",
      "kind": "optional",
      "type": "string",
      "description": "Ledger type:\n- Passthrough\n- Direct",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "The name on the account. Usually this is the account holder name, but not always.",
      "children": []
    },
    {
      "name": "currentBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Current balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "availableBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Available amount of the balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "holdAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount of the hold (if any) placed on the account",
      "children": []
    },
    {
      "name": "transactionCount",
      "kind": "optional",
      "type": "Integer",
      "description": "Total number of transactions posted to the account",
      "children": []
    },
    {
      "name": "creditLimit",
      "kind": "optional",
      "type": "integer",
      "description": "Credit limit of the account customer",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was opened. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time that the account was closed.  The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Master account the subledger was opened under",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "Can be one of two types of beneficiaries:\n- Personal\n- Business",
      "children": []
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "Object",
      "description": "Beneficiary profile for this subledger",
      "children": [
        {
          "name": "referenceId",
          "kind": "optional",
          "type": "string",
          "description": "Your organization's reference identifier for the beneficiary of this subaccount"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "The first name of the beneficiary"
        },
        {
          "name": "middleName",
          "kind": "optional",
          "type": "string",
          "description": "The middle name of the beneficiary"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "The last name of the beneficiary"
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "If the beneficiary is a business or organization enter its name. If the beneficiary is an individual enter their full name."
        },
        {
          "name": "streetAddress1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
        },
        {
          "name": "streetAddress2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State name. We recommend you enter the 2-character state code."
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "The beneficiary phone number"
        },
        {
          "name": "emailAddress",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary email address. 255 character limit."
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "General notes about the beneficiary"
        },
        {
          "name": "taxIdType",
          "kind": "optional",
          "type": "string",
          "description": "Tax ID type for the beneficiary:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary tax ID number"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary birthdate in the format YYYY-MM-DD"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date the subledger was formed, in the format YYYY-MM-DD"
        }
      ]
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastMaintenanceAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the account last had maintenance performed on it. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastTransactedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "balances",
      "kind": "optional",
      "type": "object",
      "description": "There can be multiple account balances listed",
      "children": [
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Number of the account this information describes"
        },
        {
          "name": "isSubAccount",
          "kind": "optional",
          "type": "boolean",
          "description": "If the account balance presented is for a subledger, true. Otherwise false."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency held in the account"
        },
        {
          "name": "currentBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance including all transactions even if they have not yet settled"
        },
        {
          "name": "availableBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance available to the account holder"
        },
        {
          "name": "holdAmount",
          "kind": "optional",
          "type": "integer",
          "description": "Amount of funds that cannot yet be accessed because the funds are on hold"
        },
        {
          "name": "transactionCount",
          "kind": "optional",
          "type": "integer",
          "description": "Number of transactions in the last period"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastTransactedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddasubaccountsaccountnumbertitle",
  "legacyHash": "ACf5kZIDXMSIHxQOJw3vm"
}
```
:::


[title] Deactivate customer
[path] Customer management/APIs/

## API reference

Deactivates a specific customer record using the Customer ID. The customer record is not deleted.

:::hint{type="warning"}
If the customer to be deactivated has a relationship with an account, you cannot deactivate the customer record.&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{id}",
  "method": "DELETE",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "MLk-ypcj_mEBM3hc_O1v9",
        "language": "curl",
        "code": "curl --location --request DELETE 'https://sandbox.crbcos.com/core/v1/cm/customers/68f217df-f9f4-4bd6-8568-b39900888a57'",
        "customLabel": ""
      },
      {
        "id": "9FcoCAkXvJ6nlNMHwOqJH",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'DELETE',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/68f217df-f9f4-4bd6-8568-b39900888a57',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "fqLYzKHnp7mZOA8RsN6ot",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"DELETE\", \"/core/v1/cm/customers/68f217df-f9f4-4bd6-8568-b39900888a57\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "NiVnc7ZwBgR9ueJupdWmI",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/68f217df-f9f4-4bd6-8568-b39900888a57\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "1o1fdEs6SpqxwJTgRQwYZ",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/68f217df-f9f4-4bd6-8568-b39900888a57\"\n  method := \"DELETE\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "MLk-ypcj_mEBM3hc_O1v9"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "code": "{\n    \"id\": \"68f217df-f9f4-4bd6-8568-b39900888a57\",\n    \"cifNumber\": \"591180301965\",\n    \"classification\": \"Personal\",\n    \"status\": \"Inactive\",\n    \"ofac\": \"Clear\",\n    \"pepScan\": \"Clear\",\n    \"internalList\": \"Clear\",\n    \"name\": {\n        \"firstName\": \"Frank\",\n        \"lastName\": \"Thompson\",\n        \"fullName\": \"Frank Thompson\"\n    },\n    \"profile\": {\n        \"regO\": false,\n        \"citizenshipCountryCode\": \"US\",\n        \"politicallyExposedPerson\": false,\n        \"enableBackupWithholding\": false,\n        \"backupWithholdingPercent\": 0,\n        \"taxIdType\": \"Ssn\",\n        \"taxId\": \"555663232\",\n        \"birthDate\": \"1972-03-08\",\n        \"riskRating\": \"Low\",\n        \"privacyOptOut\": true\n    },\n    \"createdAt\": \"2025-11-18T03:17:07.703-05:00\",\n    \"lastModifiedAt\": \"2026-07-01T06:16:12.387589-04:00\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"dueDiligence\": {\n        \"employmentStatus\": \"Employed\",\n        \"occupation\": \"Technology\",\n        \"occupationDescription\": \"Support\",\n        \"industry\": \"Finance\",\n        \"incomeSource\": \"Salary\",\n        \"incomeState\": \"NY\",\n        \"incomeCountryCode\": \"US\",\n        \"employer\": \"Cross River\",\n        \"employerState\": \"NJ\",\n        \"employerCountryCode\": \"US\",\n        \"sourceOfFunds\": \"Salary\",\n        \"wealthSource\": \"Salary\",\n        \"wealthSourceDescription\": \"Salary\",\n        \"annualIncome\": 4500000\n    },\n    \"clientIdentifier\": \"35ba6120-f860-4caa-9479-b5aaebeca49d\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zuoamZSUzJOVAnQseRBuz"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The unique ID assigned to the customer when the customer record is created. The ID is in GUID format.",
        "": "The unique ID assigned to the customer when the customer record is created. The ID is in GUID format."
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The customerId of the customer record"
    },
    {
      "name": "cifNumber",
      "kind": "optional",
      "type": "string",
      "description": "The Customer Identification File (CIF) number is internal to Cross River, used to identify customers uniquely for compliance purposes",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "The classification type of the customer:\n- Personal (an individual)\n- Business (a legal entity)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the customer record\n- Inactive\n- Active",
      "children": []
    },
    {
      "name": "ofac",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "pepScan",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "internalList",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "name",
      "kind": "optional",
      "type": "object",
      "description": "Customer name in detail. Business customers return only the entityName and fullName. Personal customers return all other fields if they have values.",
      "children": [
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "For a business customer, the legal name of the business"
        },
        {
          "name": "prefix",
          "kind": "optional",
          "type": "string",
          "description": "Prefix for name"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "Customer first name"
        },
        {
          "name": "middleName",
          "kind": "optional",
          "type": "string",
          "description": "Customer middle name"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Customer last name"
        },
        {
          "name": "suffix",
          "kind": "optional",
          "type": "string",
          "description": "Suffix for the name"
        },
        {
          "name": "preferredName",
          "kind": "optional",
          "type": "string",
          "description": "Customer preferred name"
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Customer's entire name including middle initial. For a business customer this will be identical to the entityName."
        }
      ]
    },
    {
      "name": "profile",
      "kind": "required",
      "type": "object",
      "description": "Customer banking-relevant information",
      "": "Customer banking-relevant information",
      "children": [
        {
          "name": "taxIdType",
          "kind": "required",
          "type": "string",
          "description": "Tax ID type for the customer:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "required",
          "type": "string",
          "description": "Tax ID number"
        },
        {
          "name": "riskRating",
          "kind": "required",
          "type": "string",
          "description": "Customer risk rating:\n- Low\n- Medium\n- High"
        },
        {
          "name": "regO",
          "kind": "optional",
          "type": "boolean",
          "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity, but is required for an individual."
        },
        {
          "name": "citizenshipCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country of citizenship (2 character ISO code)"
        },
        {
          "name": "politicallyExposedPerson",
          "kind": "optional",
          "type": "boolean",
          "description": "Politically exposed person (PEP). True if PEP, otherwise false. \nThis attribute is not relevant for a business entity, but is required for an individual."
        },
        {
          "name": "enableBackupWithholding",
          "kind": "optional",
          "type": "boolean",
          "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false."
        },
        {
          "name": "backupWithholdingPercent",
          "kind": "optional",
          "type": "number",
          "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of birth in the format yyyy-mm-dd.\nThis attribute is not relevant for a business entity."
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date when legal entity was  formed. In the format yyyy-mm-dd.\nNot relevant for an individual."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Business entity legal classification. Also called Customer entity type."
        },
        {
          "name": "ownershipType",
          "kind": "optional",
          "type": "string",
          "description": "Relevant only for business entities:\n- Exempt\n- Excluded\n- NonProfit\n- LegalEntity"
        },
        {
          "name": "primaryOwnerCustomerId",
          "kind": "optional",
          "type": "string",
          "description": "Customer ID of the primary owner of a business account"
        },
        {
          "name": "parentEntityId",
          "kind": "optional",
          "type": "string",
          "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format."
        },
        {
          "name": "dateOfDeath",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the date of a customer's passing, should that occur. In the format yyyy-mm-dd."
        },
        {
          "name": "privacyOptOut",
          "kind": "optional",
          "type": "boolean",
          "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
        }
      ],
      "schema": [
        {
          "name": "taxIdType",
          "kind": "required",
          "type": "string",
          "description": "Tax ID type for the entity:\nSSN, EIN, ITIN, VAT, Foreign"
        },
        {
          "name": "taxId",
          "kind": "required",
          "type": "string",
          "description": "Tax ID number. 9 character minimum. 20 character maximum."
        },
        {
          "name": "riskRating",
          "kind": "required",
          "type": "string",
          "description": "Customer risk rating:\nLow, Medium, High"
        },
        {
          "name": "regO",
          "kind": "optional",
          "type": "boolean",
          "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity"
        },
        {
          "name": "citizenshipCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country of citizenship (2 characters)"
        },
        {
          "name": "politicallyExposedPerson",
          "kind": "optional",
          "type": "boolean",
          "description": "Politically exposed person (PEP). True if PEP, otherwise false.\nThis attribute is not relevant for a business entity"
        },
        {
          "name": "enableBackupWithholding",
          "kind": "optional",
          "type": "boolean",
          "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false"
        },
        {
          "name": "backupWithholdingPercent",
          "kind": "optional",
          "type": "integer",
          "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of birth in the format \"yyyy-mm-dd\".\nThis attribute is not relevant for a business entity"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date when legal entity was  formed. In the format \"yyyy-mm-dd\".\nNot relevant for an individual"
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Business entity legal classification. Also called Customer entity type"
        },
        {
          "name": "Customer entity type",
          "kind": "optional",
          "type": "string",
          "description": "Exempt, Excluded, NonProfit, LegalEntity"
        },
        {
          "name": "primaryOwnerCustomerId",
          "kind": "optional",
          "type": "string",
          "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format"
        },
        {
          "name": "parentEntityId",
          "kind": "optional",
          "type": "string",
          "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format"
        },
        {
          "name": "dateOfDeath",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the date of a customer's passing, should that occur. In the format \"yyyy-mm-dd\"."
        },
        {
          "name": "privacyOptOut",
          "kind": "optional",
          "type": "boolean",
          "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
        }
      ]
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "dueDiligence",
      "kind": "optional",
      "type": "object",
      "description": "Details for due diligence compliance for an individual customer. To  be used when required.",
      "": "Details for due diligence compliance for an individual customer. To  be used when required",
      "children": [
        {
          "name": "employmentStatus",
          "kind": "optional",
          "type": "string",
          "description": "How and if the customer is employed:\n- Employed\n- SelfEmployed\n- Retired\n- Unemployed\n- Student"
        },
        {
          "name": "occupation",
          "kind": "optional",
          "type": "string",
          "description": "Possible occupation types:\n- Executive\n- Sales\n- Consulting\n- Government\n- Healthcare\n- FinanceAccounting\n- Technology\n- ScienceEngineering\n- FoodServices\n- LegalServices\n- Manufacturing\n- Other"
        },
        {
          "name": "occupationDescription",
          "kind": "optional",
          "type": "string",
          "description": "Any further details needed about the customer's occupation"
        },
        {
          "name": "industry",
          "kind": "optional",
          "type": "string",
          "description": "Possible industries:\n- Agriculture\n- Mining\n- Utilities\n- Construction\n- Manufacturing\n- ChemicalManufacturing\n- MerchantWholesale\n- Automotive\n- RetailFurnishing\n- RetailElectronics\n- RetailHome\n- RetailFood\n- HealthStores\n- Gasoline\n- RetailClothing\n- RetailSporting\n- RetailNonStore\n- Transportation\n- Publishing\n- Finance\n- RealEstate\n- RentalServices\n- ProfessionalNonLegal\n- Accounting\n- Travel\n- EducationalMedical\n- PerformingArts\n- RecreationGambling\n- FoodService\n- Maintenance\n- Laundry\n- ReligiousCharity\n- PublicAdministration"
        },
        {
          "name": "incomeSource",
          "kind": "optional",
          "type": "string",
          "description": "Possible income sources:\n- Salary\n- SelfEmployed\n- Inheritance\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- FamilySupport"
        },
        {
          "name": "incomeState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer earns income"
        },
        {
          "name": "incomeCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO code of the country where the customer earns income"
        },
        {
          "name": "employer",
          "kind": "optional",
          "type": "string",
          "description": "Name of customer's employer"
        },
        {
          "name": "employerState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer employer is based"
        },
        {
          "name": "employerCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO code of the country where the customer's employer is based"
        },
        {
          "name": "sourceOfFunds",
          "kind": "optional",
          "type": "string",
          "description": "Customer funds the account from one of these sources:\n- SelfEmployed\n- GeneralEmployee\n- SeniorExecutive\n- Retired\n- Homemaker\n- InheritanceGift\n- Investment\n- Salary\n- BusinessOwner\n- Alimony\n- Retirement\n- Lottery\n- Annuity\n- TrustIncome\n- RealEstate\n- GovernmentBenefits\n- LegalSettlement"
        },
        {
          "name": "wealthSource",
          "kind": "optional",
          "type": "string",
          "description": "Source of customer wealth:\n- Salary\n- SelfEmployed\n- Inheritance\n- FamilySupport\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- BusinessSale\n- Other"
        },
        {
          "name": "wealthSourceDescription",
          "kind": "optional",
          "type": "string",
          "description": "Further details about the customer's source of wealth"
        },
        {
          "name": "annualIncome",
          "kind": "optional",
          "type": "integer",
          "description": "Customer annual income"
        }
      ],
      "schema": [
        {
          "name": "employmentStatus",
          "kind": "optional",
          "type": "string",
          "description": "How and if the customer is employed:\n\"Employed\"\n\"SelfEmployed\"\n\"Retired\"\n\"Unemployed\"\n\"Student\""
        },
        {
          "name": "occupation",
          "kind": "optional",
          "type": "string",
          "description": "Possible occupation types:\n\"Executive\"\n\"Sales\"\n\"Consulting\"\n\"Government\"\n\"Healthcare\"\n\"FinanceAccounting\"\n\"Technology\"\n\"ScienceEngineering\"\n\"FoodServices\"\n\"LegalServices\"\n\"Manufacturing\"\n\"Other\""
        },
        {
          "name": "occupationDescription",
          "kind": "optional",
          "type": "string",
          "description": "Any further details needed about the customer's occupation. Up to 255 characters"
        },
        {
          "name": "industry",
          "kind": "optional",
          "type": "string",
          "description": "Possible industries:\nAgriculture\nMining\nUtilities\nConstruction\nManufacturing\nChemicalManufacturing\nMerchantWholesale\nAutomotive\nRetailFurnishing\nRetailElectronics\nRetailHome\nRetailFood\nHealthStores\nGasoline\nRetailClothing\nRetailSporting\nRetailNonStore\nTransportation\nPublishing\nFinance\nRealEstate\nRentalServices\nProfessionalNonLegal\nAccounting\nTravel\nEducationalMedical\nPerformingArts\nRecreationGambling\nFoodService\nMaintenance\nLaundry\nReligiousCharity\nPublicAdministration"
        },
        {
          "name": "incomeSource",
          "kind": "optional",
          "type": "string",
          "description": "Possible income sources:\nSalary\nSelfEmployed\nInheritance\nInvestments\nRetirement\nRentalIncome\nGovernmentBenefits\nFamilySupport"
        },
        {
          "name": "incomeState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer earns income"
        },
        {
          "name": "incomeCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code of the country where the customer earns income"
        },
        {
          "name": "employer",
          "kind": "optional",
          "type": "string",
          "description": "Name of customer's employer"
        },
        {
          "name": "employerState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer employer is based"
        },
        {
          "name": "employerCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code of the country where the customer's employer is based"
        },
        {
          "name": "sourceOfFunds",
          "kind": "optional",
          "type": "string",
          "description": "Customer funds the account from one of these sources:\nSelfEmployed\nGeneralEmployee\nSeniorExecutive\nRetired\nHomemaker\nInheritanceGift\nInvestment\nSalary\nBusinessOwner\nAlimony\nRetirement\nLottery\nAnnuity\nTrustIncome\nRealEstate\nGovernmentBenefits\nLegalSettlement"
        },
        {
          "name": "wealthSource",
          "kind": "optional",
          "type": "string",
          "description": "Source of customer wealth:\nSalary\nSelfEmployed\nInheritance\nFamilySupport\nInvestments\nRetirement\nRentalIncome\nGovernmentBenefits\nBusinessSale\nOther"
        },
        {
          "name": "wealthSourceDescription",
          "kind": "optional",
          "type": "string",
          "description": "Further details about the customer's source of wealth. 255 characters maximum"
        },
        {
          "name": "annualIncome",
          "kind": "optional",
          "type": "integer",
          "description": "Customer annual income"
        }
      ]
    },
    {
      "name": "businessDueDiligence",
      "kind": "optional",
      "type": "object",
      "description": "Details for due diligence compliance for a business entity. To be used when required",
      "": "Details for due diligence compliance for a business entity. To be used when required",
      "children": [
        {
          "name": "natureOfBusiness",
          "kind": "optional",
          "type": "string",
          "description": "Nature of the business"
        },
        {
          "name": "naics",
          "kind": "optional",
          "type": "string",
          "description": "Business's North American Industry Classification System code"
        },
        {
          "name": "merchantCategoryCode",
          "kind": "optional",
          "type": "string",
          "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide. nn characters maximum"
        },
        {
          "name": "businessUrl",
          "kind": "optional",
          "type": "string",
          "description": "URL of the business"
        },
        {
          "name": "relationshipFormationDate",
          "kind": "optional",
          "type": "string",
          "description": "The date the relationship was formed"
        }
      ],
      "schema": [
        {
          "name": "natureOfBusiness",
          "kind": "optional",
          "type": "string",
          "description": "255 characters maximum"
        },
        {
          "name": "naics",
          "kind": "optional",
          "type": "string",
          "description": "Business's North American Industry Classification System code"
        },
        {
          "name": "merchantCategoryCode",
          "kind": "optional",
          "type": "string",
          "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide. nn characters maximum"
        },
        {
          "name": "businessUrl",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "relationshipFormationDate",
          "kind": "optional",
          "type": "string",
          "description": ""
        }
      ]
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum",
      "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum"
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomersid",
  "legacyHash": "JJv8JXzfi5G3T3o6WsWGb"
}
```
:::


[title] Deposit sweeps APIs
[path] Accounts/


[title] Retrieve wallet tokens
[path] Cards/APIs/Wallet Tokenization APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- Cards.Token.ActivationReceived
- Cards.Token.CompletionReceived
- Cards.Token.ProvisioningReceived

## API reference

Retrieve all wallet tokens associated with a card.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{cardId}/tokens",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/tokens",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens',\n  'headers': {\n  }\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "[\n    {\n        \"id\": \"c25cabee-2533-4a46-a52b-c74991559bd7\",\n        \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",\n        \"createdAt\": \"2026-05-19T09:18:20.24664-04:00\",\n        \"status\": \"ACTIVE\",\n        \"channelProvisioningType\": \"WALLET_MANUAL\",\n        \"tokenRequestor\": {\n            \"name\": \"APPLE_PAY\",\n            \"id\": \"40010030273\"\n        },\n        \"tokenUniqueReference\": \"DNITHE9081730203478143\",\n        \"dPanLast4\": \"0098\",\n        \"lastModifiedAt\": \"2026-05-19T09:39:14.219418-04:00\"\n    },\n    {\n        \"id\": \"cbd6c950-1417-4c87-ba18-99fdfd72d9a6\",\n        \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",\n        \"createdAt\": \"2026-05-19T09:13:47.524453-04:00\",\n        \"status\": \"ACTIVE\",\n        \"channelProvisioningType\": \"WALLET_MANUAL\",\n        \"tokenRequestor\": {\n            \"name\": \"APPLE_PAY\",\n            \"id\": \"40010030273\"\n        },\n        \"tokenUniqueReference\": \"DNITHE9385136836831489\",\n        \"dPanLast4\": \"0098\",\n        \"lastModifiedAt\": \"2026-05-19T09:18:25.028979-04:00\"\n    }\n]",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "cardId"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Current status of wallet token. ACTIVE, SUSPENDED or DELETED.",
      "children": []
    },
    {
      "name": "channelProvisioningType",
      "kind": "optional",
      "type": "string",
      "description": "Method used to provision this token (e.g., MOBILE_APP, ECOMMERCE).",
      "children": []
    },
    {
      "name": "tokenRequester",
      "kind": "optional",
      "type": "object",
      "description": "Identifier of the token service provider requesting tokenization (e.g. Apple Pay).",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Display name of the wallet or token service provider"
        },
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier for this wallet token in GUID format."
        }
      ]
    },
    {
      "name": "tokenUniqueReference",
      "kind": "optional",
      "type": "string",
      "description": "Unique reference identifier assigned by the token service provider.",
      "children": []
    },
    {
      "name": "dPanLast4",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the device-specific PAN (DPAN) used for the tokenized transaction.",
      "children": []
    },
    {
      "name": "paymentAccountReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "Reference linking this token to the payment account/PAN.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardscardidtokens",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] API Basics
[path] /

- [API structure](docId\:pUTTCwQ5SKLzxYzIn5D1b): Our APIs are organized around REST, have object oriented URLs, accept form-encoded request bodies, return JSON-encoded responses, and use standard HTTP response codes, authentication, and methods.
- [Static IPs](docId\:z3wbkvnCkkie3kEJtxLI9): At Cross River you need to allowlist your *static*, *public* IP address before you can access our products. Your IP is allowlisted as part of the partner onboarding process.
- [Idempotency](docId\:xQC2lRsG0xVv_9NMkqxKk): Cross River's COS system supports idempotency to retry requests without the risk of performing the request multiple times. This is especially useful in situations where there is a network outage, and you aren’t sure if a previous request has been processed successfully.
- [Pagination](docId:6EKvQUYWeVh9x4zxmuKlJ): Pagination is a process that divides a large dataset into smaller chunks. All endpoints that return a list of resources support pagination.
- [API versioning](docId\:IPfs2Poaow-MlHLbo0Yc3): All API endpoints contain a numbered version in the URL. Whenever breaking changes are made to the API, a new major version will be created.
- [HTTP status codes](docId\:O5LkHHUbBs7rmu7PXVSjP): Standard HTTP status codes that our system might return.


[title] Webhooks FAQ
[path] Webhooks intro/COS webhooks/

## Webhooks – Frequently Asked Questions

This section answers common questions about Webhooks.

**What webhook events are available?                                                                                                    &#x20;**&#x50;lease refer to [COS webhooks](docId\:BN5XtgkJogBe-CtwomCbS) &#x20;

**Why is my webhook status&#x20;*****Suspended*****?                                                                             &#x20;***Suspended* status means that we could not successfully deliver an event to one of your registrations.&#x20;

**What is the retention period of webhooks?                                                                            &#x20;**&#x43;urrently there is no limitation to the retention period. However, webhooks expire after 7 days and cannot be redelivered.

**What is the maximum number of resources included in a single webhook event?           &#x20;**&#x35;0k for events received in basic format                                                                                      1k for events in extended format.

**How are webhook failures handled?                                                                                                                              &#x20;**&#x41;fter a delivery failure, COS will retry 3 additional times after approximately 30 - 60 seconds before your registration updates to a *Suspended* status. If we still can't deliver the event after several retries, its registration status changes to *Suspended* and we start to queue all your events for your registration. No further attempts are made to deliver previous or future events until your registration returns to an *Active* status.

**What is the IP address from which COS webhooks are sent?                                                     &#x20;**&#x46;or sandbox it is 66.206.202.40 and for production it is 66.206.202.41.

[title] Registered by ID
[path] Webhooks intro/COS webhooks/Webhook management: COS/

:::ApiMethodV2
```json
{
  "name": "Endpoint : /webhooks/v1/registrations/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/webhooks/v1/registrations/{id}",
  "description": "Returns a webhook registration by ID",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hCYPz7RkDPiRgqCZ3Y03q",
        "language": "curl",
        "code": "curl --location --globoff 'https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2'",
        "customLabel": ""
      },
      {
        "id": "Ie4lrs8ar93iTTcwDi-qX",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "M1AprY75Enlf2PdqCZEi6",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2\"\n\npayload = {}\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "z80H18TaPMrbFv1NG1HX8",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "rYxsgWYlULMKK5kOWMlgh",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hCYPz7RkDPiRgqCZ3Y03q"
  },
  "results": {
    "languages": [
      {
        "id": "uzc6vEDFILyge5Prtvvwe",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"8d6115c0-2a88-4a58-b731-b306002e8bc2\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"eventName\": \"Cards.Card.Activated\",\n    \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\",\n    \"consecutiveErrors\": 0,\n    \"status\": \"Active\",\n    \"type\": \"Push\",\n    \"format\": \"Extended\"\n}"
      }
    ],
    "selectedLanguageId": "uzc6vEDFILyge5Prtvvwe"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format.",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format."
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "eventName",
      "kind": "optional",
      "type": "string",
      "description": "Webhook event being reported",
      "children": []
    },
    {
      "name": "callbackUrl",
      "kind": "optional",
      "type": "string",
      "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to . 255 character limit.'s allowlist. SSL required.",
      "children": []
    },
    {
      "name": "authUsername",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication username to include in header of event",
      "children": []
    },
    {
      "name": "authPassword",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication password to include in event header",
      "children": []
    },
    {
      "name": "consecutiveErrors",
      "kind": "optional",
      "type": "Integer",
      "description": "The number of consecutive errors",
      "children": []
    },
    {
      "name": "lastError",
      "kind": "optional",
      "type": "string",
      "description": "Description of the last error",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of registration:\n- Active\n- Suspended\n- Restarting",
      "children": []
    },
    {
      "name": "type",
      "kind": "optional",
      "type": "string",
      "description": "Type of registration:\n- Push\n- Poll\n- File",
      "children": []
    },
    {
      "name": "format",
      "kind": "optional",
      "type": "string",
      "description": "Event format:\n- Basic\n- Extended",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-webhooksv1registrationsid",
  "legacyHash": "Tpc5QB8tiGiTvSNTfmm_l"
}
```
:::


[title] APIs
[path] Customer management/


[title] Delete beneficial owner
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:&#x20;

- [Core.Customer.BeneficialOwner.Removed](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;

## API reference

Delete the association of the beneficial owner to the business customer record.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{customerId}/beneficial-owners/{id}",
  "method": "DELETE",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/beneficial-owners/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "b2QWb9wn1DTrmAGdjZkxC",
        "language": "curl",
        "code": "curl --location --request DELETE 'https://sandbox.crbcos.com/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "ZpBCOCvuCGz5KITvrNnzR",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'DELETE',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "Va41mtJBVqpgPtIiLeS_C",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"DELETE\", \"/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "GMVW0UWNlhlK2CWJDCLM8",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "hAV1d17EyU_xo6d7K3v0h",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c\"\n  method := \"DELETE\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "b2QWb9wn1DTrmAGdjZkxC"
  },
  "results": {
    "languages": [
      {
        "id": "AtM1q1Y7kG6k2_cQ0iWb6",
        "language": "200",
        "code": "{\n    \"id\": \"7c6c3667-ad62-4a7f-992e-b3ae00bbf93c\",\n    \"customerId\": \"b73cf966-7886-40a0-88c5-af5b0138fc8c\",\n    \"ownerCustomerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"status\": \"Inactive\",\n    \"ownerTitle\": \"CEO\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"createdAt\": \"2025-12-09T06:24:23.45-05:00\",\n    \"lastModifiedAt\": \"2025-12-09T07:11:13.5328581-05:00\",\n    \"ownershipPercentage\": 90\n}",
        "customLabel": ""
      },
      {
        "id": "hHCNoqPXig0PAtEobVm_6",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2214,\n            \"message\": \"Entity customer must be a business\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "AtM1q1Y7kG6k2_cQ0iWb6"
  },
  "request": {
    "pathParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The customer ID of the customer record to update",
        "": "The customer ID of the customer record to update"
      },
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The ID returned in the response when the beneficial owner was added. This is in GUID format.",
        "": "The ID returned in the response when the beneficial owner was added. This is in GUID format."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "COS ID for the record, in GUID format"
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The customerId of the customer record being updated",
      "children": []
    },
    {
      "name": "ownerCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Beneficial owner Cross River customer ID (provided when the beneficial owner was onboarded to COS)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "boolean",
      "description": "Status of the customer record - can be 'Inactive' or 'Active'",
      "children": []
    },
    {
      "name": "ownerTitle",
      "kind": "optional",
      "type": "string",
      "description": "Title or role of the beneficial owner",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "ownershipPercentage",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the business this beneficial owner controls. Enter the percentage in real numbers. For example, if you enter 0.20 it means 0.20%. If you enter 20, it means 20%.",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomerscustomeridbeneficial-own",
  "legacyHash": "jsA4N-mBEpymRcWiGu1lK"
}
```
:::


[title] Get subledger info
[path] Accounts/Subledgers APIs/

## API reference

Returns information about a specific subledger account.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/subaccounts/{accountNumber}",
  "method": "GET",
  "url": "    https://sandbox.crbcos.com/core/v1/dda/subaccounts/{accountNumber}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "P9idftSfTSKm5GwLRp3lQ",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/subaccounts/302022615264' \\\n--header 'Authorization: Bearer <token>'",
        "customLabel": ""
      },
      {
        "id": "sjZ6ScuddiYhUaZx4C86K",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/subaccounts/302022615264',\n  'headers': {\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "gDB_P0O6T95GP_EHqfwx2",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"GET\", \"/core/v1/dda/subaccounts/302022615264\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "FXvCnwdEDvWGa2RUa43LJ",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/subaccounts/302022615264\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Authorization\"] = \"Bearer <token>\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "U9BrpgYsCj1siiLdweM6D",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/subaccounts/302022615264\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "P9idftSfTSKm5GwLRp3lQ"
  },
  "results": {
    "languages": [
      {
        "id": "vjutubmVyYLoLEjt5Wkle",
        "language": "200",
        "code": "{\n    \"accountNumber\": \"302022615264\",\n    \"accountType\": \"Deposit\",\n    \"status\": \"Active\",\n    \"ledgerType\": \"Passthrough\",\n    \"productType\": \"Checking\",\n    \"title\": \"Jerry Penn\",\n    \"currentBalance\": 0,\n    \"availableBalance\": 0,\n    \"holdAmount\": 0,\n    \"transactionCount\": 0,\n    \"creditLimit\": 0,\n    \"currency\": \"usd\",\n    \"openedAt\": \"2025-06-24T03:05:04.797-04:00\",\n    \"masterAccountNumber\": \"2819503463\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"classification\": \"Personal\",\n    \"beneficiary\": {\n        \"firstName\": \"Jerry\",\n        \"lastName\": \"Penn\",\n        \"streetAddress1\": \"12 Main St\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastMaintenanceAt\": \"2025-06-24T03:05:04.797-04:00\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"lastModifiedAt\": \"2025-06-24T03:05:04.8043224-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "vjutubmVyYLoLEjt5Wkle"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number for the subaccount (subledger) you want to to retrieve information about",
        "": "Account number for the subaccount (subledger) you want to to retrieve information about"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The subledger account number"
    },
    {
      "name": "accountType",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account type:\n- GeneralLedger\n- Deposit\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Subledger account status:\n- Closed\n- Active",
      "children": []
    },
    {
      "name": "ledgerType",
      "kind": "optional",
      "type": "string",
      "description": "Ledger type:\n- Passthrough\n- Direct",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "The name on the account. Usually this is the account holder name, but not always.",
      "children": []
    },
    {
      "name": "currentBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Current balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "availableBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Available amount of the balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "holdAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount of the hold (if any) placed on the account",
      "children": []
    },
    {
      "name": "transactionCount",
      "kind": "optional",
      "type": "Integer",
      "description": "Total number of transactions posted to the account",
      "children": []
    },
    {
      "name": "creditLimit",
      "kind": "optional",
      "type": "integer",
      "description": "Credit limit of the account customer",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was opened. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time that the account was closed.  The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Master account the subledger was opened under",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "Can be one of two types of beneficiaries:\n- Personal\n- Business",
      "children": []
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "Object",
      "description": "Beneficiary profile for this subledger",
      "children": [
        {
          "name": "referenceId",
          "kind": "optional",
          "type": "string",
          "description": "Your organization's reference identifier for the beneficiary of this subaccount"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "The first name of the beneficiary"
        },
        {
          "name": "middleName",
          "kind": "optional",
          "type": "string",
          "description": "The middle name of the beneficiary"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "The last name of the beneficiary"
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "If the beneficiary is a business or organization enter its name. If the beneficiary is an individual enter their full name."
        },
        {
          "name": "streetAddress1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
        },
        {
          "name": "streetAddress2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State name. We recommend you enter the 2-character state code."
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "The beneficiary phone number"
        },
        {
          "name": "emailAddress",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary email address. 255 character limit."
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "General notes about the beneficiary"
        },
        {
          "name": "taxIdType",
          "kind": "optional",
          "type": "string",
          "description": "Tax ID type for the beneficiary:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary tax ID number"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary birthdate in the format YYYY-MM-DD"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date the subledger was formed, in the format YYYY-MM-DD"
        }
      ]
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastMaintenanceAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the account last had maintenance performed on it. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastTransactedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "balances",
      "kind": "optional",
      "type": "object",
      "description": "There can be multiple account balances listed",
      "children": [
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Number of the account this information describes"
        },
        {
          "name": "isSubAccount",
          "kind": "optional",
          "type": "boolean",
          "description": "If the account balance presented is for a subledger, true. Otherwise false."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency held in the account"
        },
        {
          "name": "currentBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance including all transactions even if they have not yet settled"
        },
        {
          "name": "availableBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance available to the account holder"
        },
        {
          "name": "holdAmount",
          "kind": "optional",
          "type": "integer",
          "description": "Amount of funds that cannot yet be accessed because the funds are on hold"
        },
        {
          "name": "transactionCount",
          "kind": "optional",
          "type": "integer",
          "description": "Number of transactions in the last period"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastTransactedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddasubaccountsaccountnumber",
  "legacyHash": "scJ5pIX3Qa0o7aHBfyocS"
}
```
:::


[title] Simulate card reversal
[path] Cards/APIs/Card Issuing APIs/

## API reference

This endpoint is used to reverse an existing authorization using the retrievalReferenceNumber returned in the authorization endpoint. This reverses the original authorization placed on the account and removes it from the deposit account activity. The amount in this request can be any value and does not have to be the same amount as the original clearing transaction, which allows for a partial amount reversal.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/reversal",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/reversal",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "WJQTgOAuPddzxBwHanjiK",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/reversal' \\\n--data '{\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n  \"retrievalReferenceNumber\": \"654492282074\",\n  \"amount\": \"123\"\n}'",
        "customLabel": ""
      },
      {
        "id": "Khs-3Vl2Kvo9_LGEhSZV_",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/simulate/reversal',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"654492282074\\\",\\r\\n  \\\"amount\\\": \\\"123\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "cwjoT8DKvUFLyB-Y9NlX2",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/reversal\"\n\npayload = \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"654492282074\\\",\\r\\n  \\\"amount\\\": \\\"123\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "ytk_hVbhQLK21gbL8OK_z",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/reversal\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"654492282074\\\",\\r\\n  \\\"amount\\\": \\\"123\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "l7bh1-d1Sri8GJJvc8sJt",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/reversal\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",`+\"\n\"+`\n  \"retrievalReferenceNumber\": \"654492282074\",`+\"\n\"+`\n  \"amount\": \"123\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "WJQTgOAuPddzxBwHanjiK"
  },
  "results": {
    "languages": [
      {
        "id": "dbsafFgKff2jE0bhPNJva",
        "language": "400",
        "customLabel": "",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2350,\n            \"message\": \"Authorization already been cleared\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "dbsafFgKff2jE0bhPNJva"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      },
      {
        "name": "retrievalReferenceNumber",
        "kind": "optional",
        "type": "string",
        "description": "Card network generated identifier used to uniquely track a transaction across systems",
        "": "Card network generated identifier used to uniquely track a transaction across systems"
      },
      {
        "name": "systemTraceAuditNumber",
        "kind": "optional",
        "type": "string",
        "description": "Unique transaction ID assigned by the acquirer of the transaction for audit purposes",
        "": "Unique transaction ID assigned by the acquirer of the transaction for audit purposes"
      },
      {
        "name": "amount",
        "kind": "optional",
        "type": "integer",
        "description": "Monetary value of the transaction in the transaction currency",
        "": "Monetary value of the transaction in the transaction currency"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulatereversal",
  "legacyHash": "unv_-qe4bRDWltFygFYto"
}
```
:::


[title] 
[path] Cards/APIs/


[title] Simulate card auth
[path] Cards/APIs/Card Issuing APIs/

## API Reference

Simulates merchant authorization that affects the available balance on the deposit account. To simulate a declined transaction ensure the amount of the authorization is greater than the COS account balance.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/authorization",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/authorization",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "WJQTgOAuPddzxBwHanjiK",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/authorization' \\\n--data '{\n  \"amount\": 1999,\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n  \"merchantCountryCode\": \"US\",\n  \"merchantName\": \"StreamFlix\",\n  \"merchantStreet\": \"123 Any St\",\n  \"merchantCity\": \"Anywhere\",\n  \"merchantState\": \"NY\",\n  \"merchantPostalCode\": \"10001\",\n  \"cardNetwork\": \"Visa\",\n  \"additionalAmounts\": [],\n  \"processingCode\": \"BillPayment\"\n}'",
        "customLabel": ""
      },
      {
        "id": "I3z8bukvzf3-BGXqjfZVK",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/simulate/authorization',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"amount\\\": 1999,\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [],\\r\\n  \\\"processingCode\\\": \\\"BillPayment\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "X3C7MrWwVMQmdnBlCRQ_n",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/authorization\"\n\npayload = \"{\\r\\n  \\\"amount\\\": 1999,\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [],\\r\\n  \\\"processingCode\\\": \\\"BillPayment\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "wQZEsgWvnfqfNlYftSkd8",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/authorization\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"amount\\\": 1999,\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [],\\r\\n  \\\"processingCode\\\": \\\"BillPayment\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "ko-VcmgLNWaZR5B2QpS51",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/authorization\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"amount\": 1999,`+\"\n\"+`\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",`+\"\n\"+`\n  \"merchantCountryCode\": \"US\",`+\"\n\"+`\n  \"merchantName\": \"StreamFlix\",`+\"\n\"+`\n  \"merchantStreet\": \"123 Any St\",`+\"\n\"+`\n  \"merchantCity\": \"Anywhere\",`+\"\n\"+`\n  \"merchantState\": \"NY\",`+\"\n\"+`\n  \"merchantPostalCode\": \"10001\",`+\"\n\"+`\n  \"cardNetwork\": \"Visa\",`+\"\n\"+`\n  \"additionalAmounts\": [],`+\"\n\"+`\n  \"processingCode\": \"BillPayment\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "WJQTgOAuPddzxBwHanjiK"
  },
  "results": {
    "languages": [
      {
        "id": "dbsafFgKff2jE0bhPNJva",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"retrievalReferenceNumber\": \"644371423186\",\n    \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n}"
      }
    ],
    "selectedLanguageId": "dbsafFgKff2jE0bhPNJva"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "Monetary value of the transaction in the transaction currency",
        "": "Monetary value of the transaction in the transaction currency"
      },
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      },
      {
        "name": "merchantCountryCode",
        "kind": "required",
        "type": "string",
        "description": "Country code of the merchant",
        "": "Country code of the merchant"
      },
      {
        "name": "merchantName",
        "kind": "required",
        "type": "string",
        "description": "Name of the merchant",
        "": "Name of the merchant"
      },
      {
        "name": "merchantStreet",
        "kind": "required",
        "type": "string",
        "description": "Street address of the merchant",
        "": "Street address of the merchant"
      },
      {
        "name": "merchantCity",
        "kind": "required",
        "type": "string",
        "description": "City where the merchant is located",
        "": "City where the merchant is located"
      },
      {
        "name": "merchantState",
        "kind": "required",
        "type": "string",
        "description": "State where the merchant is located",
        "": "State where the merchant is located"
      },
      {
        "name": "merchantPostalCode",
        "kind": "required",
        "type": "string",
        "description": "Postal code of the merchant",
        "": "Postal code of the merchant"
      },
      {
        "name": "cardNetwork",
        "kind": "optional",
        "type": "string",
        "description": "Payment network used to process the transaction.\nSelect from:\n- Visa\n- Mastercard\n",
        "": "Payment network used to process the transaction.\nSelect from:\n- Visa\n- Mastercard\n"
      },
      {
        "name": "additionalAmounts",
        "kind": "optional",
        "type": "object",
        "description": "Array with amounts other than the transaction amount that are relevant to this transaction (e.g. fees).",
        "": "Array with amounts other than the transaction amount that are relevant to this transaction (e.g. fees).",
        "children": [
          {
            "name": "amountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- Unknown \n- LedgerBalance\n- AvailableBalance \n- AmountOwing\n- AmountDue \n- AccountAvailableCredit\n- AmountCurrencyConversionAssessment\n- OverLimitFee\n- OverPaymentFee \n- HealthcareEligibilityAmount\n- PerscriptionEligibilityAmount\n- CreditLine\n- PrepaidOnlineBillPayFeeAmount\n- BeginningBalance\n- AmountRemainingThisCycle\n- AmountCashBack\n- AmountGoodsAndServices\n- AmountSurcharge\n- HoldAmount\n- OriginalAmount\n- AuthorizedAmountStarAccess\n- FloorLimit\n- FeeAmount \n- CoPayAmount \n- AvailableCreditOrCheckAmount\n- CreditLimitOrTipService \n- CashDepositAmount \n- CheckDepositAmount\n- ForeignExchangeFee \n- MerchantLocalCurrencyCashBenefitAmount \n- CourtesyAmount \n- OriginalCashBackAmount \n- InterchangeFee\n- TotalAuthorizationAmount\n- ATMExcessUsageFee\n- CurrencyConversionExcessUsageFee"
          },
          {
            "name": "accountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- NotSpecified\n- Savings\n- Checking\n- Account\n- Universal"
          },
          {
            "name": "amount",
            "kind": "optional",
            "type": "integer",
            "description": "Monetray value of the transaction in the transaction currency."
          }
        ],
        "schema": [
          {
            "name": "amountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- Unknown \n- LedgerBalance\n- AvailableBalance \n- AmountOwing\n- AmountDue \n- AccountAvailableCredit\n- AmountCurrencyConversionAssessment\n- OverLimitFee\n- OverPaymentFee \n- HealthcareEligibilityAmount\n- PerscriptionEligibilityAmount\n- CreditLine\n- PrepaidOnlineBillPayFeeAmount\n- BeginningBalance\n- AmountRemainingThisCycle\n- AmountCashBack\n- AmountGoodsAndServices\n- AmountSurcharge\n- HoldAmount\n- OriginalAmount\n- AuthorizedAmountStarAccess\n- FloorLimit\n- FeeAmount \n- CoPayAmount \n- AvailableCreditOrCheckAmount\n- CreditLimitOrTipService \n- CashDepositAmount \n- CheckDepositAmount\n- ForeignExchangeFee \n- MerchantLocalCurrencyCashBenefitAmount \n- CourtesyAmount \n- OriginalCashBackAmount \n- InterchangeFee\n- TotalAuthorizationAmount\n- ATMExcessUsageFee\n- CurrencyConversionExcessUsageFee"
          },
          {
            "name": "accountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- NotSpecified\n- Savings\n- Checking\n- Account\n- Universal"
          },
          {
            "name": "amount",
            "kind": "optional",
            "type": "integer",
            "description": "Monetray value of the transaction in the transaction currency."
          }
        ]
      },
      {
        "name": "processingCode",
        "kind": "optional",
        "type": "string",
        "description": "Code indicating the transaction type and account types involved.\nSelect from:\n- Purchase\n- Withdrawal\n- DebitAdjustment\n- ConversionGuarantee\n- ConversionVerification\n- TravelerCheck\n- CashbackPurchase\n- AccountFunding\n- QuasiCash\n- FundsWithdrawal\n- CashDisbursement\n- DeferredGoods\n- DebitFee\n- CreditReturn\n- Deposit\n- CreditAdjustment\n- CheckDepositGuarantee\n- CheckDeposit\n- CashDeposit\n- OriginalCredit\n- PaymentTransaction\n- CreditDisbursement\n- AvailableFundsInquiry\n- BalanceInquiry\n- AccountVerification\n- AtmMiniStatement\n- EligibilityInquiry\n- CardholderTransfer\n- BillPayment\n- Payment\n- P2PPayment\n- PaymentFromThirdParty\n- P2PPaymentCredit\n- LoanPayment\n- PaymentEnclosed\n- PrepaidActivation\n- PinUnblock\n- PinChange\n- PV\n- PD\n- CB\n- Q2\n",
        "": "optional"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "retrievalReferenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Card network generated identifier used to uniquely track a transaction across systems.\nAutomatically generated reference (alphanumeric)"
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulateauthorization",
  "legacyHash": "unv_-qe4bRDWltFygFYto"
}
```
:::


[title] Replace card by ID
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Replaced](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

Order a replacement for damaged, lost or stolen cards using this endpoint. Damaged cards remain active until the cardholder activates the replacement card. Lost or stolen cards are immediately closed and a replacement card is issued.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/replace",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/replace",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/replace?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a' \\\n--header 'id: 8c6a53e0-83ad-4b76-b446-b300006a3e6a' \\\n--data '{\n  \"replaceReason\": \"Damaged\",\n  \"nameOnCard\": \"Daly Khol\",\n  \"shippingType\": \"Normal\",\n  \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\"\n}'",
        "customLabel": ""
      },
      {
        "id": "7Ei_DVlR-B_mqRvNRTXfG",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}/replace?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a',\n  'headers': {\n    'id': '8c6a53e0-83ad-4b76-b446-b300006a3e6a'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"replaceReason\\\": \\\"Damaged\\\",\\r\\n  \\\"nameOnCard\\\": \\\"Daly Khol\\\",\\r\\n  \\\"shippingType\\\": \\\"Normal\\\",\\r\\n  \\\"clientIdentifier\\\": \\\"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "TCzjaBZdZQ-p8mkr6BUEN",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/replace?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n\npayload = \"{\\r\\n  \\\"replaceReason\\\": \\\"Damaged\\\",\\r\\n  \\\"nameOnCard\\\": \\\"Daly Khol\\\",\\r\\n  \\\"shippingType\\\": \\\"Normal\\\",\\r\\n  \\\"clientIdentifier\\\": \\\"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\\\"\\r\\n}\"\nheaders = {\n  'id': '8c6a53e0-83ad-4b76-b446-b300006a3e6a'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "UuxNvvGfhszcz9_fC_fS5",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/replace?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"id\"] = \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\nrequest.body = \"{\\r\\n  \\\"replaceReason\\\": \\\"Damaged\\\",\\r\\n  \\\"nameOnCard\\\": \\\"Daly Khol\\\",\\r\\n  \\\"shippingType\\\": \\\"Normal\\\",\\r\\n  \\\"clientIdentifier\\\": \\\"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "GgAUrwwOLb0vkDvtxVreb",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/replace?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"replaceReason\": \"Damaged\",`+\"\n\"+`\n  \"nameOnCard\": \"Daly Khol\",`+\"\n\"+`\n  \"shippingType\": \"Normal\",`+\"\n\"+`\n  \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"id\", \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"1c243431-23b8-407c-afa4-b30000abbe0d\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Unactivated\",\n    \"statusReasonCode\": \"NotSet\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Daly Khol\",\n    \"previousCardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n    \"isPinSet\": false,\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"OrderPending\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"createdAt\": \"2025-06-18T06:25:17.6960428-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T06:25:17.6960428-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      },
      {
        "name": "request",
        "kind": "required",
        "type": "object",
        "description": "Array containing details about the request to replace the card.",
        "": "Array containing details about the request to replace the card.",
        "children": [
          {
            "name": "replaceReason",
            "kind": "required",
            "type": "string",
            "description": "Reason can be:\n- Damaged\n- Lost\n- FraudCompromised\n- Returned\n- Expired\n- Stolen"
          },
          {
            "name": "nameOnCard",
            "kind": "required",
            "type": "string",
            "description": "Full cardholder name as written on card"
          },
          {
            "name": "shippingType",
            "kind": "required",
            "type": "string",
            "description": "Values can be:\n- Normal\n- Expedited"
          },
          {
            "name": "clientIdentifier",
            "kind": "optional",
            "type": "string",
            "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum."
          },
          {
            "name": "cardDesignId",
            "kind": "optional",
            "type": "string",
            "description": "Maximum length of 36."
          }
        ],
        "schema": [
          {
            "name": "replaceReason",
            "kind": "required",
            "type": "string",
            "description": "Reason can be:\n- Damaged\n- Lost\n- FraudCompromised\n- Returned\n- Expired\n- Stolen"
          },
          {
            "name": "nameOnCard",
            "kind": "required",
            "type": "string",
            "description": "Full cardholder name as written on card"
          },
          {
            "name": "shippingType",
            "kind": "required",
            "type": "string",
            "description": "Values can be:\n- Normal\n- Expedited"
          },
          {
            "name": "clientIdentifier",
            "kind": "optional",
            "type": "string",
            "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum."
          },
          {
            "name": "cardDesignId",
            "kind": "optional",
            "type": "string",
            "description": "Maximum length of 36."
          }
        ]
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- FraudBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's Unique ID for the cardholder",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidreplace",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Add personal customer
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Core.Customer.Onboarded](docId\:rl8xMrOEgISTYbmE-Y98D)
- [Core.Customer.Ofac.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;
- [Core.Customer.PepScan.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)

## API reference

Creates a new customer record. The customer record contains information about the customer, including their full legal name, tax information, and details about an identification document such as a driver's license. The record might also contain any due dilligence data and contact information where needed.

A customer record is either personal or business. The *personal* customer record call is described below. A [business](docId:_txdfNUEc5BUraIyWib5F) customer record includes slightly different information.

Once a customer record exists, the customer can be associated with one or more [accounts](docId\:ZQyAf4oeI1rEzpBOI78MJ).

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "xK0mDfrnuxTC3HLNjR8-M",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/cm/customers' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"name\": {\n        \"firstName\": \"Brandon\",\n        \"lastName\": \"Sanderson\"\n    },\n    \"classification\": \"Personal\",\n    \"profile\": {\n        \"regO\": false,\n        \"citizenshipCountryCode\": \"US\",\n        \"politicallyExposedPerson\": false,\n        \"enableBackupWithholding\": false,\n        \"backupWithholdingPercent\": 0,\n        \"taxIdType\": \"Ssn\",\n        \"taxId\": \"\",\n        \"birthDate\": \"1980-03-06\",\n        \"riskRating\": \"Low\",\n        \"privacyOptOut\": true\n    },\n    \"dueDiligence\": {\n        \"employmentStatus\": \"Employed\",\n        \"occupation\": \"Technology\",\n        \"occupationDescription\": \"Support\",\n        \"industry\": \"Finance\",\n        \"incomeSource\": \"Salary\",\n        \"incomeState\": \"NJ\",\n        \"incomeCountryCode\": \"US\",\n        \"employer\": \"Cross River\",\n        \"employerState\": \"NJ\",\n        \"employerCountryCode\": \"US\",\n        \"sourceOfFunds\": \"Salary\",\n        \"wealthSource\": \"Salary\",\n        \"wealthSourceDescription\": \"Salary\",\n        \"annualIncome\": 4500000\n    },\n    \n    \"primaryAddress\": {\n        \"addressType\": \"Home\",\n        \"classification\": \"Residential\",\n        \"isPrimary\": true,\n        \"street1\": \"101 Main St\",\n        \"street2\": \"Apt 2\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"primaryPhone\": {\n        \"isPrimary\": true,\n        \"phoneType\": \"Mobile\",\n        \"phoneNumber\": \"2018087000\"\n    },\n    \"primaryEmail\": {\n        \"isPrimary\": true,\n        \"emailType\": \"Personal\",\n        \"emailAddress\": \"bsanderson@crossriver.com\"\n    },\n    \"primaryIdentification\": {\n        \"isPrimary\": true,\n        \"idNumber\": \"eccdd2a9-58da-400c-ac98-0dcb302a42d4\",\n        \"idType\": \"Other\",\n        \"issuedDate\": \"2022-08-18\",\n        \"expDate\": \"2027-08-18\",\n        \"verifiedDate\": \"2023-08-18\",\n        \"issuingAuthority\": \"Fintech\",\n        \"issuingStateOrProvince\": \"NJ\",\n        \"issuingCountryCode\": \"US\"\n    }\n}\n\n\n'",
        "customLabel": ""
      },
      {
        "id": "Sfds9Hmx9Sui1_6GJyU5q",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers',\n  'headers': {\n    'Content-Type': 'application/json'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n  \"name\": {\n    \"firstName\": \"Brandon\",\n    \"lastName\": \"Sanderson\"\n  },\n  \"classification\": \"Personal\",\n  \"profile\": {\n    \"regO\": false,\n    \"citizenshipCountryCode\": \"US\",\n    \"politicallyExposedPerson\": false,\n    \"enableBackupWithholding\": false,\n    \"backupWithholdingPercent\": 0,\n    \"taxIdType\": \"Ssn\",\n    \"taxId\": \"\",\n    \"birthDate\": \"1980-03-06\",\n    \"riskRating\": \"Low\",\n    \"privacyOptOut\": true\n  },\n  \"dueDiligence\": {\n    \"employmentStatus\": \"Employed\",\n    \"occupation\": \"Technology\",\n    \"occupationDescription\": \"Support\",\n    \"industry\": \"Finance\",\n    \"incomeSource\": \"Salary\",\n    \"incomeState\": \"NJ\",\n    \"incomeCountryCode\": \"US\",\n    \"employer\": \"Cross River\",\n    \"employerState\": \"NJ\",\n    \"employerCountryCode\": \"US\",\n    \"sourceOfFunds\": \"Salary\",\n    \"wealthSource\": \"Salary\",\n    \"wealthSourceDescription\": \"Salary\",\n    \"annualIncome\": 4500000\n  },\n  \"primaryAddress\": {\n    \"addressType\": \"Home\",\n    \"classification\": \"Residential\",\n    \"isPrimary\": true,\n    \"street1\": \"101 Main St\",\n    \"street2\": \"Apt 2\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\"\n  },\n  \"primaryPhone\": {\n    \"isPrimary\": true,\n    \"phoneType\": \"Mobile\",\n    \"phoneNumber\": \"2018087000\"\n  },\n  \"primaryEmail\": {\n    \"isPrimary\": true,\n    \"emailType\": \"Personal\",\n    \"emailAddress\": \"bsanderson@crossriver.com\"\n  },\n  \"primaryIdentification\": {\n    \"isPrimary\": true,\n    \"idNumber\": \"eccdd2a9-58da-400c-ac98-0dcb302a42d4\",\n    \"idType\": \"Other\",\n    \"issuedDate\": \"2022-08-18\",\n    \"expDate\": \"2027-08-18\",\n    \"verifiedDate\": \"2023-08-18\",\n    \"issuingAuthority\": \"Fintech\",\n    \"issuingStateOrProvince\": \"NJ\",\n    \"issuingCountryCode\": \"US\"\n  }\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "p2mgpAw9ZbaTwt2iiYMG-",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/core/v1/cm/customers\"\n\npayload = json.dumps({\n  \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n  \"name\": {\n    \"firstName\": \"Brandon\",\n    \"lastName\": \"Sanderson\"\n  },\n  \"classification\": \"Personal\",\n  \"profile\": {\n    \"regO\": False,\n    \"citizenshipCountryCode\": \"US\",\n    \"politicallyExposedPerson\": False,\n    \"enableBackupWithholding\": False,\n    \"backupWithholdingPercent\": 0,\n    \"taxIdType\": \"Ssn\",\n    \"taxId\": \"\",\n    \"birthDate\": \"1980-03-06\",\n    \"riskRating\": \"Low\",\n    \"privacyOptOut\": True\n  },\n  \"dueDiligence\": {\n    \"employmentStatus\": \"Employed\",\n    \"occupation\": \"Technology\",\n    \"occupationDescription\": \"Support\",\n    \"industry\": \"Finance\",\n    \"incomeSource\": \"Salary\",\n    \"incomeState\": \"NJ\",\n    \"incomeCountryCode\": \"US\",\n    \"employer\": \"Cross River\",\n    \"employerState\": \"NJ\",\n    \"employerCountryCode\": \"US\",\n    \"sourceOfFunds\": \"Salary\",\n    \"wealthSource\": \"Salary\",\n    \"wealthSourceDescription\": \"Salary\",\n    \"annualIncome\": 4500000\n  },\n  \"primaryAddress\": {\n    \"addressType\": \"Home\",\n    \"classification\": \"Residential\",\n    \"isPrimary\": True,\n    \"street1\": \"101 Main St\",\n    \"street2\": \"Apt 2\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\"\n  },\n  \"primaryPhone\": {\n    \"isPrimary\": True,\n    \"phoneType\": \"Mobile\",\n    \"phoneNumber\": \"2018087000\"\n  },\n  \"primaryEmail\": {\n    \"isPrimary\": True,\n    \"emailType\": \"Personal\",\n    \"emailAddress\": \"bsanderson@crossriver.com\"\n  },\n  \"primaryIdentification\": {\n    \"isPrimary\": True,\n    \"idNumber\": \"eccdd2a9-58da-400c-ac98-0dcb302a42d4\",\n    \"idType\": \"Other\",\n    \"issuedDate\": \"2022-08-18\",\n    \"expDate\": \"2027-08-18\",\n    \"verifiedDate\": \"2023-08-18\",\n    \"issuingAuthority\": \"Fintech\",\n    \"issuingStateOrProvince\": \"NJ\",\n    \"issuingCountryCode\": \"US\"\n  }\n})\nheaders = {\n  'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "yQQFbZ14K1Svsw-c2e440",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n  \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n  \"name\": {\n    \"firstName\": \"Brandon\",\n    \"lastName\": \"Sanderson\"\n  },\n  \"classification\": \"Personal\",\n  \"profile\": {\n    \"regO\": false,\n    \"citizenshipCountryCode\": \"US\",\n    \"politicallyExposedPerson\": false,\n    \"enableBackupWithholding\": false,\n    \"backupWithholdingPercent\": 0,\n    \"taxIdType\": \"Ssn\",\n    \"taxId\": \"\",\n    \"birthDate\": \"1980-03-06\",\n    \"riskRating\": \"Low\",\n    \"privacyOptOut\": true\n  },\n  \"dueDiligence\": {\n    \"employmentStatus\": \"Employed\",\n    \"occupation\": \"Technology\",\n    \"occupationDescription\": \"Support\",\n    \"industry\": \"Finance\",\n    \"incomeSource\": \"Salary\",\n    \"incomeState\": \"NJ\",\n    \"incomeCountryCode\": \"US\",\n    \"employer\": \"Cross River\",\n    \"employerState\": \"NJ\",\n    \"employerCountryCode\": \"US\",\n    \"sourceOfFunds\": \"Salary\",\n    \"wealthSource\": \"Salary\",\n    \"wealthSourceDescription\": \"Salary\",\n    \"annualIncome\": 4500000\n  },\n  \"primaryAddress\": {\n    \"addressType\": \"Home\",\n    \"classification\": \"Residential\",\n    \"isPrimary\": true,\n    \"street1\": \"101 Main St\",\n    \"street2\": \"Apt 2\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\"\n  },\n  \"primaryPhone\": {\n    \"isPrimary\": true,\n    \"phoneType\": \"Mobile\",\n    \"phoneNumber\": \"2018087000\"\n  },\n  \"primaryEmail\": {\n    \"isPrimary\": true,\n    \"emailType\": \"Personal\",\n    \"emailAddress\": \"bsanderson@crossriver.com\"\n  },\n  \"primaryIdentification\": {\n    \"isPrimary\": true,\n    \"idNumber\": \"eccdd2a9-58da-400c-ac98-0dcb302a42d4\",\n    \"idType\": \"Other\",\n    \"issuedDate\": \"2022-08-18\",\n    \"expDate\": \"2027-08-18\",\n    \"verifiedDate\": \"2023-08-18\",\n    \"issuingAuthority\": \"Fintech\",\n    \"issuingStateOrProvince\": \"NJ\",\n    \"issuingCountryCode\": \"US\"\n  }\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "SNQlzFgb-VGSFcRmwkzV3",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",`+\"\n\"+`\n    \"name\": {`+\"\n\"+`\n        \"firstName\": \"Brandon\",`+\"\n\"+`\n        \"lastName\": \"Sanderson\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"classification\": \"Personal\",`+\"\n\"+`\n    \"profile\": {`+\"\n\"+`\n        \"regO\": false,`+\"\n\"+`\n        \"citizenshipCountryCode\": \"US\",`+\"\n\"+`\n        \"politicallyExposedPerson\": false,`+\"\n\"+`\n        \"enableBackupWithholding\": false,`+\"\n\"+`\n        \"backupWithholdingPercent\": 0,`+\"\n\"+`\n        \"taxIdType\": \"Ssn\",`+\"\n\"+`\n        \"taxId\": \"\",`+\"\n\"+`\n        \"birthDate\": \"1980-03-06\",`+\"\n\"+`\n        \"riskRating\": \"Low\",`+\"\n\"+`\n        \"privacyOptOut\": true`+\"\n\"+`\n    },`+\"\n\"+`\n    \"dueDiligence\": {`+\"\n\"+`\n        \"employmentStatus\": \"Employed\",`+\"\n\"+`\n        \"occupation\": \"Technology\",`+\"\n\"+`\n        \"occupationDescription\": \"Support\",`+\"\n\"+`\n        \"industry\": \"Finance\",`+\"\n\"+`\n        \"incomeSource\": \"Salary\",`+\"\n\"+`\n        \"incomeState\": \"NJ\",`+\"\n\"+`\n        \"incomeCountryCode\": \"US\",`+\"\n\"+`\n        \"employer\": \"Cross River\",`+\"\n\"+`\n        \"employerState\": \"NJ\",`+\"\n\"+`\n        \"employerCountryCode\": \"US\",`+\"\n\"+`\n        \"sourceOfFunds\": \"Salary\",`+\"\n\"+`\n        \"wealthSource\": \"Salary\",`+\"\n\"+`\n        \"wealthSourceDescription\": \"Salary\",`+\"\n\"+`\n        \"annualIncome\": 4500000`+\"\n\"+`\n    },`+\"\n\"+`\n    \n    \"primaryAddress\": {`+\"\n\"+`\n        \"addressType\": \"Home\",`+\"\n\"+`\n        \"classification\": \"Residential\",`+\"\n\"+`\n        \"isPrimary\": true,`+\"\n\"+`\n        \"street1\": \"101 Main St\",`+\"\n\"+`\n        \"street2\": \"Apt 2\",`+\"\n\"+`\n        \"city\": \"New York\",`+\"\n\"+`\n        \"state\": \"NY\",`+\"\n\"+`\n        \"postalCode\": \"10001\",`+\"\n\"+`\n        \"countryCode\": \"US\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"primaryPhone\": {`+\"\n\"+`\n        \"isPrimary\": true,`+\"\n\"+`\n        \"phoneType\": \"Mobile\",`+\"\n\"+`\n        \"phoneNumber\": \"2018087000\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"primaryEmail\": {`+\"\n\"+`\n        \"isPrimary\": true,`+\"\n\"+`\n        \"emailType\": \"Personal\",`+\"\n\"+`\n        \"emailAddress\": \"bsanderson@crossriver.com\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"primaryIdentification\": {`+\"\n\"+`\n        \"isPrimary\": true,`+\"\n\"+`\n        \"idNumber\": \"eccdd2a9-58da-400c-ac98-0dcb302a42d4\",`+\"\n\"+`\n        \"idType\": \"Other\",`+\"\n\"+`\n        \"issuedDate\": \"2022-08-18\",`+\"\n\"+`\n        \"expDate\": \"2027-08-18\",`+\"\n\"+`\n        \"verifiedDate\": \"2023-08-18\",`+\"\n\"+`\n        \"issuingAuthority\": \"Fintech\",`+\"\n\"+`\n        \"issuingStateOrProvince\": \"NJ\",`+\"\n\"+`\n        \"issuingCountryCode\": \"US\"`+\"\n\"+`\n    }`+\"\n\"+`\n}`+\"\n\"+``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xK0mDfrnuxTC3HLNjR8-M"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"6c545b91-f401-4308-bad3-b300007b7885\",\n    \"cifNumber\": \"245085933838\",\n    \"classification\": \"Personal\",\n    \"status\": \"Active\",\n    \"ofac\": \"Pending\",\n    \"pepScan\": \"Pending\",\n    \"internalList\": \"Pending\",\n    \"name\": {\n        \"firstName\": \"Brandon\",\n        \"lastName\": \"Sanderson\",\n        \"fullName\": \"Brandon Sanderson\"\n    },\n    \"profile\": {\n        \"regO\": false,\n        \"citizenshipCountryCode\": \"US\",\n        \"politicallyExposedPerson\": false,\n        \"enableBackupWithholding\": false,\n        \"backupWithholdingPercent\": 0,\n        \"taxIdType\": \"Ssn\",\n        \"taxId\": \"312860737\",\n        \"birthDate\": \"1980-03-06\",\n        \"riskRating\": \"Low\",\n        \"privacyOptOut\": true\n    },\n    \"createdAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"dueDiligence\": {\n        \"employmentStatus\": \"Employed\",\n        \"occupation\": \"Technology\",\n        \"occupationDescription\": \"Support\",\n        \"industry\": \"Finance\",\n        \"incomeSource\": \"Salary\",\n        \"incomeState\": \"NJ\",\n        \"incomeCountryCode\": \"US\",\n        \"employer\": \"Cross River\",\n        \"employerState\": \"NJ\",\n        \"employerCountryCode\": \"US\",\n        \"sourceOfFunds\": \"Salary\",\n        \"wealthSource\": \"Salary\",\n        \"wealthSourceDescription\": \"Salary\",\n        \"annualIncome\": 4500000\n    },\n    \"primaryAddress\": {\n        \"id\": \"b2fb4cd1-aaa7-47aa-9113-b300007b7885\",\n        \"customerId\": \"6c545b91-f401-4308-bad3-b300007b7885\",\n        \"isPrimary\": true,\n        \"status\": \"Active\",\n        \"classification\": \"Residential\",\n        \"addressType\": \"Home\",\n        \"street1\": \"101 Main St\",\n        \"street2\": \"Apt 2\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\",\n        \"createdAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n        \"lastModifiedAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n        \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\"\n    },\n    \"primaryEmail\": {\n        \"id\": \"bc8d7a46-56e4-4d21-bb2c-b300007b7885\",\n        \"customerId\": \"6c545b91-f401-4308-bad3-b300007b7885\",\n        \"isPrimary\": true,\n        \"status\": \"Active\",\n        \"emailType\": \"Personal\",\n        \"emailAddress\": \"bsanderson@crossriver.com\",\n        \"createdAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n        \"lastModifiedAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n        \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\"\n    },\n    \"primaryIdentification\": {\n        \"id\": \"a2d6310d-6d5a-4685-b093-b300007b7885\",\n        \"customerId\": \"6c545b91-f401-4308-bad3-b300007b7885\",\n        \"isPrimary\": true,\n        \"idNumber\": \"eccdd2a9-58da-400c-ac98-0dcb302a42d4\",\n        \"status\": \"Active\",\n        \"idType\": \"Other\",\n        \"issuedDate\": \"2022-08-18\",\n        \"expDate\": \"2027-08-18\",\n        \"verifiedDate\": \"2023-08-18\",\n        \"issuingAuthority\": \"Fintech\",\n        \"issuingStateOrProvince\": \"NJ\",\n        \"issuingCountryCode\": \"US\",\n        \"createdAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n        \"lastModifiedAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n        \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\"\n    },\n    \"primaryPhone\": {\n        \"id\": \"0acf34f9-d50c-46d4-b241-b300007b7885\",\n        \"customerId\": \"6c545b91-f401-4308-bad3-b300007b7885\",\n        \"status\": \"Active\",\n        \"phoneType\": \"Mobile\",\n        \"isPrimary\": true,\n        \"phoneNumber\": \"2018087000\",\n        \"createdAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n        \"lastModifiedAt\": \"2025-06-18T03:29:32.6027543-04:00\",\n        \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\"\n    }\n}"
      }
    ],
    "selectedLanguageId": "zuoamZSUzJOVAnQseRBuz"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "partnerId",
        "kind": "required",
        "type": "string",
        "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
        "": "Your unique ID in the Cross River system. This ID is in GUID format."
      },
      {
        "name": "name",
        "kind": "required",
        "type": "object",
        "description": "Customer name in detail",
        "": "required",
        "children": [
          {
            "name": "prefix",
            "kind": "optional",
            "type": "string",
            "description": "Prefix for name"
          },
          {
            "name": "firstName",
            "kind": "required",
            "type": "string",
            "description": "Legal customer first name. 100 characters maximum."
          },
          {
            "name": "middleName",
            "kind": "optional",
            "type": "string",
            "description": "Legal customer middle name. 50 characters maximum."
          },
          {
            "name": "lastName",
            "kind": "required",
            "type": "string",
            "description": "Legal customer last name. 100 characters maximum."
          },
          {
            "name": "suffix",
            "kind": "optional",
            "type": "string",
            "description": "Suffix for the name"
          },
          {
            "name": "preferredName",
            "kind": "optional",
            "type": "string",
            "description": "Customer preferred name. 255 character maximum."
          },
          {
            "name": "fullName",
            "kind": "optional",
            "type": "string",
            "description": "Customer's entire name including middle initial. 255 characters maximum."
          }
        ],
        "schema": [
          {
            "name": "prefix",
            "kind": "optional",
            "type": "string",
            "description": "Prefix for name"
          },
          {
            "name": "firstName",
            "kind": "required",
            "type": "string",
            "description": "Legal customer first name. 100 characters maximum."
          },
          {
            "name": "middleName",
            "kind": "optional",
            "type": "string",
            "description": "Legal customer middle name. 50 characters maximum."
          },
          {
            "name": "lastName",
            "kind": "required",
            "type": "string",
            "description": "Legal customer last name. 100 characters maximum."
          },
          {
            "name": "suffix",
            "kind": "optional",
            "type": "string",
            "description": "Suffix for the name"
          },
          {
            "name": "preferredName",
            "kind": "optional",
            "type": "string",
            "description": "Customer preferred name. 255 character maximum."
          },
          {
            "name": "fullName",
            "kind": "optional",
            "type": "string",
            "description": "Customer's entire name including middle initial. 255 characters maximum."
          }
        ]
      },
      {
        "name": "classification",
        "kind": "required",
        "type": "string",
        "description": "The classification type of the customer:\nUse \"Personal\" (meaning, an individual person's customer record)",
        "": "The classification type of the customer:\nUse \"Personal\" (meaning, an individual person's customer record)"
      },
      {
        "name": "profile",
        "kind": "required",
        "type": "object",
        "description": "Customer banking-relevant information",
        "": "Customer banking-relevant information",
        "children": [
          {
            "name": "taxIdType",
            "kind": "required",
            "type": "string",
            "description": "Tax ID type for the customer:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
          },
          {
            "name": "taxId",
            "kind": "required",
            "type": "string",
            "description": "Tax ID number. 9 character minimum for SSN, EIN, or ITIN; 5 character minimum for VAT or Foreign. 20 character maximum."
          },
          {
            "name": "riskRating",
            "kind": "required",
            "type": "string",
            "description": "Customer risk rating:\n- Low\n- Medium\n- High"
          },
          {
            "name": "regO",
            "kind": "required",
            "type": "boolean",
            "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false."
          },
          {
            "name": "citizenshipCountryCode",
            "kind": "optional",
            "type": "string",
            "description": "Country of citizenship. 2 character ISO code."
          },
          {
            "name": "politicallyExposedPerson",
            "kind": "required",
            "type": "boolean",
            "description": "Politically exposed person (PEP). True if PEP, otherwise false."
          },
          {
            "name": "enableBackupWithholding",
            "kind": "optional",
            "type": "boolean",
            "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false."
          },
          {
            "name": "backupWithholdingPercent",
            "kind": "optional",
            "type": "number",
            "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
          },
          {
            "name": "birthDate",
            "kind": "required",
            "type": "string",
            "description": "Customer birthdate in the format YYYY-MM-DD"
          },
          {
            "name": "dateOfDeath",
            "kind": "optional",
            "type": "string",
            "description": "Indicates the date of a customer's passing, should that occur. In the format yyyy-mm-dd"
          },
          {
            "name": "privacyOptOut",
            "kind": "optional",
            "type": "boolean",
            "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
          }
        ],
        "schema": [
          {
            "name": "taxIdType",
            "kind": "required",
            "type": "string",
            "description": "Tax ID type for the customer:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
          },
          {
            "name": "taxId",
            "kind": "required",
            "type": "string",
            "description": "Tax ID number. 9 character minimum for SSN, EIN, or ITIN; 5 character minimum for VAT or Foreign. 20 character maximum."
          },
          {
            "name": "riskRating",
            "kind": "required",
            "type": "string",
            "description": "Customer risk rating:\n- Low\n- Medium\n- High"
          },
          {
            "name": "regO",
            "kind": "required",
            "type": "boolean",
            "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false."
          },
          {
            "name": "citizenshipCountryCode",
            "kind": "optional",
            "type": "string",
            "description": "Country of citizenship. 2 character ISO code."
          },
          {
            "name": "politicallyExposedPerson",
            "kind": "required",
            "type": "boolean",
            "description": "Politically exposed person (PEP). True if PEP, otherwise false."
          },
          {
            "name": "enableBackupWithholding",
            "kind": "optional",
            "type": "boolean",
            "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false."
          },
          {
            "name": "backupWithholdingPercent",
            "kind": "optional",
            "type": "number",
            "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
          },
          {
            "name": "birthDate",
            "kind": "required",
            "type": "string",
            "description": "Customer birthdate in the format YYYY-MM-DD"
          },
          {
            "name": "dateOfDeath",
            "kind": "optional",
            "type": "string",
            "description": "Indicates the date of a customer's passing, should that occur. In the format yyyy-mm-dd"
          },
          {
            "name": "privacyOptOut",
            "kind": "optional",
            "type": "boolean",
            "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
          }
        ]
      },
      {
        "name": "dueDiligence",
        "kind": "optional",
        "type": "object",
        "description": "Details for due diligence compliance for an individual customer. Speak to your compliance liaison to find out any requirements for Due Diligence fields.",
        "": "Details for due diligence compliance for an individual customer. Speak to your compliance liaison to find out any requirements for Due Diligence fields.",
        "children": [
          {
            "name": "employmentStatus",
            "kind": "optional",
            "type": "string",
            "description": "How and if the customer is employed:\n- Employed\n- SelfEmployed\n- Retired\n- Unemployed\n- Student"
          },
          {
            "name": "occupation",
            "kind": "optional",
            "type": "string",
            "description": "Possible occupation types:\n- Executive\n- Sales\n- Consulting\n- Government\n- Healthcare\n- FinanceAccounting\n- Technology\n- ScienceEngineering\n- FoodServices\n- LegalServices\n- Manufacturing\n- Other"
          },
          {
            "name": "occupationDescription",
            "kind": "optional",
            "type": "string",
            "description": "Any further details needed about the customer's occupation. 255 characters maximum."
          },
          {
            "name": "industry",
            "kind": "optional",
            "type": "string",
            "description": "Possible industries:\n- Agriculture\n- Mining\n- Utilities\n- Construction\n- Manufacturing\n- ChemicalManufacturing\n- MerchantWholesale\n- Automotive\n- RetailFurnishing\n- RetailElectronics\n- RetailHome\n- RetailFood\n- HealthStores\n- Gasoline\n- RetailClothing\n- RetailSporting\n- RetailNonStore\n- Transportation\n- Publishing\n- Finance\n- RealEstate\n- RentalServices\n- ProfessionalNonLegal\n- Accounting\n- Travel\n- EducationalMedical\n- PerformingArts\n- RecreationGambling\n- FoodService\n- Maintenance\n- Laundry\n- ReligiousCharity\n- PublicAdministration"
          },
          {
            "name": "incomeSource",
            "kind": "optional",
            "type": "string",
            "description": "Possible income sources:\n- Salary\n- SelfEmployed\n- Inheritance\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- FamilySupport"
          },
          {
            "name": "incomeState",
            "kind": "optional",
            "type": "string",
            "description": "State where customer earns income. Use the 2-letter code."
          },
          {
            "name": "incomeCountryCode",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code of the country where the customer earns income"
          },
          {
            "name": "employer",
            "kind": "optional",
            "type": "string",
            "description": "Name of customer's employer"
          },
          {
            "name": "employerState",
            "kind": "optional",
            "type": "string",
            "description": "State where customer employer is based.  Use the 2-letter code."
          },
          {
            "name": "employerCountryCode",
            "kind": "optional",
            "type": "string",
            "description": "2-letter ISO code of the country where the customer's employer is based"
          },
          {
            "name": "sourceOfFunds",
            "kind": "optional",
            "type": "string",
            "description": "Customer funds the account from one of these sources:\n- SelfEmployed\n- GeneralEmployee\n- SeniorExecutive\n- Retired\n- Homemaker\n- InheritanceGift\n- Investment\n- Salary\n- BusinessOwner\n- Alimony\n- Retirement\n- Lottery\n- Annuity\n- TrustIncome\n- RealEstate\n- GovernmentBenefits\n- LegalSettlement"
          },
          {
            "name": "wealthSource",
            "kind": "optional",
            "type": "string",
            "description": "Source of customer wealth:\n- Salary\n- SelfEmployed\n- Inheritance\n- FamilySupport\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- BusinessSale\n- Other"
          },
          {
            "name": "wealthSourceDescription",
            "kind": "optional",
            "type": "string",
            "description": "Further details about the customer's source of wealth. 255 characters maximum."
          },
          {
            "name": "annualIncome",
            "kind": "optional",
            "type": "integer",
            "description": "Customer annual income. For example, 100 US dollars appears as 10000."
          }
        ],
        "schema": [
          {
            "name": "employmentStatus",
            "kind": "optional",
            "type": "string",
            "description": "How and if the customer is employed:\n- Employed\n- SelfEmployed\n- Retired\n- Unemployed\n- Student"
          },
          {
            "name": "occupation",
            "kind": "optional",
            "type": "string",
            "description": "Possible occupation types:\n- Executive\n- Sales\n- Consulting\n- Government\n- Healthcare\n- FinanceAccounting\n- Technology\n- ScienceEngineering\n- FoodServices\n- LegalServices\n- Manufacturing\n- Other"
          },
          {
            "name": "occupationDescription",
            "kind": "optional",
            "type": "string",
            "description": "Any further details needed about the customer's occupation. 255 characters maximum."
          },
          {
            "name": "industry",
            "kind": "optional",
            "type": "string",
            "description": "Possible industries:\n- Agriculture\n- Mining\n- Utilities\n- Construction\n- Manufacturing\n- ChemicalManufacturing\n- MerchantWholesale\n- Automotive\n- RetailFurnishing\n- RetailElectronics\n- RetailHome\n- RetailFood\n- HealthStores\n- Gasoline\n- RetailClothing\n- RetailSporting\n- RetailNonStore\n- Transportation\n- Publishing\n- Finance\n- RealEstate\n- RentalServices\n- ProfessionalNonLegal\n- Accounting\n- Travel\n- EducationalMedical\n- PerformingArts\n- RecreationGambling\n- FoodService\n- Maintenance\n- Laundry\n- ReligiousCharity\n- PublicAdministration"
          },
          {
            "name": "incomeSource",
            "kind": "optional",
            "type": "string",
            "description": "Possible income sources:\n- Salary\n- SelfEmployed\n- Inheritance\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- FamilySupport"
          },
          {
            "name": "incomeState",
            "kind": "optional",
            "type": "string",
            "description": "State where customer earns income. Use the 2-letter code."
          },
          {
            "name": "incomeCountryCode",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code of the country where the customer earns income"
          },
          {
            "name": "employer",
            "kind": "optional",
            "type": "string",
            "description": "Name of customer's employer"
          },
          {
            "name": "employerState",
            "kind": "optional",
            "type": "string",
            "description": "State where customer employer is based.  Use the 2-letter code."
          },
          {
            "name": "employerCountryCode",
            "kind": "optional",
            "type": "string",
            "description": "2-letter ISO code of the country where the customer's employer is based"
          },
          {
            "name": "sourceOfFunds",
            "kind": "optional",
            "type": "string",
            "description": "Customer funds the account from one of these sources:\n- SelfEmployed\n- GeneralEmployee\n- SeniorExecutive\n- Retired\n- Homemaker\n- InheritanceGift\n- Investment\n- Salary\n- BusinessOwner\n- Alimony\n- Retirement\n- Lottery\n- Annuity\n- TrustIncome\n- RealEstate\n- GovernmentBenefits\n- LegalSettlement"
          },
          {
            "name": "wealthSource",
            "kind": "optional",
            "type": "string",
            "description": "Source of customer wealth:\n- Salary\n- SelfEmployed\n- Inheritance\n- FamilySupport\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- BusinessSale\n- Other"
          },
          {
            "name": "wealthSourceDescription",
            "kind": "optional",
            "type": "string",
            "description": "Further details about the customer's source of wealth. 255 characters maximum."
          },
          {
            "name": "annualIncome",
            "kind": "optional",
            "type": "integer",
            "description": "Customer annual income. For example, 100 US dollars appears as 10000."
          }
        ]
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum",
        "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum"
      },
      {
        "name": "primaryAddress",
        "kind": "optional",
        "type": "object",
        "description": "Main address for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "": "Main address for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "children": [
          {
            "name": "addressType",
            "kind": "required",
            "type": "string",
            "description": "What this is the address of:\n- Home\n- Work\n- Other"
          },
          {
            "name": "classification",
            "kind": "required",
            "type": "string",
            "description": "What kind of address this is:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other"
          },
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary address record for this customer. Otherwise, false."
          },
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of customer, for instance, street name, house/building number,  or PO box. 255 character maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 255 character maximum."
          },
          {
            "name": "street3",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 255 character maximum."
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 50 character maximum."
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "2-letter abbreviation for the state"
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal code, also known as ZIP code. 10 character maximum."
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code"
          }
        ],
        "schema": [
          {
            "name": "addressType",
            "kind": "required",
            "type": "string",
            "description": "What this is the address of:\n- Home\n- Work\n- Other"
          },
          {
            "name": "classification",
            "kind": "required",
            "type": "string",
            "description": "What kind of address this is:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other"
          },
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary address record for this customer. Otherwise, false."
          },
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of customer, for instance, street name, house/building number,  or PO box. 255 character maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 255 character maximum."
          },
          {
            "name": "street3",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 255 character maximum."
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 50 character maximum."
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "2-letter abbreviation for the state"
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal code, also known as ZIP code. 10 character maximum."
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code"
          }
        ]
      },
      {
        "name": "primaryPhone",
        "kind": "optional",
        "type": "object",
        "description": "Main phone number for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "": "Main phone number for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "children": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary phone number record for this customer. Otherwise, false."
          },
          {
            "name": "phoneType",
            "kind": "required",
            "type": "string",
            "description": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax"
          },
          {
            "name": "phoneNumber",
            "kind": "required",
            "type": "string",
            "description": "Phone number with no spaces or other characters. Minimum 10, maximum 20."
          },
          {
            "name": "extension",
            "kind": "optional",
            "type": "string",
            "description": "If the phone rings a switchboard, the entity's direct extension. 20 character maximum."
          },
          {
            "name": "notes",
            "kind": "optional",
            "type": "string",
            "description": "Additional phone information. 255 character maximum."
          }
        ],
        "schema": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary phone number record for this customer. Otherwise, false."
          },
          {
            "name": "phoneType",
            "kind": "required",
            "type": "string",
            "description": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax"
          },
          {
            "name": "phoneNumber",
            "kind": "required",
            "type": "string",
            "description": "Phone number with no spaces or other characters. Minimum 10, maximum 20."
          },
          {
            "name": "extension",
            "kind": "optional",
            "type": "string",
            "description": "If the phone rings a switchboard, the entity's direct extension. 20 character maximum."
          },
          {
            "name": "notes",
            "kind": "optional",
            "type": "string",
            "description": "Additional phone information. 255 character maximum."
          }
        ]
      },
      {
        "name": "primaryEmail",
        "kind": "optional",
        "type": "object",
        "description": "Main email address for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "": "Main email address for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "children": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary email address record for this customer. Otherwise, false."
          },
          {
            "name": "emailType",
            "kind": "required",
            "type": "string",
            "description": "Email address type is:\n- Personal\n- Work\n- Other"
          },
          {
            "name": "emailAddress",
            "kind": "required",
            "type": "string",
            "description": "Customer's primary email address. This must be a minimum of 6 characters, and a maximum of 255."
          }
        ],
        "schema": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary email address record for this customer. Otherwise, false."
          },
          {
            "name": "emailType",
            "kind": "required",
            "type": "string",
            "description": "Email address type is:\n- Personal\n- Work\n- Other"
          },
          {
            "name": "emailAddress",
            "kind": "required",
            "type": "string",
            "description": "Customer's primary email address. This must be a minimum of 6 characters, and a maximum of 255."
          }
        ]
      },
      {
        "name": "primaryIdentification",
        "kind": "optional",
        "type": "object",
        "description": "Identification metadata of customer-identifying documents, such as a driver's license or passport. You must provide some form of primary identification for a customer, however you can also add it to the customer record later using the POST Add identification endpoint.\nWhen you use this object, some attributes are required (as indicated).",
        "": "Identification metadata of customer-identifying documents, such as a driver's license or passport. You must provide some form of primary identification for a customer, however you can also add it to the customer record later using the POST Add identification endpoint.\nWhen you use this object, some attributes are required (as indicated).",
        "children": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary identification record for this customer. Otherwise, false."
          },
          {
            "name": "idNumber",
            "kind": "required",
            "type": "string",
            "description": "The identification number being added. 50 character maximum."
          },
          {
            "name": "idType",
            "kind": "required",
            "type": "string",
            "description": "The kind of ID:\n- DriversLicense\n- Passport\n- IdCard\n- SocialSecurity\n- Other"
          },
          {
            "name": "issuedDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID was issued, in the format yyyy-mm-dd"
          },
          {
            "name": "expDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID expires, in the format yyyy-mm-dd"
          },
          {
            "name": "verifiedDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID was last verified, in the format yyyy-mm-dd"
          },
          {
            "name": "issuingAuthority",
            "kind": "required",
            "type": "string",
            "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles. 255 character maximum."
          },
          {
            "name": "issuingStateOrProvince",
            "kind": "optional",
            "type": "string",
            "description": "State or province where the ID was issued. 50 character maximum."
          },
          {
            "name": "issuingCountryCode",
            "kind": "required",
            "type": "string",
            "description": "Country where the ID was issued expressed as a 2-character ISO country code"
          }
        ],
        "schema": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary identification record for this customer. Otherwise, false."
          },
          {
            "name": "idNumber",
            "kind": "required",
            "type": "string",
            "description": "The identification number being added. 50 character maximum."
          },
          {
            "name": "idType",
            "kind": "required",
            "type": "string",
            "description": "The kind of ID:\n- DriversLicense\n- Passport\n- IdCard\n- SocialSecurity\n- Other"
          },
          {
            "name": "issuedDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID was issued, in the format yyyy-mm-dd"
          },
          {
            "name": "expDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID expires, in the format yyyy-mm-dd"
          },
          {
            "name": "verifiedDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID was last verified, in the format yyyy-mm-dd"
          },
          {
            "name": "issuingAuthority",
            "kind": "required",
            "type": "string",
            "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles. 255 character maximum."
          },
          {
            "name": "issuingStateOrProvince",
            "kind": "optional",
            "type": "string",
            "description": "State or province where the ID was issued. 50 character maximum."
          },
          {
            "name": "issuingCountryCode",
            "kind": "required",
            "type": "string",
            "description": "Country where the ID was issued expressed as a 2-character ISO country code"
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The unique customer ID for the onboarded customer"
    },
    {
      "name": "cifNumber",
      "kind": "optional",
      "type": "string",
      "description": "The Customer Identification File (CIF) number is internal to Cross River, used to identify customers uniquely for compliance purposes",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "The classification type of the customer:\nPersonal (an individual)\nBusiness (a legal entity)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "- Inactive\n- Active",
      "children": []
    },
    {
      "name": "ofac",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "pepScan",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "internalList",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "name",
      "kind": "optional",
      "type": "object",
      "description": "Customer name in detail",
      "children": [
        {
          "name": "prefix",
          "kind": "optional",
          "type": "string",
          "description": "Prefix for name"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "Customer first name"
        },
        {
          "name": "middleName",
          "kind": "optional",
          "type": "string",
          "description": "Customer middle name"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Customer last name"
        },
        {
          "name": "suffix",
          "kind": "optional",
          "type": "string",
          "description": "Suffix for the name"
        },
        {
          "name": "preferredName",
          "kind": "optional",
          "type": "string",
          "description": "Customer preferred name"
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Customer's entire name including middle initial"
        }
      ]
    },
    {
      "name": "profile",
      "kind": "required",
      "type": "object",
      "description": "Customer banking-relevant information",
      "": "Customer banking-relevant information",
      "children": [
        {
          "name": "taxIdType",
          "kind": "required",
          "type": "string",
          "description": "Tax ID type for the customer:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "required",
          "type": "string",
          "description": "Tax ID number"
        },
        {
          "name": "riskRating",
          "kind": "required",
          "type": "string",
          "description": "Customer risk rating:\n- Low\n- Medium\n- High"
        },
        {
          "name": "regO",
          "kind": "optional",
          "type": "boolean",
          "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. "
        },
        {
          "name": "citizenshipCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country of citizenship. 2-character ISO code."
        },
        {
          "name": "politicallyExposedPerson",
          "kind": "optional",
          "type": "boolean",
          "description": "Politically exposed person (PEP). True if PEP, otherwise false."
        },
        {
          "name": "enableBackupWithholding",
          "kind": "optional",
          "type": "boolean",
          "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false."
        },
        {
          "name": "backupWithholdingPercent",
          "kind": "optional",
          "type": "number",
          "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Customer birthdate in the format YYYY-MM-DD"
        },
        {
          "name": "dateOfDeath",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the date of a customer's passing, should that occur. In the format yyyy-mm-dd"
        },
        {
          "name": "privacyOptOut",
          "kind": "optional",
          "type": "boolean",
          "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
        }
      ],
      "schema": [
        {
          "name": "taxIdType",
          "kind": "required",
          "type": "string",
          "description": "Tax ID type for the entity:\nSSN, EIN, ITIN, VAT, Foreign"
        },
        {
          "name": "taxId",
          "kind": "required",
          "type": "string",
          "description": "Tax ID number. 9 character minimum. 20 character maximum."
        },
        {
          "name": "riskRating",
          "kind": "required",
          "type": "string",
          "description": "Customer risk rating:\nLow, Medium, High"
        },
        {
          "name": "regO",
          "kind": "optional",
          "type": "boolean",
          "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity"
        },
        {
          "name": "citizenshipCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country of citizenship (2 characters)"
        },
        {
          "name": "politicallyExposedPerson",
          "kind": "optional",
          "type": "boolean",
          "description": "Politically exposed person (PEP). True if PEP, otherwise false.\nThis attribute is not relevant for a business entity"
        },
        {
          "name": "enableBackupWithholding",
          "kind": "optional",
          "type": "boolean",
          "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false"
        },
        {
          "name": "backupWithholdingPercent",
          "kind": "optional",
          "type": "integer",
          "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of birth in the format \"yyyy-mm-dd\".\nThis attribute is not relevant for a business entity"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date when legal entity was  formed. In the format \"yyyy-mm-dd\".\nNot relevant for an individual"
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Business entity legal classification. Also called Customer entity type"
        },
        {
          "name": "Customer entity type",
          "kind": "optional",
          "type": "string",
          "description": "Exempt, Excluded, NonProfit, LegalEntity"
        },
        {
          "name": "primaryOwnerCustomerId",
          "kind": "optional",
          "type": "string",
          "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format"
        },
        {
          "name": "parentEntityId",
          "kind": "optional",
          "type": "string",
          "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format"
        },
        {
          "name": "dateOfDeath",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the date of a customer's passing, should that occur. In the format \"yyyy-mm-dd\"."
        },
        {
          "name": "privacyOptOut",
          "kind": "optional",
          "type": "boolean",
          "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
        }
      ]
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "dueDiligence",
      "kind": "optional",
      "type": "object",
      "description": "Details for due diligence compliance for an individual customer. To be used when required.",
      "": "Details for due diligence compliance for an individual customer. To  be used when required",
      "children": [
        {
          "name": "employmentStatus",
          "kind": "optional",
          "type": "string",
          "description": "How and if the customer is employed:\n- Employed\n- SelfEmployed\n- Retired\n- Unemployed\n- Student"
        },
        {
          "name": "occupation",
          "kind": "optional",
          "type": "string",
          "description": "Possible occupation types:\n- Executive\n- Sales\n- Consulting\n- Government\n- Healthcare\n- FinanceAccounting\n- Technology\n- ScienceEngineering\n- FoodServices\n- LegalServices\n- Manufacturing\n- Other"
        },
        {
          "name": "occupationDescription",
          "kind": "optional",
          "type": "string",
          "description": "Any further details needed about the customer's occupation"
        },
        {
          "name": "industry",
          "kind": "optional",
          "type": "string",
          "description": "Possible industries:\n- Agriculture\n- Mining\n- Utilities\n- Construction\n- Manufacturing\n- ChemicalManufacturing\n- MerchantWholesale\n- Automotive\n- RetailFurnishing\n- RetailElectronics\n- RetailHome\n- RetailFood\n- HealthStores\n- Gasoline\n- RetailClothing\n- RetailSporting\n- RetailNonStore\n- Transportation\n- Publishing\n- Finance\n- RealEstate\n- RentalServices\n- ProfessionalNonLegal\n- Accounting\n- Travel\n- EducationalMedical\n- PerformingArts\n- RecreationGambling\n- FoodService\n- Maintenance\n- Laundry\n- ReligiousCharity\n- PublicAdministration"
        },
        {
          "name": "incomeSource",
          "kind": "optional",
          "type": "string",
          "description": "Possible income sources:\n- Salary\n- SelfEmployed\n- Inheritance\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- FamilySupport"
        },
        {
          "name": "incomeState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer earns income"
        },
        {
          "name": "incomeCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO code of the country where the customer earns income"
        },
        {
          "name": "employer",
          "kind": "optional",
          "type": "string",
          "description": "Name of customer's employer"
        },
        {
          "name": "employerState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer employer is based"
        },
        {
          "name": "employerCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO code of the country where the customer's employer is based"
        },
        {
          "name": "sourceOfFunds",
          "kind": "optional",
          "type": "string",
          "description": "Customer funds the account from one of these sources:\n- SelfEmployed\n- GeneralEmployee\n- SeniorExecutive\n- Retired\n- Homemaker\n- InheritanceGift\n- Investment\n- Salary\n- BusinessOwner\n- Alimony\n- Retirement\n- Lottery\n- Annuity\n- TrustIncome\n- RealEstate\n- GovernmentBenefits\n- LegalSettlement"
        },
        {
          "name": "wealthSource",
          "kind": "optional",
          "type": "string",
          "description": "Source of customer wealth:\n- Salary\n- SelfEmployed\n- Inheritance\n- FamilySupport\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- BusinessSale\n- Other"
        },
        {
          "name": "wealthSourceDescription",
          "kind": "optional",
          "type": "string",
          "description": "Further details about the customer's source of wealth"
        },
        {
          "name": "annualIncome",
          "kind": "optional",
          "type": "integer",
          "description": "Customer annual income. For example, 100 US dollars appears as 10000."
        }
      ],
      "schema": [
        {
          "name": "employmentStatus",
          "kind": "optional",
          "type": "string",
          "description": "How and if the customer is employed:\n\"Employed\"\n\"SelfEmployed\"\n\"Retired\"\n\"Unemployed\"\n\"Student\""
        },
        {
          "name": "occupation",
          "kind": "optional",
          "type": "string",
          "description": "Possible occupation types:\n\"Executive\"\n\"Sales\"\n\"Consulting\"\n\"Government\"\n\"Healthcare\"\n\"FinanceAccounting\"\n\"Technology\"\n\"ScienceEngineering\"\n\"FoodServices\"\n\"LegalServices\"\n\"Manufacturing\"\n\"Other\""
        },
        {
          "name": "occupationDescription",
          "kind": "optional",
          "type": "string",
          "description": "Any further details needed about the customer's occupation. Up to 255 characters"
        },
        {
          "name": "industry",
          "kind": "optional",
          "type": "string",
          "description": "Possible industries:\nAgriculture\nMining\nUtilities\nConstruction\nManufacturing\nChemicalManufacturing\nMerchantWholesale\nAutomotive\nRetailFurnishing\nRetailElectronics\nRetailHome\nRetailFood\nHealthStores\nGasoline\nRetailClothing\nRetailSporting\nRetailNonStore\nTransportation\nPublishing\nFinance\nRealEstate\nRentalServices\nProfessionalNonLegal\nAccounting\nTravel\nEducationalMedical\nPerformingArts\nRecreationGambling\nFoodService\nMaintenance\nLaundry\nReligiousCharity\nPublicAdministration"
        },
        {
          "name": "incomeSource",
          "kind": "optional",
          "type": "string",
          "description": "Possible income sources:\nSalary\nSelfEmployed\nInheritance\nInvestments\nRetirement\nRentalIncome\nGovernmentBenefits\nFamilySupport"
        },
        {
          "name": "incomeState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer earns income"
        },
        {
          "name": "incomeCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code of the country where the customer earns income"
        },
        {
          "name": "employer",
          "kind": "optional",
          "type": "string",
          "description": "Name of customer's employer"
        },
        {
          "name": "employerState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer employer is based"
        },
        {
          "name": "employerCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code of the country where the customer's employer is based"
        },
        {
          "name": "sourceOfFunds",
          "kind": "optional",
          "type": "string",
          "description": "Customer funds the account from one of these sources:\nSelfEmployed\nGeneralEmployee\nSeniorExecutive\nRetired\nHomemaker\nInheritanceGift\nInvestment\nSalary\nBusinessOwner\nAlimony\nRetirement\nLottery\nAnnuity\nTrustIncome\nRealEstate\nGovernmentBenefits\nLegalSettlement"
        },
        {
          "name": "wealthSource",
          "kind": "optional",
          "type": "string",
          "description": "Source of customer wealth:\nSalary\nSelfEmployed\nInheritance\nFamilySupport\nInvestments\nRetirement\nRentalIncome\nGovernmentBenefits\nBusinessSale\nOther"
        },
        {
          "name": "wealthSourceDescription",
          "kind": "optional",
          "type": "string",
          "description": "Further details about the customer's source of wealth. 255 characters maximum"
        },
        {
          "name": "annualIncome",
          "kind": "optional",
          "type": "integer",
          "description": "Customer annual income"
        }
      ]
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum.",
      "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum"
    },
    {
      "name": "primaryAddress",
      "kind": "optional",
      "type": "object",
      "description": "Main address for the customer",
      "": "object",
      "children": [
        {
          "name": "addressType",
          "kind": "optional",
          "type": "string",
          "description": "What this is the address of:\n- Home\n- Work\n- Other"
        },
        {
          "name": "classification",
          "kind": "optional",
          "type": "string",
          "description": "What kind of address this is:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other"
        },
        {
          "name": "isPrimary",
          "kind": "optional",
          "type": "boolean",
          "description": "True if this is the primary address record for this customer. Otherwise, false."
        },
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of customer, for instance, street name, house/building number,  or PO box."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "street3",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "2-letter abbreviation for the state"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        },
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Database ID of the primary address record for this Customer ID"
        },
        {
          "name": "customerId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID for the customer this address is primary for"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Either Active or Inactive"
        }
      ],
      "schema": [
        {
          "name": "addressType",
          "kind": "optional",
          "type": "string",
          "description": "What this is the address of:\nHome\nWork\nOther"
        },
        {
          "name": "classification",
          "kind": "optional",
          "type": "string",
          "description": "What kind of address this is:\nResidential\nBusiness\nPoBox\nRural\nMilitary\nOther"
        },
        {
          "name": "isPrimary",
          "kind": "optional",
          "type": "boolean",
          "description": "True if this is the primary address record for this customer. Otherwise, false"
        },
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "street3",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name. 50 character maximum"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State name. 10 character maximum"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        }
      ]
    },
    {
      "name": "primaryEmail",
      "kind": "optional",
      "type": "object",
      "description": "Main email address for the customer",
      "": "Main email address for the customer",
      "children": [
        {
          "name": "isPrimary",
          "kind": "required",
          "type": "boolean",
          "description": "True if this is the primary email address record for this customer. Otherwise, false."
        },
        {
          "name": "emailType",
          "kind": "required",
          "type": "string",
          "description": "Email address type is:\n- Personal\n- Work\n- Other"
        },
        {
          "name": "emailAddress",
          "kind": "required",
          "type": "string",
          "description": "Customer's primary email address"
        },
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record."
        },
        {
          "name": "customerId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID for the customer this email address is primary for"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Either Active or Inactive"
        }
      ],
      "schema": [
        {
          "name": "isPrimary",
          "kind": "required",
          "type": "boolean",
          "description": "True if this is the primary email address record for this customer. Otherwise, false"
        },
        {
          "name": "emailType",
          "kind": "required",
          "type": "string",
          "description": "Email address is:\nPersonal\nWork\nOther"
        },
        {
          "name": "emailAddress",
          "kind": "required",
          "type": "string",
          "description": "Customer's primary email address. This must be a minimum of 6 characters"
        }
      ]
    },
    {
      "name": "primaryIdentification",
      "kind": "optional",
      "type": "object",
      "description": "Identification metadata of customer-identifying documents, such as a driver's license or passport",
      "": "Identification metadata of customer-identifying documents, such as a driver's license or passport",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "COS ID for the identification record, in GUID format"
        },
        {
          "name": "customerId",
          "kind": "optional",
          "type": "string",
          "description": "Unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record."
        },
        {
          "name": "isPrimary",
          "kind": "optional",
          "type": "boolean",
          "description": "True if this is the primary identification record for this customer. Otherwise, false."
        },
        {
          "name": "idNumber",
          "kind": "optional",
          "type": "string",
          "description": "The identification number being added"
        },
        {
          "name": "idType",
          "kind": "optional",
          "type": "string",
          "description": "The kind of ID:\n- DriversLicense\n- Passport\n- IdCard\n- SocialSecurity\n- Other"
        },
        {
          "name": "issuedDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID was issued"
        },
        {
          "name": "expDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID expires"
        },
        {
          "name": "verifiedDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID was last verified"
        },
        {
          "name": "issuingAuthority",
          "kind": "optional",
          "type": "string",
          "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles."
        },
        {
          "name": "issuingStateOrProvince",
          "kind": "optional",
          "type": "string",
          "description": "State or province where the ID was issued"
        },
        {
          "name": "issuingCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country where the ID was issued expressed as a 2-character code"
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Either Active or Inactive"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        }
      ],
      "schema": [
        {
          "name": "isPrimary",
          "kind": "optional",
          "type": "boolean",
          "description": "True if this is the primary identification record for this customer. Otherwise, false"
        },
        {
          "name": "idNumber",
          "kind": "optional",
          "type": "string",
          "description": "The identification number being added"
        },
        {
          "name": "idType",
          "kind": "optional",
          "type": "string",
          "description": "The kind of ID:\nDriversLicense\nPassport\nIdCard\nSocialSecurity\nOther"
        },
        {
          "name": "issuedDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID was issues"
        },
        {
          "name": "expDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID expires"
        },
        {
          "name": "verifiedDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID was verified"
        },
        {
          "name": "issuingAuthority",
          "kind": "optional",
          "type": "string",
          "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles"
        },
        {
          "name": "issuingStateOrProvince",
          "kind": "optional",
          "type": "string",
          "description": "State or province where the ID was issued"
        },
        {
          "name": "issuingCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country where the ID was issued expressed as a 2-character code"
        }
      ]
    },
    {
      "name": "primaryPhone",
      "kind": "optional",
      "type": "object",
      "description": "Main phone number for the customer",
      "": "Main phone number for the customer",
      "children": [
        {
          "name": "isPrimary",
          "kind": "required",
          "type": "boolean",
          "description": "True if this is the primary phone number record for this customer. Otherwise, false."
        },
        {
          "name": "phoneType",
          "kind": "required",
          "type": "string",
          "description": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Phone number with no spaces or other characters. Minimum 10, maximum 20."
        },
        {
          "name": "extension",
          "kind": "optional",
          "type": "string",
          "description": "If the phone rings a switchboard, the entity's direct extension"
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "Additional phone information. 255 character maximum."
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Either Inactive or Active"
        },
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "COS ID for the phone number record, in GUID format"
        },
        {
          "name": "customerId",
          "kind": "optional",
          "type": "string",
          "description": "Unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record."
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        }
      ],
      "schema": [
        {
          "name": "isPrimary",
          "kind": "required",
          "type": "boolean",
          "description": "True if this is the primary phone number record for this customer. Otherwise, false"
        },
        {
          "name": "phoneType",
          "kind": "required",
          "type": "string",
          "description": "The phone number calls a:\nHome\nMobile\nWork\nFax"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Phone number with no spaces or other characters. Minimum 10, maximum 20"
        },
        {
          "name": "extension",
          "kind": "optional",
          "type": "string",
          "description": "If the phone rings a switchboard, the entity's direct extension"
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "Additional phone information. 255 character maximum"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomers",
  "legacyHash": "eP_4FP7YdE669ic4Karxe"
}
```
:::


[title] Create subledger
[path] Accounts/Subledgers APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Core.SubAccount.Opened](docId\:eAs8aFqW7M97baeZUC8Sr)&#x20;
- [Core.SubAccount.Closed](docId\:eAs8aFqW7M97baeZUC8Sr)&#x20;

## API reference

Creates a subledger for the specified Master Account.

:::hint{type="warning"}
If you are using the [International Payments remittance](docId:2OOlsywMLwZlqaGtssPcd) feature, you must create a subledger for the account holder with a value of **Personal** for the `classification` attribute.
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/subaccounts",
  "method": "POST",
  "url": "    https://sandbox.crbcos.com/core/v1/dda/subaccounts",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "P9idftSfTSKm5GwLRp3lQ",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/subaccounts' \\\n--header 'Idempotency-key: 3392de17-6e92-4999-b943-cad5f19b1629' \\\n--data '{\n  \"masterAccountNumber\": \"2819503463\",\n  \"title\": \"Jerry Penn\",\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n  \"classification\": \"Personal\",\n  \"beneficiary\": {\n    \"firstName\": \"Jerry\" ,\n    \"lastName\": \"Penn\",\n    \"streetAddress1\": \"12 Main St\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\"\n  }\n}\n\n'",
        "customLabel": ""
      },
      {
        "id": "7l7yAI28Rhh_qfcfgcLP4",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/subaccounts',\n  'headers': {\n    'Idempotency-key': '3392de17-6e92-4999-b943-cad5f19b1629'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"masterAccountNumber\\\": \\\"2819503463\\\",\\r\\n  \\\"title\\\": \\\"Jerry Penn\\\",\\r\\n  \\\"customerId\\\": \\\"53c34cf0-4cd2-4768-937b-b30000dffdca\\\",\\r\\n  \\\"beneficiary\\\": {\\r\\n    \\\"firstName\\\": \\\"Jerry\\\" ,\\r\\n    \\\"lastName\\\": \\\"Penn\\\",\\r\\n    \\\"streetAddress1\\\": \\\"12 Main St\\\",\\r\\n    \\\"city\\\": \\\"New York\\\",\\r\\n    \\\"state\\\": \\\"NY\\\",\\r\\n    \\\"postalCode\\\": \\\"10001\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\"\\r\\n  }\\r\\n}\\r\\n\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "YNDuk387y_n1nrdjiZm8u",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"masterAccountNumber\\\": \\\"2819503463\\\",\\r\\n  \\\"title\\\": \\\"Jerry Penn\\\",\\r\\n  \\\"customerId\\\": \\\"53c34cf0-4cd2-4768-937b-b30000dffdca\\\",\\r\\n  \\\"beneficiary\\\": {\\r\\n    \\\"firstName\\\": \\\"Jerry\\\" ,\\r\\n    \\\"lastName\\\": \\\"Penn\\\",\\r\\n    \\\"streetAddress1\\\": \\\"12 Main St\\\",\\r\\n    \\\"city\\\": \\\"New York\\\",\\r\\n    \\\"state\\\": \\\"NY\\\",\\r\\n    \\\"postalCode\\\": \\\"10001\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\"\\r\\n  }\\r\\n}\\r\\n\\r\\n\"\nheaders = {\n  'Idempotency-key': '3392de17-6e92-4999-b943-cad5f19b1629'\n}\nconn.request(\"POST\", \"/core/v1/dda/subaccounts\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "x-xbtFBHeYWkwytMqG-oM",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/subaccounts\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"3392de17-6e92-4999-b943-cad5f19b1629\"\nrequest.body = \"{\\r\\n  \\\"masterAccountNumber\\\": \\\"2819503463\\\",\\r\\n  \\\"title\\\": \\\"Jerry Penn\\\",\\r\\n  \\\"customerId\\\": \\\"53c34cf0-4cd2-4768-937b-b30000dffdca\\\",\\r\\n  \\\"beneficiary\\\": {\\r\\n    \\\"firstName\\\": \\\"Jerry\\\" ,\\r\\n    \\\"lastName\\\": \\\"Penn\\\",\\r\\n    \\\"streetAddress1\\\": \\\"12 Main St\\\",\\r\\n    \\\"city\\\": \\\"New York\\\",\\r\\n    \\\"state\\\": \\\"NY\\\",\\r\\n    \\\"postalCode\\\": \\\"10001\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\"\\r\\n  }\\r\\n}\\r\\n\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "YIsGdL1o4H5xd4F1Me99Y",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/subaccounts\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"masterAccountNumber\": \"2819503463\",`+\"\n\"+`\n  \"title\": \"Jerry Penn\",`+\"\n\"+`\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",`+\"\n\"+`\n  \"beneficiary\": {`+\"\n\"+`\n    \"firstName\": \"Jerry\" ,`+\"\n\"+`\n    \"lastName\": \"Penn\",`+\"\n\"+`\n    \"streetAddress1\": \"12 Main St\",`+\"\n\"+`\n    \"city\": \"New York\",`+\"\n\"+`\n    \"state\": \"NY\",`+\"\n\"+`\n    \"postalCode\": \"10001\",`+\"\n\"+`\n    \"countryCode\": \"US\"`+\"\n\"+`\n  }`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"3392de17-6e92-4999-b943-cad5f19b1629\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "P9idftSfTSKm5GwLRp3lQ"
  },
  "results": {
    "languages": [
      {
        "id": "vjutubmVyYLoLEjt5Wkle",
        "language": "200",
        "code": "{\n    \"accountNumber\": \"302022615264\",\n    \"accountType\": \"Deposit\",\n    \"status\": \"Active\",\n    \"ledgerType\": \"Passthrough\",\n    \"productType\": \"Checking\",\n    \"title\": \"Jerry Penn\",\n    \"currentBalance\": 0,\n    \"availableBalance\": 0,\n    \"holdAmount\": 0,\n    \"transactionCount\": 0,\n    \"creditLimit\": 0,\n    \"currency\": \"usd\",\n    \"openedAt\": \"2025-06-24T03:05:04.7952946-04:00\",\n    \"masterAccountNumber\": \"2819503463\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"classification\": \"Personal\",\n    \"beneficiary\": {\n        \"firstName\": \"Jerry\",\n        \"lastName\": \"Penn\",\n        \"streetAddress1\": \"12 Main St\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastMaintenanceAt\": \"2025-06-24T03:05:04.7952946-04:00\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"lastModifiedAt\": \"2025-06-24T03:05:04.8043224-04:00\"\n}",
        "customLabel": ""
      },
      {
        "id": "PHTrfKPkW8FXNnMnFraRX",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2110,\n            \"message\": \"Beneficiary required\"\n        }\n    ]\n}20",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "vjutubmVyYLoLEjt5Wkle"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "masterAccountNumber",
        "kind": "required",
        "type": "string",
        "description": "Master account to open the subledger under"
      },
      {
        "name": "title",
        "kind": "required",
        "type": "string",
        "description": "The name on the account. Usually this is the account holder name, but not always.\n255 characters maximum.",
        "": "The name on the account. Usually this is the account holder name, but not always.\n255 characters maximum."
      },
      {
        "name": "customerId",
        "kind": "optional",
        "type": "string",
        "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record. \nThe ID is in GUID format.",
        "": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record. \nThe ID is in GUID format."
      },
      {
        "name": "classification",
        "kind": "optional",
        "type": "string",
        "description": "Can be one of two types of beneficiaries:\n- Personal\n- Business",
        "": "Can be one of two types of beneficiaries:\n- Personal\n- Business"
      },
      {
        "name": "beneficiary",
        "kind": "optional",
        "type": "Object",
        "description": "Beneficiary profile for this subledger",
        "children": [
          {
            "name": "referenceId",
            "kind": "optional",
            "type": "string",
            "description": "Your organization's reference identifier for the beneficiary of this subaccount. 50 character limit."
          },
          {
            "name": "firstName",
            "kind": "optional",
            "type": "string",
            "description": "For a personal beneficiary, the person's legal first name. 50 character limit."
          },
          {
            "name": "middleName",
            "kind": "optional",
            "type": "string",
            "description": "For a personal beneficiary, the person's legal middle name. 50 character limit."
          },
          {
            "name": "lastName",
            "kind": "optional",
            "type": "string",
            "description": "For a personal beneficiary, the person's legal last name. 50 character limit."
          },
          {
            "name": "entityName",
            "kind": "optional",
            "type": "string",
            "description": "If the beneficiary is a business or organization enter its name. 255 character limit."
          },
          {
            "name": "streetAddress1",
            "kind": "optional",
            "type": "string",
            "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
          },
          {
            "name": "streetAddress2",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information"
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "City full name"
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "State name. We recommend you enter the 2-character state code."
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal code, also known as ZIP code"
          },
          {
            "name": "countryCode",
            "kind": "optional",
            "type": "string",
            "description": "2-letter ISO country code"
          },
          {
            "name": "phoneNumber",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary phone number"
          },
          {
            "name": "emailAddress",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary email address. 255 character limit."
          },
          {
            "name": "notes",
            "kind": "optional",
            "type": "string",
            "description": "General notes about the beneficiary"
          },
          {
            "name": "taxIdType",
            "kind": "optional",
            "type": "string",
            "description": "Tax ID type for the beneficiary:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
          },
          {
            "name": "taxId",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary tax ID number. 9 character minimum for SSN, EIN, or ITIN; 5 character minimum for VAT or Foreign. 20 character maximum."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "For a personal beneficiary, the person's birthdate, in the format YYYY-MM-DD"
          },
          {
            "name": "dateFormed",
            "kind": "optional",
            "type": "string",
            "description": "For a business beneficiary, the date the business was formed, in the format YYYY-MM-DD"
          }
        ],
        "schema": [
          {
            "name": "referenceId",
            "kind": "optional",
            "type": "string",
            "description": "Your organization's reference identifier for the beneficiary of this subaccount. 50 character limit."
          },
          {
            "name": "firstName",
            "kind": "optional",
            "type": "string",
            "description": "For a personal beneficiary, the person's legal first name. 50 character limit."
          },
          {
            "name": "middleName",
            "kind": "optional",
            "type": "string",
            "description": "For a personal beneficiary, the person's legal middle name. 50 character limit."
          },
          {
            "name": "lastName",
            "kind": "optional",
            "type": "string",
            "description": "For a personal beneficiary, the person's legal last name. 50 character limit."
          },
          {
            "name": "entityName",
            "kind": "optional",
            "type": "string",
            "description": "If the beneficiary is a business or organization enter its name. 255 character limit."
          },
          {
            "name": "streetAddress1",
            "kind": "optional",
            "type": "string",
            "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
          },
          {
            "name": "streetAddress2",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information"
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "City full name"
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "State name. We recommend you enter the 2-character state code."
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal code, also known as ZIP code"
          },
          {
            "name": "countryCode",
            "kind": "optional",
            "type": "string",
            "description": "2-letter ISO country code"
          },
          {
            "name": "phoneNumber",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary phone number"
          },
          {
            "name": "emailAddress",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary email address. 255 character limit."
          },
          {
            "name": "notes",
            "kind": "optional",
            "type": "string",
            "description": "General notes about the beneficiary"
          },
          {
            "name": "taxIdType",
            "kind": "optional",
            "type": "string",
            "description": "Tax ID type for the beneficiary:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
          },
          {
            "name": "taxId",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary tax ID number. 9 character minimum for SSN, EIN, or ITIN; 5 character minimum for VAT or Foreign. 20 character maximum."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "For a personal beneficiary, the person's birthdate, in the format YYYY-MM-DD"
          },
          {
            "name": "dateFormed",
            "kind": "optional",
            "type": "string",
            "description": "For a business beneficiary, the date the business was formed, in the format YYYY-MM-DD"
          }
        ]
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The subledger account number"
    },
    {
      "name": "accountType",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account type:\n- GeneralLedger\n- Deposit\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Subledger account status:\n- Closed\n- Active",
      "children": []
    },
    {
      "name": "ledgerType",
      "kind": "optional",
      "type": "string",
      "description": "The subledger type:\n- Passthrough\n- Direct",
      "children": []
    },
    {
      "name": "productType",
      "kind": "optional",
      "type": "string",
      "description": "One of:\n- GeneralLedger\n- Checking\n- Savings\n- TimeDeposit\n- MoneyMarket\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "The name on the account. Usually this is the account holder name, but not always.",
      "children": []
    },
    {
      "name": "currentBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Current balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "availableBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Available amount of the balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "holdAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount of the hold (if any) placed on the account",
      "children": []
    },
    {
      "name": "transactionCount",
      "kind": "optional",
      "type": "Integer",
      "description": "Total number of transactions posted to the account",
      "children": []
    },
    {
      "name": "creditLimit",
      "kind": "optional",
      "type": "integer",
      "description": "Credit limit of the account customer",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was opened. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time that the account was closed.  The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Master account the subledger was opened under",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "Can be one of two types of beneficiaries:\n- Personal\n- Business",
      "children": []
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "Object",
      "description": "Beneficiary profile for this subledger",
      "children": [
        {
          "name": "referenceId",
          "kind": "optional",
          "type": "string",
          "description": "Your organization's reference identifier for the beneficiary of this subaccount"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "The first name of the beneficiary"
        },
        {
          "name": "middleName",
          "kind": "optional",
          "type": "string",
          "description": "The middle name of the beneficiary"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "The last name of the beneficiary"
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "If the beneficiary is a business or organization enter its name. If the beneficiary is an individual enter their full name."
        },
        {
          "name": "streetAddress1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
        },
        {
          "name": "streetAddress2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State name"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary phone number"
        },
        {
          "name": "emailAddress",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary email address"
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "General notes about the beneficiary"
        },
        {
          "name": "taxIdType",
          "kind": "optional",
          "type": "string",
          "description": "Tax ID type for the beneficiary:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary tax ID number"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary birthdate"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date the subledger was formed"
        }
      ]
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastMaintenanceAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account last had maintenance performed on it. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastTransactedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified.",
      "children": []
    },
    {
      "name": "balances",
      "kind": "optional",
      "type": "object",
      "description": "There can be multiple account balances listed",
      "children": [
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Number of the account this information describes"
        },
        {
          "name": "isSubAccount",
          "kind": "optional",
          "type": "boolean",
          "description": "If the account balance presented is for a subledger, true. Otherwise false."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency held in the account"
        },
        {
          "name": "currentBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance including all transactions even if they have not yet settled"
        },
        {
          "name": "availableBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance available to the account holder"
        },
        {
          "name": "holdAmount",
          "kind": "optional",
          "type": "integer",
          "description": "Amount of funds that cannot yet be accessed because the funds are on hold"
        },
        {
          "name": "transactionCount",
          "kind": "optional",
          "type": "integer",
          "description": "Number of transactions in the last period"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastTransactedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddasubaccounts",
  "legacyHash": "09rMP5ADyee998Z5jeC6h"
}
```
:::


[title] Unsuspend card
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Unsuspended](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

Unsuspend a card

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/unsuspend",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/unsuspend",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/unsuspend?id=1c243431-23b8-407c-afa4-b30000abbe0d' \\\n--header 'Idempotency-key: a5b1b129-421e-441b-9661-ec1c0396965e' \\\n--data '{\n  \"notes\": \"card unsuspended\"\n}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}/unsuspend?id=1c243431-23b8-407c-afa4-b30000abbe0d',\n  'headers': {\n    'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"notes\\\": \\\"card unsuspended\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/unsuspend?id=1c243431-23b8-407c-afa4-b30000abbe0d\"\n\npayload = \"{\\r\\n  \\\"notes\\\": \\\"card unsuspended\\\"\\r\\n}\"\nheaders = {\n  'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/unsuspend?id=1c243431-23b8-407c-afa4-b30000abbe0d\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"a5b1b129-421e-441b-9661-ec1c0396965e\"\nrequest.body = \"{\\r\\n  \\\"notes\\\": \\\"card unsuspended\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/unsuspend?id=1c243431-23b8-407c-afa4-b30000abbe0d\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"notes\": \"card unsuspended\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"a5b1b129-421e-441b-9661-ec1c0396965e\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"1c243431-23b8-407c-afa4-b30000abbe0d\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"processorCardId\": \"827277613081398\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Active\",\n    \"statusReasonCode\": \"NotSet\",\n    \"processorCardStatus\": \"B\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Daly Khol\",\n    \"panLastFour\": \"4558\",\n    \"previousCardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n    \"isPinSet\": true,\n    \"expirationDate\": \"2028-06-18\",\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"Completed\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"processorCustomerId\": \"X5R364GI9VXUUK24QH1D\",\n    \"createdAt\": \"2025-06-18T06:25:17.697-04:00\",\n    \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n    \"activatedAt\": \"2025-07-01T02:58:10.4950047-04:00\",\n    \"lastModifiedAt\": \"2025-07-01T02:58:10.4950047-04:00\"\n}",
        "customLabel": ""
      },
      {
        "id": "8H-ASk-noiNvRLqP6yOl_",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2005,\n            \"message\": \"Card is not suspended\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "notes",
        "kind": "optional",
        "type": "string",
        "description": "Maximum length is 60 characters",
        "": "optional"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format. See also here.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- FraudBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's Unique ID for the cardholder",
      "children": []
    },
    {
      "name": "cardDesignId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier associated to the card design to use when overriding a program's default card design",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidunsuspend",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Change subledger customer
[path] Accounts/Subledgers APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.SubAccount.Customer.Changed](docId\:eAs8aFqW7M97baeZUC8Sr)&#x20;

## API reference

Changes the customer that has a relationship with (associated with) a specific subledger (subaccount).

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/subaccounts/{accountNumber}/customer",
  "method": "PUT",
  "url": "    https://sandbox.crbcos.com/core/v1/dda/subaccounts/{accountNumber}/customer",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "P9idftSfTSKm5GwLRp3lQ",
        "language": "curl",
        "code": "curl --location --request PUT 'https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/customer' \\\n--data '{\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\"\n}'",
        "customLabel": ""
      },
      {
        "id": "sjZ6ScuddiYhUaZx4C86K",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'PUT',\n  'url': 'https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/customer',\n  'headers': {\n  },\n  body: '{\\r\\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\"\\r\\n}'\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "gDB_P0O6T95GP_EHqfwx2",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/customer\"\n\npayload = \"{\\r\\n  \\\"customerId\\\": \\\"53c34cf0-4cd2-4768-937b-b30000dffdca\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "FXvCnwdEDvWGa2RUa43LJ",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/customer\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n  \\\"customerId\\\": \\\"53c34cf0-4cd2-4768-937b-b30000dffdca\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "U9BrpgYsCj1siiLdweM6D",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/subaccounts/395388745774/customer\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "P9idftSfTSKm5GwLRp3lQ"
  },
  "results": {
    "languages": [
      {
        "id": "vjutubmVyYLoLEjt5Wkle",
        "language": "200",
        "code": "{\n    \"accountNumber\": \"395388745774\",\n    \"accountType\": \"Deposit\",\n    \"status\": \"Active\",\n    \"ledgerType\": \"Passthrough\",\n    \"productType\": \"Checking\",\n    \"title\": \"Devra business checking test\",\n    \"currentBalance\": 0,\n    \"availableBalance\": 0,\n    \"holdAmount\": 0,\n    \"transactionCount\": 0,\n    \"creditLimit\": 0,\n    \"currency\": \"usd\",\n    \"openedAt\": \"2026-04-20T08:27:10.133-04:00\",\n    \"masterAccountNumber\": \"2418494833\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"classification\": \"Personal\",\n    \"beneficiary\": {\n        \"countryCode\": \"US\"\n    },\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastMaintenanceAt\": \"2026-07-19T02:31:01.2551752-04:00\",\n    \"productId\": \"a68a0fa5-98fe-4cd5-b626-af5b0137e0cb\",\n    \"lastModifiedAt\": \"2026-07-19T02:31:01.2552241-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "vjutubmVyYLoLEjt5Wkle"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number for the subaccount (subledger) you want to change the customer of",
        "": "Account number for the subaccount (subledger) you want to change the customer of"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The subledger account number"
    },
    {
      "name": "accountType",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account type:\n- GeneralLedger\n- Deposit\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Subledger account status:\n- Closed\n- Active",
      "children": []
    },
    {
      "name": "ledgerType",
      "kind": "optional",
      "type": "string",
      "description": "Ledger type:\n- Passthrough\n- Direct",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "The name on the account. Usually this is the account holder name, but not always.",
      "children": []
    },
    {
      "name": "currentBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Current balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "availableBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Available amount of the balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "holdAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount of the hold (if any) placed on the account",
      "children": []
    },
    {
      "name": "transactionCount",
      "kind": "optional",
      "type": "Integer",
      "description": "Total number of transactions posted to the account",
      "children": []
    },
    {
      "name": "creditLimit",
      "kind": "optional",
      "type": "integer",
      "description": "Credit limit of the account customer",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was opened. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time that the account was closed.  The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Master account the subledger was opened under",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "Can be one of two types of beneficiaries:\n- Personal\n- Business",
      "children": []
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "Object",
      "description": "Beneficiary profile for this subledger",
      "children": [
        {
          "name": "referenceId",
          "kind": "optional",
          "type": "string",
          "description": "Your organization's reference identifier for the beneficiary of this subaccount"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "The first name of the beneficiary"
        },
        {
          "name": "middleName",
          "kind": "optional",
          "type": "string",
          "description": "The middle name of the beneficiary"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "The last name of the beneficiary"
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "If the beneficiary is a business or organization enter its name. If the beneficiary is an individual enter their full name."
        },
        {
          "name": "streetAddress1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
        },
        {
          "name": "streetAddress2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State name. We recommend you enter the 2-character state code."
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "The beneficiary phone number"
        },
        {
          "name": "emailAddress",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary email address. 255 character limit."
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "General notes about the beneficiary"
        },
        {
          "name": "taxIdType",
          "kind": "optional",
          "type": "string",
          "description": "Tax ID type for the beneficiary:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary tax ID number"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary birthdate in the format YYYY-MM-DD"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date the subledger was formed, in the format YYYY-MM-DD"
        }
      ]
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastMaintenanceAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the account last had maintenance performed on it. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastTransactedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "balances",
      "kind": "optional",
      "type": "object",
      "description": "There can be multiple account balances listed",
      "children": [
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Number of the account this information describes"
        },
        {
          "name": "isSubAccount",
          "kind": "optional",
          "type": "boolean",
          "description": "If the account balance presented is for a subledger, true. Otherwise false."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency held in the account"
        },
        {
          "name": "currentBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance including all transactions even if they have not yet settled"
        },
        {
          "name": "availableBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance available to the account holder"
        },
        {
          "name": "holdAmount",
          "kind": "optional",
          "type": "integer",
          "description": "Amount of funds that cannot yet be accessed because the funds are on hold"
        },
        {
          "name": "transactionCount",
          "kind": "optional",
          "type": "integer",
          "description": "Number of transactions in the last period"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastTransactedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddasubaccountsaccountnumbercustomer",
  "legacyHash": "ACf5kZIDXMSIHxQOJw3vm"
}
```
:::


[title] Error codes: Accounts
[path] Accounts/

## Overview

This page provides comprehensive error code information for the Accounts API, including error codes, descriptions, and resolution guidance based on actual codebase analysis.

## Error response format

```json
{
    "errors": [
        {
            "code": 2200,
            "message": "Customer not found"
        }
    ]
}
```

## Error codes by category

### Accounts (2001-2022)

Errors related to account operations, status, and opening requirements.

| Code     | Description                                                                                     | Resolution                                                                                            |
| -------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| **2001** | Account not active                                                                              | Account must be in active status to perform this operation; check account status                      |
| **2002** | Status cannot be set to closed manually                                                         | Accounts close automatically when conditions are met; use proper close account workflow               |
| **2003** | Account not open                                                                                | Account must be in open status for this operation; verify account has been opened                     |
| **2004** | Account is closed                                                                               | Account is permanently closed; operations cannot be performed on closed accounts                      |
| **2005** | Account is not closed                                                                           | Operation requires account to be in closed status; verify account status                              |
| **2006** | Account cannot be closed until active holds removed                                             | Remove or expire all active holds before closing account                                              |
| **2007** | Account cannot be closed until active memo posts removed                                        | Remove all active memo posts before closing account                                                   |
| **2008** | Account cannot be closed until all completed transactions have been applied and balance is zero | Apply all pending transactions and ensure account balance is $0.00 before closing                     |
| **2009** | Account cannot be closed until sub accounts are closed                                          | Close all sub-accounts before closing master account                                                  |
| **2010** | Max total accounts exceeded for product                                                         | Product has reached maximum total account limit; contact administrator                                |
| **2011** | Max active accounts exceeded for product                                                        | Product has reached maximum active account limit; close inactive accounts or contact administrator    |
| **2012** | Max daily accounts exceeded for product                                                         | Daily account creation limit reached; retry tomorrow or contact administrator                         |
| **2013** | Account already exists                                                                          | Account with this identifier already exists; use existing account or create with different parameters |
| **2014** | Account number cannot be generated                                                              | System unable to generate account number; retry or contact support                                    |
| **2015** | Account generation attempts exceeded                                                            | Maximum account number generation attempts reached; contact support                                   |
| **2016** | Invalid account number prefix                                                                   | Account number prefix does not match product configuration; verify product settings                   |
| **2017** | Invalid account number length                                                                   | Account number length does not match product configuration; verify product settings                   |
| **2018** | Customer not assigned to same partner as product                                                | Ensure customer and product belong to the same partner                                                |
| **2019** | Customer classification not allowed for product                                                 | Customer classification type is not permitted for this product; verify product configuration          |
| **2020** | Customer must have an address associated                                                        | Add an address to customer profile before opening account                                             |
| **2021** | Customer must have a phone number associated                                                    | Add a phone number to customer profile before opening account                                         |
| **2022** | Customer must be cleared for OFAC prior to account opening                                      | Complete OFAC screening before opening account                                                        |

### Sub accounts (2100-2119)

Errors related to sub-account operations and management.

| Code     | Description                                                                                         | Resolution                                                               |
| -------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| **2100** | Sub account not found                                                                               | Verify the sub-account ID is correct; check if sub-account exists        |
| **2101** | Sub account not active                                                                              | Sub-account must be in active status for this operation                  |
| **2102** | Cannot modify implicit sub account                                                                  | Implicit sub-accounts are system-managed and cannot be manually modified |
| **2103** | Sub account already exists                                                                          | Sub-account with this identifier already exists for master account       |
| **2104** | Sub account is closed                                                                               | Sub-account is permanently closed; operations cannot be performed        |
| **2105** | Sub account is not closed                                                                           | Operation requires sub-account to be in closed status                    |
| **2106** | Master account required                                                                             | Provide master account ID when creating sub-account                      |
| **2107** | Master account not open                                                                             | Master account must be in open status before creating sub-accounts       |
| **2108** | Master account not active                                                                           | Master account must be active before creating sub-accounts               |
| **2109** | Master account not found                                                                            | Verify master account ID is correct and account exists                   |
| **2110** | Beneficiary required                                                                                | Include beneficiary information when creating sub-account                |
| **2111** | Sub account total limit has been reached for master account                                         | Master account has reached maximum total sub-account limit               |
| **2112** | Sub accounts are not enabled for product                                                            | Enable sub-account functionality in product configuration                |
| **2113** | Sub account number cannot be generated                                                              | System unable to generate sub-account number; retry or contact support   |
| **2114** | Sub account generation attempts exceeded                                                            | Maximum sub-account number generation attempts reached                   |
| **2115** | Invalid sub account number prefix                                                                   | Sub-account number prefix does not match product configuration           |
| **2116** | Invalid sub account number length                                                                   | Sub-account number length does not match product configuration           |
| **2117** | Sub account cannot be closed until all completed transactions have been applied and balance is zero | Apply all pending transactions and ensure sub-account balance is $0.00   |
| **2118** | Sub account daily limit has been reached for master account                                         | Daily sub-account creation limit reached for this master account         |
| **2119** | Sub account active limit has been reached for master account                                        | Master account has reached maximum active sub-account limit              |

### Customers (2200-2226)

Errors related to customer profile management and relationships.

| Code     | Description                                                              | Resolution                                                                                                              |
| -------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| **2200** | Customer not found                                                       | Verify the customer ID is correct; check if customer exists using [GET /customers/\{id}](docId\:x36Ga61oFeFCQBnmUG0sS)  |
| **2201** | Customer not active                                                      | Customer must be in active status for this operation                                                                    |
| **2202** | Entity not active                                                        | Entity customer must be active for this operation                                                                       |
| **2203** | Address not active                                                       | Address must be in active status; verify address status                                                                 |
| **2204** | Cannot remove primary address                                            | Mark a different address as primary before removing this address                                                        |
| **2205** | DateFormed required                                                      | Include DateFormed field for business entities                                                                          |
| **2206** | DateFormed cannot be in the future                                       | Provide a DateFormed date that is today or in the past                                                                  |
| **2207** | BirthDate required                                                       | Include BirthDate field for individual customers                                                                        |
| **2208** | BirthDate cannot be in the future                                        | Provide a BirthDate that is today or in the past                                                                        |
| **2209** | Primary owner customer not found                                         | Verify primary owner customer ID is correct and customer exists                                                         |
| **2210** | Primary owner customer not active                                        | Primary owner customer must be active                                                                                   |
| **2211** | Primary owner customer must be a person                                  | Primary owner must be an individual customer, not a business entity                                                     |
| **2212** | Entity and primary owner must be under same partner                      | Ensure entity and primary owner are both associated with the same partner                                               |
| **2213** | Entity and primary owner must be different customers                     | Primary owner cannot be the same as the entity customer                                                                 |
| **2214** | Entity customer must be a business                                       | Entity classification requires business customer type                                                                   |
| **2215** | Owner customer not found                                                 | Verify owner customer ID is correct and customer exists                                                                 |
| **2216** | Owner customer not active                                                | Owner customer must be active                                                                                           |
| **2217** | Owner customer must be a person                                          | Owner must be an individual customer, not a business entity                                                             |
| **2218** | Entity and owner customers must be under same partner                    | Ensure entity and owner are both associated with the same partner                                                       |
| **2219** | Entity and owner must be different customers                             | Owner cannot be the same as the entity customer                                                                         |
| **2220** | Owner relationship already exists for entity customer                    | This owner relationship already exists; cannot create duplicate                                                         |
| **2221** | Unable to deactivate customer due to established account relationship(s) | Remove or deactivate all account relationships before deactivating customer                                             |
| **2222** | Partner not found or is inactive                                         | Verify partner ID is correct and partner is active                                                                      |
| **2223** | An active customer with this tax ID already exists for partner           | Active customer with this tax ID already exists; use existing customer or provide different tax ID                      |
| **2224** | Cannot remove primary identification                                     | Mark a different identification as primary before removing this one                                                     |
| **2225** | Cannot remove primary phone                                              | Mark a different phone number as primary before removing this one                                                       |
| **2226** | Invalid customer entity type                                             | Provide a valid customer entity type                                                                                    |

### Holds (2350-2353)

Errors related to account hold management.

| Code     | Description                           | Resolution                                                 |
| -------- | ------------------------------------- | ---------------------------------------------------------- |
| **2350** | Hold not found                        | Verify the hold ID is correct; check if hold exists        |
| **2351** | Hold is inactive                      | Hold must be active for this operation; verify hold status |
| **2352** | Invalid hold amount                   | Provide a valid hold amount (must be positive number)      |
| **2353** | Expiration date cannot be in the past | Provide an expiration date that is today or in the future  |

### Restrictions (2375-2386)

Errors related to account restriction policies and management.

| Code     | Description                                                                        | Resolution                                                           |
| -------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| **2375** | Restriction not found                                                              | Verify the restriction ID is correct; check if restriction exists    |
| **2376** | Restriction not active                                                             | Restriction must be active for this operation                        |
| **2377** | Restriction policy in request must match restriction policy associated with change | Ensure restriction policy ID matches the policy being modified       |
| **2378** | Restriction policy approval requires dual control                                  | Have a second authorized user approve the restriction policy change  |
| **2379** | Restriction policy not found                                                       | Verify the restriction policy ID is correct and policy exists        |
| **2380** | Restriction policy not active                                                      | Restriction policy must be active for this operation                 |
| **2381** | Restriction policy max restrictions exceeded                                       | Policy has reached maximum number of allowed restrictions            |
| **2382** | Restriction policy name already exists                                             | Restriction policy with this name already exists; use different name |
| **2383** | Pending restriction policy change with name already exists                         | A pending change with this policy name already exists                |
| **2384** | Restriction already inactive                                                       | Restriction is already in inactive status                            |
| **2385** | Restriction policy change not approved                                             | Policy change must be approved before applying                       |
| **2386** | Restriction policy change not pending                                              | Operation requires policy change to be in pending status             |

### Interest accrual (2425-2428)

Errors related to interest accrual calculations and postings.

| Code     | Description                                       | Resolution                                                        |
| -------- | ------------------------------------------------- | ----------------------------------------------------------------- |
| **2425** | Interest accrual not found                        | Verify the interest accrual ID is correct; check if record exists |
| **2426** | Start date must be before end date                | Ensure start date is earlier than end date                        |
| **2427** | Amount must be greater than or equal to zero      | Provide a non-negative amount value                               |
| **2428** | Payments not equal to zero must be posted to core | Post non-zero payment amounts to core before completing operation |

### Memo posts (2450-2452)

Errors related to memo post operations.

| Code     | Description                | Resolution                                                    |
| -------- | -------------------------- | ------------------------------------------------------------- |
| **2450** | Memo post not found        | Verify the memo post ID is correct; check if memo post exists |
| **2451** | Memo post not active       | Memo post must be active for this operation                   |
| **2452** | TransactionCode is invalid | Provide a valid transaction code from the allowed list        |

### Products (2475-2488)

Errors related to product configuration and management.

| Code     | Description                                                  | Resolution                                                             |
| -------- | ------------------------------------------------------------ | ---------------------------------------------------------------------- |
| **2475** | Product not found                                            | Verify the product ID is correct and product exists                    |
| **2476** | Product not active                                           | Product must be active for this operation                              |
| **2477** | Product change not approved                                  | Product change must be approved before applying                        |
| **2478** | Product change not pending                                   | Operation requires product change to be in pending status              |
| **2479** | Product in request must match product associated with change | Ensure product ID matches the product being modified                   |
| **2480** | Classification not allowed for product type                  | Customer classification is not permitted for this product type         |
| **2481** | Product type invalid                                         | Provide a valid product type                                           |
| **2482** | Product name already exists                                  | Product with this name already exists; use different name              |
| **2483** | Unknown account type for product                             | Account type specified is not recognized; verify product configuration |
| **2484** | Pending product change with name already exists              | A pending change with this product name already exists                 |
| **2485** | Interest Accrual not allowed for account type                | Interest accrual is not supported for this account type                |
| **2487** | Statements not allowed for account type                      | Statement generation is not supported for this account type            |
| **2488** | Product change approval requires dual control                | Have a second authorized user approve the product change               |

### Relationships (2525-2534)

Errors related to customer-account relationship management.

| Code     | Description                                                      | Resolution                                                              |
| -------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------- |
| **2525** | Relationship not found                                           | Verify the relationship ID is correct; check if relationship exists     |
| **2526** | Relationship not active                                          | Relationship must be active for this operation                          |
| **2527** | Primary relationship cannot be removed                           | Mark a different relationship as primary before removing this one       |
| **2528** | Relationship not allowed for account type                        | This relationship type is not permitted for this account type           |
| **2529** | RelationshipType not allowed for account classification          | This relationship type is not permitted for this account classification |
| **2530** | IsTaxReportingOwner cannot be enabled for relationship type      | Tax reporting owner flag is not supported for this relationship type    |
| **2531** | Customer must be classified as a person                          | This operation requires an individual customer, not a business entity   |
| **2532** | Customer relationship already exists                             | Relationship between this customer and account already exists           |
| **2533** | Customer must be under same partner as account                   | Ensure customer and account belong to the same partner                  |
| **2534** | Customer must be cleared for OFAC prior to creating relationship | Complete OFAC screening before creating account relationship            |

### Settlements (2550-2554)

Errors related to daily settlement processing.

| Code     | Description                                                              | Resolution                                                                      |
| -------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------- |
| **2550** | Settlement not found                                                     | Verify the settlement ID is correct; check if settlement record exists          |
| **2551** | Daily settlement must be pending                                         | Operation requires settlement to be in pending status                           |
| **2552** | Daily settlement must not be complete                                    | Operation cannot be performed on completed settlements                          |
| **2553** | Daily settlement must be pre-settling and all interest must be processed | Ensure settlement is in pre-settling status and interest processing is complete |
| **2554** | All accounts must be settled before daily settlement can be completed    | Complete settlement for all accounts before finalizing daily settlement         |

### Snapshots (2575-2577)

Errors related to account snapshot operations.

| Code     | Description                            | Resolution                                                       |
| -------- | -------------------------------------- | ---------------------------------------------------------------- |
| **2575** | Snapshot not found                     | Verify the snapshot ID is correct; check if snapshot exists      |
| **2576** | Snapshot account number does not match | Ensure snapshot account number matches the account being queried |
| **2577** | Snapshot partner does not match        | Ensure snapshot partner ID matches the partner context           |

### Statements (2600-2604)

Errors related to account statement generation and management.

| Code     | Description                                   | Resolution                                                    |
| -------- | --------------------------------------------- | ------------------------------------------------------------- |
| **2600** | Statement not found                           | Verify the statement ID is correct; check if statement exists |
| **2601** | Statement not completed                       | Operation requires statement to be in completed status        |
| **2602** | Statement is closed                           | Statement is closed; operations cannot be performed           |
| **2603** | AccountNumber must match statement            | Ensure account number matches the statement being accessed    |
| **2604** | Unable to generate statement for account type | Statement generation is not supported for this account type   |

### Transactions (2625-2650)

Errors related to transaction processing and management.

| Code     | Description                                               | Resolution                                                              |
| -------- | --------------------------------------------------------- | ----------------------------------------------------------------------- |
| **2625** | Transaction not found                                     | Verify the transaction ID is correct                                    |
| **2626** | Debit account not found                                   | Verify debit account number is correct and account exists               |
| **2627** | Debit account not active                                  | Debit account must be active for this transaction                       |
| **2628** | Credit account not found                                  | Verify credit account number is correct and account exists              |
| **2629** | Credit account not active                                 | Credit account must be active for this transaction                      |
| **2630** | Debit and credit accounts must be different               | Provide different account numbers for debit and credit                  |
| **2631** | Debit account type not allowed                            | This account type cannot be used as debit account for this transaction  |
| **2632** | Credit account type not allowed                           | This account type cannot be used as credit account for this transaction |
| **2633** | General ledger transfers require auto approval permission | User must have GL transfer auto-approval permission                     |
| **2634** | Transaction must be pending                               | Operation requires transaction to be in pending status                  |
| **2635** | Transaction not effective                                 | Transaction has not reached effective date                              |
| **2636** | Transaction must be under review                          | Operation requires transaction to be in under-review status             |
| **2637** | Transaction authorization not found                       | Verify transaction authorization exists                                 |
| **2638** | Transaction approval requires dual control                | Have a second authorized user approve the transaction                   |
| **2639** | Invalid transaction status                                | Provide a valid transaction status value                                |
| **2640** | PartnerId not accessible                                  | User does not have access to this partner                               |
| **2641** | PartnerId is required for user type                       | Include partner ID in request for this user type                        |
| **2642** | TransactionCode is invalid                                | Provide a valid transaction code from the allowed list                  |
| **2643** | Max transaction flags exceeded                            | Maximum number of transaction flags reached                             |
| **2644** | Invalid transaction flag                                  | Provide valid transaction flag values                                   |
| **2645** | Transaction flags not allowed                             | Transaction flags are not permitted for this transaction type           |
| **2646** | Transaction filter required                               | Include transaction filter criteria in request                          |
| **2647** | Transaction trace number required                         | Include transaction trace number in request                             |
| **2648** | Transaction proposal required                             | Include transaction proposal data in request                            |
| **2649** | Transaction amount must be greater than zero              | Provide a transaction amount greater than $0.00                         |
| **2650** | Transaction auth status invalid                           | Provide a valid transaction authorization status                        |

### Accounting export (2700)

Errors related to accounting export operations.

| Code     | Description                         | Resolution                                                        |
| -------- | ----------------------------------- | ----------------------------------------------------------------- |
| **2700** | Accounting export is not processing | Accounting export must be in processing status for this operation |


[title] APIs intro
[path] /

:::Iframe{iframeHeight="0" code="<div class=&#x22;section-banner banner-apis&#x22;>&#xA;  <div class=&#x22;banner-text&#x22;>&#xA;    <!--<div class=&#x22;chip chip-info&#x22;>Tutorials</div>-->&#xA;    <h1 class=&#x22;banner-title h1&#x22;>APIs in action</h1>&#xA;    <div class=&#x22;banner-desc&#x22;>Our APIs are built using the OpenAPI specification, making them easy to explore and integrate.</div>&#xA;  </div>&#xA;</div>"}

:::

With Cross River's modern platform and easy-to-use APIs, you can create custom banking solutions.  Built on the OpenAPI specification, our APIs are clear, consistent, and simple to integrate. Use tools like cURL, Swagger or Postman to test endpoints in our sandbox environment. This helps you tailor your solution to fit your business needs. Our API endpoint request examples are provided in multiple codes: cURL, Node.js, Python, Ruby and Go.

Stay updated with real-time events using our webhook system. No need to for API polling to constantly check for updates. Our webhooks notify you instantly about important changes like account updates and transaction statuses.

***

:::Iframe{iframeHeight="0" code="<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Accounts</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Seamless account functionality to create, open, and manage accounts.</p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/customer-management&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-o9BonA46d9Pgd2dY1gYck-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Customer management</h4><p>Create customer records</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/accounts&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-o9BonA46d9Pgd2dY1gYck-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Account management</h4><p>Open customer accounts</p></div>&#xA;        </div></a>&#xA;  </div>&#xA;<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Cards</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Scale debit and credit card programs with a processor-agnostic issuing platform.</p></div>&#xA;<div class=&#x22;products-grid grid-row-1&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/cards&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-EZAsiSdGbMZtqcVe5uLRv-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Issuing and processing</h4><p>Card products and virtual cards</p></div>&#xA;        </div></a>&#xA;  </div>&#xA;<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Payments</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Streamlined payment solutions encompassing both local and international transfers.</p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/payments/instant-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-U3JmJpNNkm4VJ_aaIqQ-J-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>Instant payments</h4><p>Clear and settle immediately</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/payments/cos-card-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-c8_QVGYXLytjtOzbe4xyr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Card payments</h4><p>Send and collect funds</p></div>&#xA;        </div></a>&#xA;   <a href=&#x22;https://docs.crossriver.com/apis/payments/international-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-RMUoFxLXnzLTHXVyTmPd0-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>International payments</h4><p>Via SWIFT or local rails</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/payments/ach&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-NDnV6bvaWMtbhT250MdPS-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>ACH</h4><p>Originate standard and same day</p></div>&#xA;        </div></a>&#xA;	<a href=&#x22;https://docs.crossriver.com/apis/payments/wires&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>Wires</h4><p>Transfer through Fedwire</p></div>&#xA;        </div></a>&#xA;        <a href=&#x22;https://docs.crossriver.com/apis/payments/checks&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-3egU8lopXLO3m_AbrRM70-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Checks</h4><p>Check writing and deposits</p></div>&#xA;        </div></a>&#xA;      </div>&#xA;  <div class=&#x22;v-spacing-fix mt-10&#x22;>&#xA;<h2 class=&#x22;h2&#x22;>Onchain payments</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Stablecoin-based transactions on supported blockchains.</p></div>&#xA;<div class=&#x22;products-grid mt-3&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/onchain-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-c8_QVGYXLytjtOzbe4xyr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Onchain payments</h4><p>Stabelcoin payments solution</p></div>&#xA;        </div></a>&#xA;  </div>  &#xA;<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Lending</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Robust set of API calls to create, update, and manage your loans.</p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/lending/create-and-update-loan&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-GUc6J1MuNPGnu55FiD8R0-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Create and update</h4><p>Create and update a loan</p></div>&#xA;        </div></a>&#xA;        <a href=&#x22;https://docs.crossriver.com/apis/lending/application-decisioning-pav2&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-jASfc4SD0XsZ3y2DUzWfg-20240910-163106.png&#x22;/></div>&#xA;          	<div><h4>Application decisioning</h4><p>Preapproval due dilligence</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/apis/lending/loan-funding-payment-rails&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-GUc6J1MuNPGnu55FiD8R0-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Loan funding/payment rails</h4><p>Method of fund transfer</p></div>&#xA;        </div></a>&#xA;      <a href=&#x22;https://docs.crossriver.com/apis/lending/purchasing-a-loan&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-ORbK9wU8K9DKA7wq2drGX-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Purchase a loan</h4><p>Options using the selling system</p></div>&#xA;        </div></a>&#xA;  </div>"}

:::


[title] API versioning
[path] API Basics/

## API versioning explained

All API endpoints contain a numbered version in the URL. Whenever breaking changes are made to the API, a new major version will be created. A new version will not be created for non-breaking changes.

```curl
https://api.crbcos.com/core/v1/cm/customers
```

| Breaking changes                      | Non-breaking changes                                  |
| ------------------------------------- | ----------------------------------------------------- |
| Adding new required fields to request | Adding new optional fields to request                 |
| Changes to the response format        | Adding new fields to response                         |
| Data type changes                     | Adding new values to fields (e.g. a new status value) |
| Modifying an endpoint URL             | Bug fixes                                             |
| Removing endpoints                    | Adding new endpoints                                  |

:::hint{type="info"}
**Deprecated Versions**
When we release a new major version, we will continue to support the previous version for a period of at least 6 months before it is deprecated.
:::


[title] Idempotency
[path] API Basics/

:::hint{type="warning"}
**IMPORTANT**
Idempotency keys are not applicable to Marketplace Lending (Arix) users.

For Arix, duplicate protection is built into the compliance engine to help prevent double funding.
:::

## Idempotency support

Our system supports idempotency to retry requests without the risk of performing the request multiple times. This is especially useful in situations where there is a network outage, and you aren’t sure if a previous request has been processed successfully.

With an idempotency key, a unique value generated by the client, our server recognizes subsequent retries of the same request. This guarantees that retrying a request with the same idempotency key doesn't result in another execution of the endpoint.

## How it works

In API design, idempotency ensures that making the same request multiple times results in the same outcome as making it once. This is especially useful in scenarios where a client retries a request due to a network timeout or an uncertain response.

Idempotency saves the resulting status code and body of the first request made for any given idempotency key, regardless of whether it succeeded or failed. Subsequent requests with the same idempotency key return the same cached results of the original request, including errors.

For example, if a client sends a request to deposit a check or initiate a payment, an idempotent API prevents the operation from being processed more than once—even if the client resends the same request.

By using an idempotency key, clients can safely retry requests without worrying about unintended side effects like duplicate transactions. This helps improve reliability and user experience in distributed systems where intermittent failures are expected.

### Key generation

The idempotency key is not permanently saved in our system. A previously processed request is determined by a duplicate value in the combination hash of user `client_id` from the token, URI endpoint, `Idempotency-Key`, and request body. If the request body is modified in any way and re-sent, it won't be seen as a duplicate request and is processed normally.

Therefore, if the intent is to process the request a second time, the idempotency key should be changed to a new value.

:::hint{type="info"}
Any duplicated or matched submissions are rejected.
:::

Idempotency keys are eligible to be removed from the system automatically after 7 days.  A new request is executed if a key is reused after the original has been pruned. The idempotency layer compares incoming parameters to those of the original request and errors unless they're the same to prevent accidental misuse.

Results are only saved if an API endpoint started executing. If incoming parameters failed validation, or the request conflicted with another that was executing concurrently, no idempotent result is saved. This is because no API endpoint began execution. It is safe to retry these requests.

### Server side

Our server has an idempotency middleware. This middleware checks each of the requests coming into the application to see if the idempotency key is present in the headers.

If the `Idempotency-Key` is present in the request, it queries the database to check if there’s a record corresponding to that `Idempotency-Key`. If there is, the middleware stops any further execution in the middleware layer itself, and immediately responds with the saved data as a response.

Otherwise, it continues to the application layer and creates a new record in the database with the Idempotency key and the generated response, and finally return the same response to the client.

A previously processed request is determined by a combination of same endpoint, request body and idempotency key. If the request body is modified in anyway, it will not be seen as a duplicate request and will be processed normally.

### Unique key

Every time a request is made with an idempotency key, the server saves resulting status code. Because it is a unique value, the server uses that information to recognize subsequent retries of the same request.

### POST requests

All POST requests accept idempotency keys. Make sure to include a unique key in your request to protect against accidental duplicate requests.

### PUT, GET and DELETE requests

PUT, GET and DELETE requests are naturally idempotent and there is no value in adding an idempotency key. The key is ignored if present in these requests.

## Idempotent requests

To perform an idempotent request, you must provide an `Idempotency-Key`: **xxxxx** in the header.

```curl
 curl --request POST \
     --url https://sandbox.crbcos.com/rtp/v1/payments \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json'
     --header "Idempotency-Key: xxxxxx" \

```

## How to check if a request is idempotent

You can detect if a request is being handled as a duplicate and returning a cached response by looking for the `original-request-id` response header. If an `original-request-id` value appears in the response header, it means the request has been handled as a duplicate.

The `original-request-id `value correlates to the CR generated `request-id` of the original request processed under the idempotency key provided.

:::hint{type="warning"}
**IMPORTANT**
The Idempotency-Key isn't searchable. Use the `clientIdentifer` field in the request payload to have a transaction-unique, searchable ID.
If you use both the `clientIdentifer` and the `Idempotency-Key`, ensure that the `clientIdentifer` doesn't automatically refresh. If it does, the Idempotency-Key hash check will appear unique (even if the Idempotency-Key is the same), and allows the transaction to process as unique.
:::




[title] API structure
[path] API Basics/

## API overview

At Cross River, we have a robust set of APIs spanning our suite of products. To access our APIs and try them out in our sandbox, contact Integration Support to get started.

Our APIs follow REST principles and use object-oriented URLs. Requests are form-encoded, responses are JSON-encoded, and we use standard HTTP methods, authentication, and response codes.

When you call an API, you've sent a request. The answer you receive back is the response.

## Resource/object

A resource (object) is the category of information that you want to receive information for, via API. For example, in our P2C product, a card and a transaction are resources, and in our lending product, a loan is a resource.

### Endpoints and methods

- An endpoint is the URL address of an API that you want to retrieve. You can retrieve an endpoint by using a method.
- The method is the prefix you add to your endpoint to send the relevant API request. They are:

| Prefix | Description                                                                   |
| ------ | ----------------------------------------------------------------------------- |
| GET    | A GET request retrieves resource information. A GET request never has a body. |
| POST   | A POST request adds or creates a resource.                                    |
| PUT    | A PUT request updates or fixes resource information.                          |
| DELETE | A DELETE request deletes or cancels a resource.                               |
| PATCH  | A PATCH request updates or fixes a smaller scope of resource information.     |

## Parameters

There are 3 types of parameters:

### Path

A path parameter can be added to a URL endpoint to return a specific response. The path parameter is added to the URL in curly brackets (**\{ }**) and follows a backslash (**/**).

For example, if you want to retrieve specific information on an account, you can add `/{accountnumber}` to the URL.

When your API includes curly brackets, a path parameter is required.

### Body

Body parameters are the data included in the body of an API, and the information they represent can be changed. The body of the request and response messages are called payloads.

### Query

A query parameter narrows down and filters the results of your request based on the information you are requesting. The query parameter is added to the URL and follows a question mark (**?**). Only GET calls use query parameters.

## Request headers

A request header is an HTTP header used in a request that provides information about the request context. It let's the server tailor the response.

In our documentation requests are presented in cURL.

| Header                          | Description                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Authorization: {bearer token}` | Authorization credentials for HTTP authentication.<br />Include the bearer token in the `Authorization `header.                                                                                                                                                                                                                                                 |
| `Content-Type`                  | Required for operations with a request body such as POST and PUT requests. The value is `application/json` indicating that the request body format is JSON.<br />* To override the `Content-type `in your clients, use the `Accept `header, append the .json suffix or `?format=json`
* To embed the response in a JSON callback, append `?callback=myCallback` |
| `Accept: application/json`      | Sets the output type to JSON.                                                                                                                                                                                                                                                                                                                                   |

```curl
curl --location --request GET 'https://cr-sandbox-domain/{xxx}
--header 'Accept: application/json'
--header 'Authorization: {Bearer token}' 'https://cr-sandbox-domain/'
```

## Request ID

For every request, the response header contains a Requst-ID value. This unique identifier is used by the Cross River Support Team for troubleshooting. We strongly recommend you save this identifier.

## String validation

Most parameters use the following regex: ``^[A-Za-z0-9^ !_\-@'`\t()#""""*\]+{}|~$%&,:.-\\]+$``

## Next steps

When you're ready to start trying out our APIs, follow these steps:

1. [Get API credentials](docId\:Z-MVwOV-p00-xX082NabK)
2. [Get an access token](docId\:kP_8xNEZDhnaTwYlGXt22)  (a bearer token).&#x20;
3. [Use the access token](docId\:kc2TqgwGu54B4c5ZWpGMn)  &#x20;
4. Start calling our [APIs](docId\:sfnHqbapK4Sg6QBZw9P8y).


[title] Static IPs
[path] API Basics/

## Static IP overview

A static IP address, as opposed to a dynamic IP address, is a permanent, non-changing network address that identifies a device on the internet. It is a 32 bit number in the form of a dotted quad (IPv4 format), for example, 192.168.0.12. A static IP address is typically provided by an internet service provider and informs servers of the location of a specific device.

## Public IP overview

A public IP address is an external-facing IP address used to access the Internet. Public IP addresses are provided by the internet service provider (ISP) and assigned to the router. It is a unique IP address on the internet.

## Which IP to supply

To make sure that you provide us with the correct IP address we recommend that you speak with your company's internal IT department. They should provide you with the correct IP address for us to allowlist/whitelist.

:::hint{type="info"}
Cross River Support cannot assist you in finding your public, static IP address.
:::


[title] Lending hooks
[path] Webhooks intro/

## Hooks

*Hooks* is a notification system, used by Arix, to update you on the status of your loan. *Hooks* report to your system with real-time notifications when an event happens on Arix. You have to register to receive hooks for each relevant event type by configuring the destination and delivery method, most commonly webhooks. When that event occurs, a Hook is triggered and reports the updates to your system via the chosen delivery method.

For example, if a rail status changes to *returned*, a `RailUpdated` hook event would be triggered, and reported to the partner notifying them of the event. This notification will only be sent out, if you have previously registered to receive this type of event (`RailUpdated`), and the registration is active.

:::hint{type="warning"}
**IMPORTANT**
To access the links below you must have the following IP addresses allowlisted:

Sandbox - 66.206.202.39 , 66.206.202.12

Production -66.206.202.62 , 66.206.202.15
:::

- Swagger: [https://lendingsandbox.crbcos.com/hooks/swagger/index.html](https://lendingsandbox.crbcos.com/hooks/swagger/index.html)
- Base URL for sandbox: [https://lendingsandbox.crbcos.com/](https://docs.crossriver.com/Content/Lending/HookNotifications.htm#)
- Sandbox UI: [https://lendingappsandbox.crbcos.com/hooks/registrations](https://docs.crossriver.com/Content/Lending/HookNotifications.htm#)
- Production UI: [https://lendingapp.crbcos.com/hooks/registrations](https://docs.crossriver.com/Content/Lending/HookNotifications.htm#)
- API Scope:
  - CosLending\:Hooks\:stg for sandbox
  - CosLending\:Hooks\:prd for production

:::hint{type="info"}
By default, a webhook that fails will retry 3 times with a delay interval of 5 minutes. Different Intervals can be configured for a registration by the CR support team.

Events can also be sent out again manually, if necessary, via an API request.
:::

## Sample Events

### LoanStatusUpdate

This event is reported every time the status of a loan is changed.

```json
{
    "Id": 0,
    "LoanId": "3f07773b-5ba5-43e6-bf30-aea200361dad",
    "Status": 104,
    "TimeStamp": "2022-05-30T03:17:43.6233616+00:00",
    "DateInserted": "0001-01-01T00:00:00+00:00"
}
```

### ComplianceLoanFailed

This event is reported every time the loan fails to pass all compliance checks.

```json
{
     "MPLId": "xxx",
     "LoanId": "...guid...",
     "CreateDate": "date",
     "FailedRulesReasons": [
        {
           "RuleName": "rule name",
           "Rule": "some string",
           "Data": "some string",
           "Result": true,
           "FailedComplianceID": 67
        }
     ]
  }
```

### RailUpdated

This event is reported when there is a status update to a rail that was requested

```json
{ 
      "Id":0,
      "RailId":"…ID of rail that is received when rail created…",
      "LoanId":"fd331267-6ac2-4818-9d0f-ab2f00747b61",
      "RailType":8,
      "AmountFunded":8500.0,
      "RailTransactionId":"…railid from cos…",
      "FundResult": int(this is enum RailResultType), 
      "Message":"Description of rail created if no error returned",
      "ProcessedAt":"2019-12-26T07:05:09Z",
      "TransactionGroupId":"9dde776d-0c04-4bc8-9c9c-e0ad9a83c447"
   }
```

## Addional information

[Hook notifications](docId\:jXGfRbtNHOshrZJYHYKTo)&#x20;

[title] Resend event by ID
[path] Webhooks intro/COS webhooks/Webhook management: COS/

:::ApiMethodV2
```json
{
  "name": "Endpoint: /webhooks/v1/events/{id}/resend",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/webhooks/v1/events/{id}/resend",
  "description": "Manually resends a webhook event to the partner's registered callback URL",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-resend-event",
        "language": "curl",
        "code": "curl --location --request POST 'https://sandbox.crbcos.com/webhooks/v1/events/8d6115c0-2a88-4a58-b731-b306002e8bc2/resend' \\",
        "customLabel": ""
      },
      {
        "id": "nodejs-resend-event",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/webhooks/v1/events/8d6115c0-2a88-4a58-b731-b306002e8bc2/resend',\n  'headers': {},\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "python-resend-event",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/webhooks/v1/events/8d6115c0-2a88-4a58-b731-b306002e8bc2/resend\"\n\npayload = {}\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, json=payload)\n\nprint(response.text)",
        "customLabel": ""
      },
      {
        "id": "ruby-resend-event",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/webhooks/v1/events/8d6115c0-2a88-4a58-b731-b306002e8bc2/resend\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\n\nresponse = https.request(request)\nputs response.read_body",
        "customLabel": ""
      },
      {
        "id": "go-resend-event",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/webhooks/v1/events/8d6115c0-2a88-4a58-b731-b306002e8bc2/resend\"\n  method := \"POST\"\n\n  client := &http.Client {}\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "curl-resend-event"
  },
  "results": {
    "languages": [
      {
        "id": "200-resend-event",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"8d6115c0-2a88-4a58-b731-b306002e8bc2\",\n    \"eventName\": \"Cards.Card.Activated\",\n    \"status\": \"Pending\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"createdAt\": \"2026-05-07T10:30:00Z\",\n    \"lastAttemptedAt\": \"2026-05-07T14:15:30Z\",\n    \"resources\": [\n        \"card:12345678-1234-1234-1234-123456789012\"\n    ],\n    \"details\": [\n        {\n            \"cardId\": \"12345678-1234-1234-1234-123456789012\",\n            \"status\": \"Activated\"\n        }\n    ],\n    \"isPing\": false\n}"
      }
    ],
    "selectedLanguageId": "200-resend-event"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The ID of the event to resent.",
        "": "The ID of the event to resent."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The webhook event ID. This ID is in GUID format."
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "eventName",
      "kind": "optional",
      "type": "string",
      "description": "Webhook event being reported",
      "children": []
    },
    {
      "name": "status",
      "kind": "required",
      "type": "string",
      "description": "Current status of the webhook event:\n- Pending: Event is queued for delivery\n- Success: Event was successfully delivered\n- Failed: Event delivery failed\n- Expired: Event exceeded retry attempts and expired",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "required",
      "type": "string",
      "description": "ISO 8601 timestamp when the event was originally created",
      "children": []
    },
    {
      "name": "lastAttemptedAt",
      "kind": "optional",
      "type": "string",
      "description": "ISO 8601 timestamp of the last delivery attempt. Null if no attempts have been made yet.",
      "children": []
    },
    {
      "name": "resources",
      "kind": "optional",
      "type": "array",
      "description": "Array of resource identifiers affected by this event (e.g., card:guid, payment:guid)",
      "children": []
    },
    {
      "name": "details",
      "kind": "optional",
      "type": "array",
      "description": "Array of key-value pair objects containing event-specific details and metadata",
      "children": []
    },
    {
      "name": "isPing",
      "kind": "optional",
      "type": "boolean",
      "description": "Indicates whether this is a ping/test event (true) or a real event (false)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-webhooksv1eventsidresend",
  "legacyHash": "QnHhV6xew6wos5g667TV4"
}
```
:::

# Overview

Use the **Resend Event by ID&#x20;**&#x65;ndpoint to manually retry delivering a webhook event to your configured callback URL. This helps when the initial delivery failed or timed out. It also helps you recover from a missed event.

# When to Use

Use this endpoint in the following scenarios:

- **Failed delivery recovery**: When an event delivery failed due to network issues or your endpoint downtime
- **Timeout recovery**: When the initial webhook delivery timed out
- **Manual retry**: When support teams need to retry specific webhook deliveries
- **Testing**: To verify webhook processing after you fix your endpoint or during development

# Requirements

Before using this endpoint, ensure:

1. **Event exists**: The event ID must be valid (returns 404 if not found)
2. **Active registration** - you must have an active webhook registration for that event type
3. **Push type only**: The registration must be **Push type** - you cannot resend Poll-type or File-type webhooks
4. **Permissions**: Requires `Permissions.Events.Resend` permission

# How It Works

When you call this endpoint:

1. **Event Retrieval**: The system retrieves the event by its ID from the database
2. **Asynchronous queueing** - the resend request is queued for asynchronous processing via NServiceBus (IssueEventCallback command)
3. **Immediate Response**: The endpoint returns immediately with the current event information - it does **not** wait for the delivery attempt to complete
4. **Background Delivery**: The event is delivered to the registered callback URL in the background
5. **Status Update**: After the delivery attempt, the event's `status` and `lastAttemptedAt` timestamp are updated accordingly

**Important**: This is an asynchronous operation. The 200 OK response means the resend was successfully queued. It doesn't mean the event was delivered. Check the event status after a few seconds using `GET /v1/events/{id}` to verify delivery.

# Error Codes

This endpoint may return the following application-specific error codes:

| Error Code                            | Description                                                 |
| ------------------------------------- | ----------------------------------------------------------- |
| `Events.RegistrationNotFoundForEvent` | No webhook registration found for this event type           |
| `Events.CanOnlyResendPush`            | Can only resend push-type webhooks (not poll or file types) |
| `404 Not Found`                       | Event ID does not exist                                     |
| `403 Forbidden`                       | Missing required permissions                                |

# Important Notes

- **Asynchronous Operation**: This endpoint returns immediately before the resend completes. The response shows the event status when you call the API. It doesn't show status after the resend attempt.
- **Check Delivery Status**: To verify if the resend was successful, use the `GET /v1/events/{id}` endpoint or `GET /v1/events/{id}/logs` endpoint after a few seconds to check the updated status and delivery logs.
- **Any Status Eligible**: You can resend events in any status (Pending, Success, Failed, or Expired).
- **No Idempotency Protection**: Calling resend multiple times will queue multiple deliveries - the system does not prevent duplicate event deliveries.
- **Partner Endpoint**: Ensure the partner's callback URL is available before resending.
- **Registration Status**: If the webhook registration is suspended, the resend may fail.

# Response Fields Explained

## Status Values

The `status` field in the response indicates the current state of the event:

| Status    | Description                                                     |
| --------- | --------------------------------------------------------------- |
| `Pending` | Event is queued and waiting for delivery                        |
| `Success` | The system successfully delivered the event to the callback URL |
| `Failed`  | Event delivery failed (temporary failure, will retry)           |
| `Expired` | Event exceeded maximum retry attempts and expired               |

After calling resend, the event typically returns to `Pending` status while the delivery attempt is processed in the background.

## Resources Array

The `resources` array contains identifiers for entities affected by the event, formatted as `resourceType:guid`:

```json
"resources": [
  "card:12345678-1234-1234-1234-123456789012",
  "account:98765432-8765-4321-8765-987654321098"
]
```

## Details Array

The `details` array contains event-specific metadata as key-value pairs:

```json
"details": [
  {
    "cardId": "12345678-1234-1234-1234-123456789012",
    "status": "Activated",
    "activationMethod": "API"
  }
]
```

# Best Practices

1. **Verify registration**: Confirm the webhook registration is active and properly configured using `GET /v1/registrations`
2. **Monitor delivery**: After resending, wait a few seconds then check your callback to confirm successful delivery
3. **Avoid rapid retries**: Don't repeatedly call resend in quick succession - allow time for asynchronous processing. We recommend 5-10 second intervals.


[title] Update by ID
[path] Webhooks intro/COS webhooks/Webhook management: COS/

:::ApiMethodV2
```json
{
  "name": "Endpoint: /webhooks/v1/registrations/{id}",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/webhooks/v1/registrations/{id}",
  "description": "Updates the details of a webhook registration by ID",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "9E8hdFhhgimEeNy8hrGUU",
        "language": "curl",
        "code": "curl --location --globoff --request PUT 'https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=d0dc5a57-ce2a-40d8-b7c4-b306003dd243' \\\n--data '{\n \n  \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n  \"eventName\": \"ACH.batch.imported\",\n  \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\"\n \n  \n \n \n \n}'",
        "customLabel": ""
      },
      {
        "id": "zL9k7KkDZHMKpd8K6kvob",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/webhooks/v1/registrations/{id}?id=d0dc5a57-ce2a-40d8-b7c4-b306003dd243',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n \\n  \\\"partnerId\\\": \\\"19222b81-0e1e-452d-a842-b2f1011c16f3\\\",\\r\\n  \\\"eventName\\\": \\\"ACH.batch.imported\\\",\\r\\n  \\\"callbackUrl\\\": \\\"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\\\"\\r\\n \\n  \\n \\n \\n \\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "DhH0qytCE94LptCxYSpd6",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=d0dc5a57-ce2a-40d8-b7c4-b306003dd243\"\n\npayload = \"{\\r\\n \\n  \\\"partnerId\\\": \\\"19222b81-0e1e-452d-a842-b2f1011c16f3\\\",\\r\\n  \\\"eventName\\\": \\\"ACH.batch.imported\\\",\\r\\n  \\\"callbackUrl\\\": \\\"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\\\"\\r\\n \\n  \\n \\n \\n \\n}\"\nheaders = {}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "S6kAO4_yomKycIQad45P7",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=d0dc5a57-ce2a-40d8-b7c4-b306003dd243\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n \\n  \\\"partnerId\\\": \\\"19222b81-0e1e-452d-a842-b2f1011c16f3\\\",\\r\\n  \\\"eventName\\\": \\\"ACH.batch.imported\\\",\\r\\n  \\\"callbackUrl\\\": \\\"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\\\"\\r\\n \\n  \\n \\n \\n \\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "hVtbWa8Cw0QnCkJFl_iwn",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=d0dc5a57-ce2a-40d8-b7c4-b306003dd243\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n \n  \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",`+\"\n\"+`\n  \"eventName\": \"ACH.batch.imported\",`+\"\n\"+`\n  \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\"`+\"\n\"+`\n \n  \n \n \n \n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "9E8hdFhhgimEeNy8hrGUU"
  },
  "results": {
    "languages": [
      {
        "id": "FFM8NLKqFpBGWjEsL2aad",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"d0dc5a57-ce2a-40d8-b7c4-b306003dd243\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"eventName\": \"ACH.Batch.Imported\",\n    \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\",\n    \"consecutiveErrors\": 0,\n    \"status\": \"Active\",\n    \"type\": \"Push\",\n    \"format\": \"Basic\"\n}"
      }
    ],
    "selectedLanguageId": "FFM8NLKqFpBGWjEsL2aad"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "optional",
        "type": "string",
        "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format.",
        "children": []
      },
      {
        "name": "partnerId",
        "kind": "required",
        "type": "string",
        "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
        "": "Your unique ID in the Cross River system. This ID is in GUID format."
      },
      {
        "name": "eventName",
        "kind": "required",
        "type": "string",
        "description": "Webhook event being reported 255 character limit.",
        "children": []
      },
      {
        "name": "callbackUrl",
        "kind": "required",
        "type": "string",
        "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required. 255 character limit. Required for Push registrations.",
        "": "required"
      },
      {
        "name": "authuserName",
        "kind": "optional",
        "type": "string",
        "description": "Basic authentication username to include in header of event. 255 character limit.",
        "children": []
      },
      {
        "name": "authPassword",
        "kind": "optional",
        "type": "string",
        "description": "Basic authentication password to include in event header. 255 character limit.",
        "children": []
      },
      {
        "name": "consecutiveErrors",
        "kind": "optional",
        "type": "integer",
        "description": "The number of consecutive errors",
        "": "The number of consecutive errors"
      },
      {
        "name": "lastError",
        "kind": "optional",
        "type": "string",
        "description": "Description of the last error",
        "": "Description of the last error"
      },
      {
        "name": "status",
        "kind": "optional",
        "type": "string",
        "description": "Status of registration:\n- Suspended\n- Active\n- Restarting",
        "": "Status of registration:\n- Suspended\n- Active\n- Restarting"
      },
      {
        "name": "type",
        "kind": "optional",
        "type": "string",
        "description": "Type of registration:\n- Push\n- Poll\n- File",
        "": "Type of registration:\n- Push\n- Poll\n- File"
      },
      {
        "name": "format",
        "kind": "optional",
        "type": "string",
        "description": "Event format:\n- Basic\n- Extended",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format."
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "eventName",
      "kind": "optional",
      "type": "string",
      "description": "Webhook event being reported",
      "children": []
    },
    {
      "name": "callbackURL",
      "kind": "optional",
      "type": "string",
      "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required.",
      "children": []
    },
    {
      "name": "authUsername",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication username to include in header of event",
      "children": []
    },
    {
      "name": "authPassword",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication password to include in event header",
      "children": []
    },
    {
      "name": "consecutiveErrors",
      "kind": "optional",
      "type": "Integer",
      "description": "The number of consecutive errors",
      "children": []
    },
    {
      "name": "lastError",
      "kind": "optional",
      "type": "string",
      "description": "Description of the last error",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of registration:\n- Active\n- Suspended\n- Restarting",
      "children": []
    },
    {
      "name": "type",
      "kind": "optional",
      "type": "string",
      "description": "Type of registration:\n- Push\n- Poll\n- File",
      "children": []
    },
    {
      "name": "format",
      "kind": "optional",
      "type": "string",
      "description": "Event format:\n- Basic\n- Extended",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-webhooksv1registrationsid",
  "legacyHash": "TKggqbwalPFFrUcJsgMbv"
}
```
:::


[title] Register
[path] Webhooks intro/COS webhooks/Webhook management: COS/

:::ApiMethodV2
```json
{
  "name": "Endpoint: /webhooks/v1/registrations",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/webhooks/v1/registrations",
  "description": "Registers for webhook event delivery",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "K11qC5kmTXI07ENz61ymD",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/Webhooks/v1/registrations' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer token' \\\n--data '{\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"eventName\": \"Core.Customer.Address.Added\",\n    \"type\": \"Poll\",\n    \"format\": \"Extended\"\n}\n\n'",
        "customLabel": ""
      },
      {
        "id": "p2TMlg28Z74vo1e4PgyqC",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/Webhooks/v1/registrations',\n  'headers': { 'Content-Type': 'application/json',\n    'Authorization': '••••••'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n    \\\"partnerId\\\": \\\"19222b81-0e1e-452d-a842-b2f1011c16f3\\\",\\r\\n    \\\"eventName\\\": \\\"Cards.Card.Activated\\\",\\r\\n    \\\"callbackUrl\\\": \\\"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\\\",\\r\\n    \\\"type\\\": \\\"Push\\\",\\r\\n    \\\"format\\\": \\\"Extended\\\"\\r\\n}\\r\\n\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "SPxpI1Oypv2SIHlcZ4tVL",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/Webhooks/v1/registrations\"\n\npayload = \"{\\r\\n    \\\"partnerId\\\": \\\"19222b81-0e1e-452d-a842-b2f1011c16f3\\\",\\r\\n    \\\"eventName\\\": \\\"Cards.Card.Activated\\\",\\r\\n    \\\"callbackUrl\\\": \\\"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\\\",\\r\\n    \\\"type\\\": \\\"Push\\\",\\r\\n    \\\"format\\\": \\\"Extended\\\"\\r\\n}\\r\\n\\r\\n\"\nheaders = {'Content-Type': 'application/json',\n  'Authorization': '••••••'}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "uYwMY4GuujEm_eHqBQCrt",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/Webhooks/v1/registrations\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"••••••\"\n\nrequest.body = \"{\\r\\n    \\\"partnerId\\\": \\\"19222b81-0e1e-452d-a842-b2f1011c16f3\\\",\\r\\n    \\\"eventName\\\": \\\"Cards.Card.Activated\\\",\\r\\n    \\\"callbackUrl\\\": \\\"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\\\",\\r\\n    \\\"type\\\": \\\"Push\\\",\\r\\n    \\\"format\\\": \\\"Extended\\\"\\r\\n}\\r\\n\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "HUJYAEZPnn56wuuaAQQUv",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/Webhooks/v1/registrations\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",`+\"\n\"+`\n    \"eventName\": \"Cards.Card.Activated\",`+\"\n\"+`\n    \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\",`+\"\n\"+`\n    \"type\": \"Push\",`+\"\n\"+`\n    \"format\": \"Extended\"`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"••••••\")\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "HUJYAEZPnn56wuuaAQQUv"
  },
  "results": {
    "languages": [
      {
        "id": "b7QqXVpJA-IW0ITJ3V9Ed",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"8d6115c0-2a88-4a58-b731-b306002e8bc2\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"eventName\": \"Cards.Card.Activated\",\n    \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099-9999-32594aee5e04\",\n    \"consecutiveErrors\": 0,\n    \"status\": \"Active\",\n    \"type\": \"Push\",\n    \"format\": \"Extended\"\n}"
      },
      {
        "id": "5i16u7wEVlUx_FmcmrFny",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2002,\n            \"message\": \"Registration for event name already exists\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "b7QqXVpJA-IW0ITJ3V9Ed"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "partnerId",
        "kind": "required",
        "type": "string",
        "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
        "": "Your unique ID in the Cross River system. This ID is in GUID format."
      },
      {
        "name": "eventName",
        "kind": "required",
        "type": "string",
        "description": "Webhook event being reported",
        "children": []
      },
      {
        "name": "callbackUrl",
        "kind": "optional",
        "type": "string",
        "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required.",
        "": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required."
      },
      {
        "name": "authUsername",
        "kind": "optional",
        "type": "string",
        "description": "Basic authentication username to include in header of event. 255 character limit.",
        "children": []
      },
      {
        "name": "authPassword",
        "kind": "optional",
        "type": "string",
        "description": "Basic authentication password to include in event header. 255 character limit.",
        "children": []
      },
      {
        "name": "type",
        "kind": "optional",
        "type": "string",
        "description": "Type of registration:\n- Push\n- Poll\n- File",
        "": "Type of registration:\n- Push\n- Poll\n- File"
      },
      {
        "name": "format",
        "kind": "optional",
        "type": "string",
        "description": "Event format:\n- Basic\n- Extended",
        "": "Event format:\n- Basic\n- Extended"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format."
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "eventName",
      "kind": "optional",
      "type": "string",
      "description": "Webhook event being reported",
      "children": []
    },
    {
      "name": "callbackUrl",
      "kind": "optional",
      "type": "string",
      "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required.",
      "children": []
    },
    {
      "name": "authUsername",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication username to include in header of event",
      "children": []
    },
    {
      "name": "authPassword",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication password to include in event header",
      "children": []
    },
    {
      "name": "consecutiveErrors",
      "kind": "optional",
      "type": "string",
      "description": "The number of consecutive errors",
      "children": []
    },
    {
      "name": "lastError",
      "kind": "optional",
      "type": "string",
      "description": "Description of the last error",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of registration:\n- Active\n- Suspended\n- Restarting",
      "children": []
    },
    {
      "name": "type",
      "kind": "optional",
      "type": "string",
      "description": "Type of registration:\n- Push\n- Poll\n- File",
      "children": []
    },
    {
      "name": "format",
      "kind": "optional",
      "type": "string",
      "description": "Event format:\n- Basic\n- Extended",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-webhooksv1registrations",
  "legacyHash": "FQdVnboS8uHoSD85XTuSG"
}
```
:::


[title] Webhook management: COS
[path] Webhooks intro/COS webhooks/

## Webhook intro

Webhooks return events after an API endpoint is called. The returned `webhook` event contains details relevant to the API call.

Each webhook event has [request and response codes](docId\:kgr9MCuBgnedDuVw70alW).

:::hint{type="info"}
[Get started](docId\:wmg-1Fqwq3bj-D3c3HFfs) with Cross River APIs
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

## API calls

| Action                                           | API call                             | Description                                                          |
| ------------------------------------------------ | ------------------------------------ | -------------------------------------------------------------------- |
| [Register](docId\:XPfsj7tlk8KwqJr-bqpY3)         | `POST /v1/registrations`             | Registers for webhook event delivery                                 |
| [Registered](docId\:f0dW_hntpF8ojBfKP0d9E)       | `GET /v1/registrations/`             | Returns a list of all webhook registrations and their statuses       |
| [Registered by ID](docId:6gnNzO4tLB34qIFTQw1Gb)  | `GET /v1/registrations/{id}`         | Returns a list of all webhook registrations and their statuses by ID |
| [Restart by ID](docId\:hGk9ybGTXn-XwteVS-WVH)    | `PUT /v1/registrations/{id}/restart` | Restarts a webhook registration by ID                                |
| [Delete by ID](docId\:Gq4YMbOCw0ySZ_3ilP3iA)     | `DELETE /v1/registrations/{id}`      | Deletes a webhook registration by ID                                 |
| [Ping by ID](docId\:R3jh3GYncnxwLJgo8WcTD)       | `PUT /v1/registrations/{id}/ping`    | Calls a webhook registration to check its status                     |
| [Update by ID](docId\:QOW9I0jL578vbEEQnWj9m)     | `PUT /v1/registrations/{id}`         | Updates the details of a webhook registration by ID                  |


[title] COS webhooks
[path] Webhooks intro/

## Register for COS webhooks

When you work with the following Cross River products you must register for **specific** webhooks:

- Customer Management
- Accounts
- Card Issuing
- Instant Payments
- Card Payments
- International Payments
- ACH
- Wires
- Book Transfer
- Checks
- Crypto

This is different for [Lending hooks](docId\:ZKxAN6DslZSy0tVIrJFiZ) where you register for a set of webhooks.

These events each return a resource object that contains relevant details about the subject of each event. This eliminates the need to poll the API to discover changes. The full event details are included and sent to your system.

The system typically aggregates event objects every 30 seconds.

:::hint{type="warning"}
**IMPORTANT**
Webhook delivery is guaranteed at-least-once. While rare, it's technically possible to receive the same event twice. Your message handlers should account for that edge case and be [idempotent](docId\:xQC2lRsG0xVv_9NMkqxKk).
:::

## Event registration

There are several ways to receive event notifications:

- **Push:&#x20;**&#x57;ebhook events that are pushed to a registered partner endpoint (a callback URL). Any 2XX response is expected in order for it to be considered successful.&#x20;
- **Poll:&#x20;**&#x57;ebhook events that are reported after a partner polls the events API periodically and calling acknowledge API method for each event successfully processed.
- **File:** Events will be sent to the partner via SFTP in a CSV file once per day.

:::hint{type="info"}
The `POST` calls for the registration methods are the same. Make sure to select the correct registration`type`, either `Push` or`Poll`or `File`. We recommend that you use **Push** registration.
:::

### Register for push events

Use `POST /webhooks/v1/registrations` to [register for webhook events](docId\:XPfsj7tlk8KwqJr-bqpY3) which includes defining the callback URLs where event reports should be delivered.

:::hint{type="warning"}
**IMPORTANT**
Your system must respond to each Push event with a 2xx status code to avoid getting suspended.
:::

In this example, your `partnerId` identifies you as the entity requesting webhook registration to the `eventName: Core.Account.Opened`, which is a `Push` registration. The `eventName` is being registered to the `callbackUrl: https://cos.yourcompanysite.com/account-events`.

:::CodeblockTabs
Sample webhook push registration

```json
{
  "partnerId": "8gj76s99-jhso-89as-nsl8-119nss8ch7ab",
  "eventName": "Core.Account.Opened",
  "type": "Push", 
  "callbackUrl": "https://cos.yourcompanysite.com/account-events",
  "authUsername": "{userName}",
  "authPassword": "{password}",
  "format": "Basic"
}
```
:::

:::hint{type="warning"}
**IMPORTANT**
To confirm your callback URL is registered, call `PUT /v1/registrations{id}/ping`. It simulates a webhook event sent to your callback URL but doesn't include any resources. In addition, the `isPing` flag will be set to make it easy to handle the event appropriately.
:::

### Register to poll for events

Use `POST /webhooks/v1/registrations` to [register for webhook events](docId\:XPfsj7tlk8KwqJr-bqpY3)  to poll for an event status.

:::hint{type="info"}
We recommend you poll for events only if you're not able to receive webhooks via Push.
:::

In the example below, your `partnerId` identifies you as the entity requesting registration to be able to poll the `eventName`: `Core.Account.Opened`.&#x20;

:::CodeblockTabs
Sample Poll Registration

```json
{
  "partnerId": "8gj76s99-jhso-89as-nsl8-119nss8ch7ab",
  "eventName": "Core.Account.Opened",
  "type": "Poll",
  "format": "Basic"
}
```
:::

### Poll for events

Call `GET /webhooks/v1/events/poll` to poll for events.

When you poll the system, the events are sent in `status`: `Pending `and every event has to be manually acknowledged.

:::hint{type="success"}
Don't poll more than once every 30 seconds.
:::

In the example below, the `eventName`:`Core.Account.Opened` polls the deposit account `resources`: `https://sandbox.crbcos.com/core/v1/dda/accounts/...` to check the registration status.

:::CodeblockTabs
Poll Event Response

```json
{
      "id": "g98sxnbv-9000-nks7-jjsy-xn6554bv9h10",
      "eventName": "Core.Account.Opened",
      "status": "Pending",
      "partnerId": "8gj76s99-jhso-89as-nsl8-119nss8ch7ab",
      "createdAt": "2022-11-04T17:12:34.806Z",
      "lastAttemptedAt": "2022-11-04T17:12:34.806Z",
      "resources": [
        "https://sandbox.crbcos.com/core/v1/dda/accounts/1234567890",
        "https://sandbox.crbcos.com/core/v1/dda/accounts/1234567891"
      ],
      "isPing": false
}
```
:::

| Attribute         | Description                                                                           |
| ----------------- | ------------------------------------------------------------------------------------- |
| `id`              | ID of the event being polled                                                          |
| `eventName`       | Name of the event being polled                                                        |
| `status`          | When polling for an event, the status will always be **Pending**                      |
| `partnerId`       | Your ID in the Cross River system. This ID is in GUID format.                         |
| `createdAt`       | When the event was created.                                                           |
| `lastAttemtpedAt` | When the last attempt was.                                                            |
| `resources`       | Elements (such as an account number or an event name) that the event is reporting on. |
| `isPing`          | When set to true, it confirms your callback URL is registered.                        |

### Acknowledging an event

:::hint{type="warning"}
Failing to acknowledge an event will cause the` GET /webhooks/v1/events/poll` endpoint to respond with the same information.
:::

Call `POST /webhooks/v1/events/{id}/acknowledge` to acknowledge that you received the event.

Use the `id` you received when you checked the event `status` in this call. When you acknowledge an event, the status changes from `Pending` to `Success`.

## Delete a registration

Use the event registration `id` you received when you polled the event to delete an event registration.

## Registration event status

:::hint{type="warning"}
Partners must monitor their registration statuses periodically to ensure all registrations remain active. It is recommended that the partner implement automated monitoring or check registration status regularly to catch and resolve suspended registrations quickly.
:::

Monitor the status of your webhook registrations. There are several statuses:

- **Active**: Everything is OK.
- **Suspended**: Something went wrong. Several attempts to send events to this registration failed. No further attempts will be made until registration is restarted.
- **Restarted**: We are attempting to restart this registration. An event must be successfully transmitted before the status will transition back to Active.

:::hint{type="info"}
Event that we can't successfully deliver will expire after 7 days.
:::

If the system can't deliver an event to one of your registrations, it makes **three** delivery attempts (one initial attempt plus two retries). **If all three attempts fail** its registration status changes to `Suspended` and we start to queue all your events for your registration. No further attempts are made to deliver previous or future events to this endpoint until your registration returns to an Active status.

:::hint{type="warning"}
If there is an event delivery failure, don't delete a registration and re-register for the same event. This prevents you from retrieving any events that were queued for delivery, as well as any events that fired in the time between deletion and re-registration.
:::

If you get a`Suspended` status, review the logs of recent failed events to identify the issue. When the issue is resolved, restart your registration with the [Restart by ID](docId\:hGk9ybGTXn-XwteVS-WVH) webhook API.

The status transitions to `Restarting`. If we can deliver an event successfully the status returns to `Active`. When the status returns to `Active` we deliver all the queued events from when your registration status was `suspended`. If we can't successfully deliver at least 1 event, the status returns to `suspended`.

:::hint{type="info"}
When a suspended webhook is restarted, all queued webhook notifications are delivered immediately.
:::

## Event status

These are the possible event statuses:

- **Pending:** Event has been created, but no attempt to send it has been made yet.
- **Success:** Event was successfully delivered to the registered URL.
- **Failed:&#x20;**&#x43;ross River could not deliver the event to the registered URL. See the event logs for more detail on the failure reason.

Whenever you receive an event, it is always in `Pending` status and refers to the event status (an event was created but not yet delivered), **and not the resource status**.

If you want to see if webhooks were delivered successfully, call `GET /webhooks/v1/events/{id}`. If the event was delivered successfully you will see `status:Success`.

## Authentication

Our system optionally supports basic authentication on each registration. You can supply an `AuthUsername` and `AuthPassword` which will be base64 encoded and included as an Authorization header on each webhook you receive.

:::hint{type="warning"}
**IMPORTANT**
The preferred security practice is to use webhook signature verification instead of basic authentication.
:::

## Signatures

Every webhook is signed with a standard HMAC with SHA256 hash. This provides an added layer of protection from replay attacks. Without a signature, an attacker could intercept a valid payload and retransmit it.

The signature can be found in the event's request header and includes the event timestamp. Our system generates a timestamp and signature each time we send an event to your endpoint. If our system retries an event after a previous failure, we generate a new signature and timestamp for the new delivery attempt. If a timestamp is subsequently changed, the signature is then invalid.

:::CodeblockTabs
Sample Request Header

```json
cos-signature:t:2019-04-02T11:33:26.6672036-04:00,
v1:{secret}
```
:::

:::hint{type="warning"}
**IMPORTANT**
If you receive an event with an old timestamp we recommend you discard or flag it. The recommended tolerance between timestamp and time of delivery will vary by your application's requirements, but should usually be less than 20 minutes. We do however, recommend special consideration for situations where there has been an extended outage at either party.
:::

- All signatures are version 1 (v1). Any other schemes besides v1 should ignored.
- The signature is a standard HMAC with SHA256 hash.

## Validating the signature

1. Extract the timestamp and signature from the cos-signature header.
2. Concatenate the timestamp with the event body with a period in between the two values (as illustrated below).
3. Compute an HMAC with the SHA256 hash function. Use the signing secret (provided by the Integration Team) as the key and use the string created in step #2 as the message. Also be sure to base64 encode the computed hash value.
4. Compare the hash generated in step #3 with the signature extracted from the cos-signature header. If the hash and signature match, this is a valid request from COS.
5. Compare the timestamp to the time received. If the difference exceeds your tolerance for accepting messages, you can reject the message or flag it for further review.

:::CodeblockTabs
Sample Timestamp and Body Concatenation

```json
2019-04-02T11:33:26.6672036-04:00.{"id":"123","eventName":"Core.Customer.Email.Added","partnerId":"123","createdAt":"2019-04-02T11:33:26-04:00","resources":["core/v1/cm/customers/123"]}
```
:::

:::hint{type="success"}
**Example:**
A Node.js script that shows how a webhook signature would typically be validated.
:::

:::CodeblockTabs
Sample Validation Script

```json
const crypto = require('crypto');

function validateSignature(header, payload, signingSecret) {
                let headerParts = header.split(',');
                let timestamp = headerParts[0].replace('t:', '');
                let signature = headerParts[1].trim().replace('v1:', '');

                let secret_buffer = Buffer.from(signingSecret, 'base64');              
                let hmac = new crypto.createHmac('sha256', secret_buffer);

                let hmac_digest = hmac.update(`${timestamp}.${payload}`, 'binary').digest('base64');
                console.log(hmac_digest);

                return hmac_digest === signature;
}


let payload = '{"id":"e7ead744-d6ff-4521-863d-abab0176f849","eventName":"Core.Transaction.Completed","status":0,"partnerId":"d6b4c661-b38a-46a3-8963-a9a40131eacf","createdAt":"2020-04-28T18:45:14.57-04:00","resources":["core/v1/transactions/6aa7e3b2-3c85-4647-aa6f-abab0176e18b"],"details":[{"transactionId":"6aa7e3b2-3c85-4647-aa6f-abab0176e18b","transactionCode":"Account Transfer","debitSubAccount":"2058112745","debitMasterAccount":"2058112745","debitResult":"OK","creditSubAccount":"2101120877","creditMasterAccount":"2101120877","creditResult":"OK","rail":"Internal","railId":"0","amount":"100"}]}';
let signatureHeader = 't:2020-04-28T18:45:15.6360965-04:00, v1:MvGXdx1O1P8+YjWglbmxAxkrAgVlMglSPpCzsR/Ly/w=';
let secret = 'uVdwwB9HIFZ+5/8nmta5PXu6p1kxZcQmXPCNBRhiVNuKNBhIgth8MvmlD7FYoVfHOmcpHO5QYN/3HHnJ+6TO6Q==';

let result = validateSignature(signatureHeader, payload, secret);

console.log(result);
```
:::


[title] Restart by ID
[path] Webhooks intro/COS webhooks/Webhook management: COS/

:::ApiMethodV2
```json
{
  "name": "Endpoint: /webhooks/v1/registrations/{id}/restart",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/restart",
  "description": "Restarts webhook registration by ID",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "DcCGEZR7gprRfUUDHeA6f",
        "language": "curl",
        "code": "curl --location --globoff --request PUT 'https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/restart' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "d01WaYHK7P6jw9S4-tpM7",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/webhooks/v1/registrations/{id}/restart',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "zyf4sep7_uIA_HGPe78oq",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/restart\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "G9abCEG6kdBYiM2j99zlX",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/restart\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "QUevvnOFR2wiU4Usovfe4",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}/restart\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "d01WaYHK7P6jw9S4-tpM7"
  },
  "results": {
    "languages": [
      {
        "id": "5QdY8aI7LIPpNoNRTI0x1",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"b38c1805-3f4c-470d-86bb-b288015024ce\",\n  \"partnerId\": \"ba9d0234-26e9-43a2-9070-aedd0108eadb\",\n  \"eventName\": \"Ach.Payment.Received\",\n  \"callbackUrl\": \"https://webhook.site/ef6bdf1e-665c-42e8-9387-e2e89cfc89d9\",\n  \"authUsername\": \"\",\n  \"consecutiveErrors\": 2,\n  \"lastError\": \"2025-02-21T01:15:55.61-05:00\",\n  \"status\": \"Restarting\",\n  \"type\": \"Push\",\n  \"format\": \"Extended\"\n}"
      },
      {
        "id": "f8E5Lrni_OLuxOFCVvB4h",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2011,\n            \"message\": \"Registration is active\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "5QdY8aI7LIPpNoNRTI0x1"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "optional",
        "type": "string",
        "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format.",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "id string\nThe webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format."
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "eventName",
      "kind": "optional",
      "type": "string",
      "description": "Webhook event being reported",
      "children": []
    },
    {
      "name": "callbackURL",
      "kind": "optional",
      "type": "string",
      "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required.",
      "children": []
    },
    {
      "name": "authUserName",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication username to include in header of event",
      "children": []
    },
    {
      "name": "authPassword",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication password to include in event header",
      "children": []
    },
    {
      "name": "consecutiveErrors",
      "kind": "optional",
      "type": "Integer",
      "description": "The number of consecutive errors",
      "children": []
    },
    {
      "name": "lastError",
      "kind": "optional",
      "type": "string",
      "description": "Description of the last error",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of registration:\n- Active\n- Suspended\n- Restarting",
      "children": []
    },
    {
      "name": "type",
      "kind": "optional",
      "type": "string",
      "description": "Type of registration:\n- Push\n- Poll\n- File",
      "children": []
    },
    {
      "name": "format",
      "kind": "optional",
      "type": "string",
      "description": "Event format:\n- Basic\n- Extended",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-webhooksv1registrationsidrestart",
  "legacyHash": "oZEXd-j73Dt8kHzMy_Cfv"
}
```
:::


[title] Customer by ID
[path] Customer management/APIs/

## API reference

Retrieves a specific customer record by customer ID.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "MLk-ypcj_mEBM3hc_O1v9",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/core/v1/cm/customers/bbgfe09f0a-f38b-4daa-a0a2-b2ff00f4e887' ^\n-H 'Authorization: Bearer token'",
        "customLabel": ""
      },
      {
        "id": "9FcoCAkXvJ6nlNMHwOqJH",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/bbgfe09f0a-f38b-4daa-a0a2-b2ff00f4e887',\n  'headers': {\n    'Authorization': 'Bearer token'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "fqLYzKHnp7mZOA8RsN6ot",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/core/v1/cm/customers/bbgfe09f0a-f38b-4daa-a0a2-b2ff00f4e887\"\n\npayload = {}\nheaders = {\n  'Authorization': 'Bearer token'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "NiVnc7ZwBgR9ueJupdWmI",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/bbgfe09f0a-f38b-4daa-a0a2-b2ff00f4e887\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Authorization\"] = \"Bearer token\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "1o1fdEs6SpqxwJTgRQwYZ",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/bbgfe09f0a-f38b-4daa-a0a2-b2ff00f4e887\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer token\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "MLk-ypcj_mEBM3hc_O1v9"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887\",\n    \"cifNumber\": \"863128282889\",\n    \"classification\": \"Personal\",\n    \"status\": \"Active\",\n    \"ofac\": \"Clear\",\n    \"pepScan\": \"Clear\",\n    \"internalList\": \"Clear\",\n    \"name\": {\n        \"firstName\": \"Bob\",\n        \"middleName\": \"F\",\n        \"lastName\": \"Fergusson\",\n        \"fullName\": \"Bob F Fergusson\"\n    },\n    \"profile\": {\n        \"regO\": false,\n        \"citizenshipCountryCode\": \"US\",\n        \"politicallyExposedPerson\": false,\n        \"enableBackupWithholding\": false,\n        \"backupWithholdingPercent\": 0,\n        \"taxIdType\": \"Ssn\",\n        \"taxId\": \"553571593\",\n        \"birthDate\": \"1980-03-06\",\n        \"riskRating\": \"Low\",\n        \"privacyOptOut\": true\n    },\n    \"createdAt\": \"2025-06-17T10:51:41.033-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T05:03:31.9381844-04:00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"dueDiligence\": {\n        \"employmentStatus\": \"Employed\",\n        \"occupation\": \"Technology\",\n        \"occupationDescription\": \"Support\",\n        \"industry\": \"Finance\",\n        \"incomeSource\": \"Salary\",\n        \"incomeState\": \"NJ\",\n        \"incomeCountryCode\": \"US\",\n        \"employer\": \"Cross River\",\n        \"employerState\": \"NJ\",\n        \"employerCountryCode\": \"US\",\n        \"sourceOfFunds\": \"Salary\",\n        \"wealthSource\": \"Salary\",\n        \"wealthSourceDescription\": \"Salary\",\n        \"annualIncome\": 4500000\n    }\n}"
      }
    ],
    "selectedLanguageId": "zuoamZSUzJOVAnQseRBuz"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The unique ID assigned to the customer when the customer record is created. The ID is in GUID format.",
        "": "The unique ID assigned to the customer when the customer record is created. The ID is in GUID format."
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The customerId of the customer record"
    },
    {
      "name": "cifNumber",
      "kind": "optional",
      "type": "string",
      "description": "The Customer Identification File (CIF) number is internal to Cross River, used to identify customers uniquely for compliance purposes",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "The classification type of the customer:\nPersonal (an individual)\nBusiness (a legal entity)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "- Inactive\n- Active",
      "children": []
    },
    {
      "name": "ofac",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "pepScan",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "internalList",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "name",
      "kind": "optional",
      "type": "object",
      "description": "Customer name in detail. Business customers return only the entityName and fullName. Personal customers return all other fields if they have values.",
      "children": [
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "For a business customer, the legal name of the business"
        },
        {
          "name": "prefix",
          "kind": "optional",
          "type": "string",
          "description": "Prefix for name"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "Customer first name"
        },
        {
          "name": "middleName",
          "kind": "optional",
          "type": "string",
          "description": "Customer middle name"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Customer last name"
        },
        {
          "name": "suffix",
          "kind": "optional",
          "type": "string",
          "description": "Suffix for the name"
        },
        {
          "name": "preferredName",
          "kind": "optional",
          "type": "string",
          "description": "Customer preferred name"
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Customer's entire name including middle initial. For a business customer this will be identical to the entityName."
        }
      ]
    },
    {
      "name": "profile",
      "kind": "required",
      "type": "object",
      "description": "Customer banking-relevant information",
      "": "Customer banking-relevant information",
      "children": [
        {
          "name": "taxIdType",
          "kind": "required",
          "type": "string",
          "description": "Tax ID type for the customer:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "required",
          "type": "string",
          "description": "Tax ID number"
        },
        {
          "name": "riskRating",
          "kind": "required",
          "type": "string",
          "description": "Customer risk rating:\n- Low\n- Medium\n- High"
        },
        {
          "name": "regO",
          "kind": "optional",
          "type": "boolean",
          "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity, but is required for an individual."
        },
        {
          "name": "citizenshipCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country of citizenship (2 character ISO code)"
        },
        {
          "name": "politicallyExposedPerson",
          "kind": "optional",
          "type": "boolean",
          "description": "Politically exposed person (PEP). True if PEP, otherwise false. \nThis attribute is not relevant for a business entity, but is required for an individual."
        },
        {
          "name": "enableBackupWithholding",
          "kind": "optional",
          "type": "boolean",
          "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false."
        },
        {
          "name": "backupWithholdingPercent",
          "kind": "optional",
          "type": "number",
          "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of birth in the format \"yyyy-mm-dd\".\nThis attribute is not relevant for a business entity."
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date when legal entity was  formed. In the format \"yyyy-mm-dd\".\nNot relevant for an individual."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Business entity legal classification. Also called Customer entity type."
        },
        {
          "name": "ownershipType",
          "kind": "optional",
          "type": "string",
          "description": "Relevant only for business entities:\n- Exempt\n- Excluded\n- NonProfit\n- LegalEntity"
        },
        {
          "name": "primaryOwnerCustomerId",
          "kind": "optional",
          "type": "string",
          "description": "Customer ID of the primary owner of a business account"
        },
        {
          "name": "parentEntityId",
          "kind": "optional",
          "type": "string",
          "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format."
        },
        {
          "name": "dateOfDeath",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the date of a customer's passing, should that occur. In the format \"yyyy-mm-dd\"."
        },
        {
          "name": "privacyOptOut",
          "kind": "optional",
          "type": "boolean",
          "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
        }
      ],
      "schema": [
        {
          "name": "taxIdType",
          "kind": "required",
          "type": "string",
          "description": "Tax ID type for the entity:\nSSN, EIN, ITIN, VAT, Foreign"
        },
        {
          "name": "taxId",
          "kind": "required",
          "type": "string",
          "description": "Tax ID number. 9 character minimum. 20 character maximum."
        },
        {
          "name": "riskRating",
          "kind": "required",
          "type": "string",
          "description": "Customer risk rating:\nLow, Medium, High"
        },
        {
          "name": "regO",
          "kind": "optional",
          "type": "boolean",
          "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity"
        },
        {
          "name": "citizenshipCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country of citizenship (2 characters)"
        },
        {
          "name": "politicallyExposedPerson",
          "kind": "optional",
          "type": "boolean",
          "description": "Politically exposed person (PEP). True if PEP, otherwise false.\nThis attribute is not relevant for a business entity"
        },
        {
          "name": "enableBackupWithholding",
          "kind": "optional",
          "type": "boolean",
          "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false"
        },
        {
          "name": "backupWithholdingPercent",
          "kind": "optional",
          "type": "integer",
          "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of birth in the format \"yyyy-mm-dd\".\nThis attribute is not relevant for a business entity"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date when legal entity was  formed. In the format \"yyyy-mm-dd\".\nNot relevant for an individual"
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Business entity legal classification. Also called Customer entity type"
        },
        {
          "name": "Customer entity type",
          "kind": "optional",
          "type": "string",
          "description": "Exempt, Excluded, NonProfit, LegalEntity"
        },
        {
          "name": "primaryOwnerCustomerId",
          "kind": "optional",
          "type": "string",
          "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format"
        },
        {
          "name": "parentEntityId",
          "kind": "optional",
          "type": "string",
          "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format"
        },
        {
          "name": "dateOfDeath",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the date of a customer's passing, should that occur. In the format \"yyyy-mm-dd\"."
        },
        {
          "name": "privacyOptOut",
          "kind": "optional",
          "type": "boolean",
          "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
        }
      ]
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "dueDiligence",
      "kind": "optional",
      "type": "object",
      "description": "Details for due diligence compliance for an individual customer. To  be used when required.",
      "": "Details for due diligence compliance for an individual customer. To  be used when required",
      "children": [
        {
          "name": "employmentStatus",
          "kind": "optional",
          "type": "string",
          "description": "How and if the customer is employed:\n- Employed\n- SelfEmployed\n- Retired\n- Unemployed\n- Student"
        },
        {
          "name": "occupation",
          "kind": "optional",
          "type": "string",
          "description": "Possible occupation types:\n- Executive\n- Sales\n- Consulting\n- Government\n- Healthcare\n- FinanceAccounting\n- Technology\n- ScienceEngineering\n- FoodServices\n- LegalServices\n- Manufacturing\n- Other"
        },
        {
          "name": "occupationDescription",
          "kind": "optional",
          "type": "string",
          "description": "Any further details needed about the customer's occupation"
        },
        {
          "name": "industry",
          "kind": "optional",
          "type": "string",
          "description": "Possible industries:\n- Agriculture\n- Mining\n- Utilities\n- Construction\n- Manufacturing\n- ChemicalManufacturing\n- MerchantWholesale\n- Automotive\n- RetailFurnishing\n- RetailElectronics\n- RetailHome\n- RetailFood\n- HealthStores\n- Gasoline\n- RetailClothing\n- RetailSporting\n- RetailNonStore\n- Transportation\n- Publishing\n- Finance\n- RealEstate\n- RentalServices\n- ProfessionalNonLegal\n- Accounting\n- Travel\n- EducationalMedical\n- PerformingArts\n- RecreationGambling\n- FoodService\n- Maintenance\n- Laundry\n- ReligiousCharity\n- PublicAdministration"
        },
        {
          "name": "incomeSource",
          "kind": "optional",
          "type": "string",
          "description": "Possible income sources:\n- Salary\n- SelfEmployed\n- Inheritance\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- FamilySupport"
        },
        {
          "name": "incomeState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer earns income"
        },
        {
          "name": "incomeCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO code of the country where the customer earns income"
        },
        {
          "name": "employer",
          "kind": "optional",
          "type": "string",
          "description": "Name of customer's employer"
        },
        {
          "name": "employerState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer employer is based"
        },
        {
          "name": "employerCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO code of the country where the customer's employer is based"
        },
        {
          "name": "sourceOfFunds",
          "kind": "optional",
          "type": "string",
          "description": "Customer funds the account from one of these sources:\n- SelfEmployed\n- GeneralEmployee\n- SeniorExecutive\n- Retired\n- Homemaker\n- InheritanceGift\n- Investment\n- Salary\n- BusinessOwner\n- Alimony\n- Retirement\n- Lottery\n- Annuity\n- TrustIncome\n- RealEstate\n- GovernmentBenefits\n- LegalSettlement"
        },
        {
          "name": "wealthSource",
          "kind": "optional",
          "type": "string",
          "description": "Source of customer wealth:\n- Salary\n- SelfEmployed\n- Inheritance\n- FamilySupport\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- BusinessSale\n- Other"
        },
        {
          "name": "wealthSourceDescription",
          "kind": "optional",
          "type": "string",
          "description": "Further details about the customer's source of wealth"
        },
        {
          "name": "annualIncome",
          "kind": "optional",
          "type": "integer",
          "description": "Customer annual income. For example, 100 US dollars appears as 10000."
        }
      ],
      "schema": [
        {
          "name": "employmentStatus",
          "kind": "optional",
          "type": "string",
          "description": "How and if the customer is employed:\n\"Employed\"\n\"SelfEmployed\"\n\"Retired\"\n\"Unemployed\"\n\"Student\""
        },
        {
          "name": "occupation",
          "kind": "optional",
          "type": "string",
          "description": "Possible occupation types:\n\"Executive\"\n\"Sales\"\n\"Consulting\"\n\"Government\"\n\"Healthcare\"\n\"FinanceAccounting\"\n\"Technology\"\n\"ScienceEngineering\"\n\"FoodServices\"\n\"LegalServices\"\n\"Manufacturing\"\n\"Other\""
        },
        {
          "name": "occupationDescription",
          "kind": "optional",
          "type": "string",
          "description": "Any further details needed about the customer's occupation. Up to 255 characters"
        },
        {
          "name": "industry",
          "kind": "optional",
          "type": "string",
          "description": "Possible industries:\nAgriculture\nMining\nUtilities\nConstruction\nManufacturing\nChemicalManufacturing\nMerchantWholesale\nAutomotive\nRetailFurnishing\nRetailElectronics\nRetailHome\nRetailFood\nHealthStores\nGasoline\nRetailClothing\nRetailSporting\nRetailNonStore\nTransportation\nPublishing\nFinance\nRealEstate\nRentalServices\nProfessionalNonLegal\nAccounting\nTravel\nEducationalMedical\nPerformingArts\nRecreationGambling\nFoodService\nMaintenance\nLaundry\nReligiousCharity\nPublicAdministration"
        },
        {
          "name": "incomeSource",
          "kind": "optional",
          "type": "string",
          "description": "Possible income sources:\nSalary\nSelfEmployed\nInheritance\nInvestments\nRetirement\nRentalIncome\nGovernmentBenefits\nFamilySupport"
        },
        {
          "name": "incomeState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer earns income"
        },
        {
          "name": "incomeCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code of the country where the customer earns income"
        },
        {
          "name": "employer",
          "kind": "optional",
          "type": "string",
          "description": "Name of customer's employer"
        },
        {
          "name": "employerState",
          "kind": "optional",
          "type": "string",
          "description": "State where customer employer is based"
        },
        {
          "name": "employerCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code of the country where the customer's employer is based"
        },
        {
          "name": "sourceOfFunds",
          "kind": "optional",
          "type": "string",
          "description": "Customer funds the account from one of these sources:\nSelfEmployed\nGeneralEmployee\nSeniorExecutive\nRetired\nHomemaker\nInheritanceGift\nInvestment\nSalary\nBusinessOwner\nAlimony\nRetirement\nLottery\nAnnuity\nTrustIncome\nRealEstate\nGovernmentBenefits\nLegalSettlement"
        },
        {
          "name": "wealthSource",
          "kind": "optional",
          "type": "string",
          "description": "Source of customer wealth:\nSalary\nSelfEmployed\nInheritance\nFamilySupport\nInvestments\nRetirement\nRentalIncome\nGovernmentBenefits\nBusinessSale\nOther"
        },
        {
          "name": "wealthSourceDescription",
          "kind": "optional",
          "type": "string",
          "description": "Further details about the customer's source of wealth. 255 characters maximum"
        },
        {
          "name": "annualIncome",
          "kind": "optional",
          "type": "integer",
          "description": "Customer annual income"
        }
      ]
    },
    {
      "name": "businessDueDiligence",
      "kind": "optional",
      "type": "object",
      "description": "Details for due diligence compliance for a business entity. To be used when required",
      "": "Details for due diligence compliance for a business entity. To be used when required",
      "children": [
        {
          "name": "natureOfBusiness",
          "kind": "optional",
          "type": "string",
          "description": "Nature of the business"
        },
        {
          "name": "naics",
          "kind": "optional",
          "type": "string",
          "description": "Business's North American Industry Classification System code"
        },
        {
          "name": "merchantCategoryCode",
          "kind": "optional",
          "type": "string",
          "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide. nn characters maximum"
        },
        {
          "name": "businessUrl",
          "kind": "optional",
          "type": "string",
          "description": "URL of the business"
        },
        {
          "name": "relationshipFormationDate",
          "kind": "optional",
          "type": "string",
          "description": "The date the relationship was formed"
        }
      ],
      "schema": [
        {
          "name": "natureOfBusiness",
          "kind": "optional",
          "type": "string",
          "description": "255 characters maximum"
        },
        {
          "name": "naics",
          "kind": "optional",
          "type": "string",
          "description": "Business's North American Industry Classification System code"
        },
        {
          "name": "merchantCategoryCode",
          "kind": "optional",
          "type": "string",
          "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide. nn characters maximum"
        },
        {
          "name": "businessUrl",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "relationshipFormationDate",
          "kind": "optional",
          "type": "string",
          "description": ""
        }
      ]
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum",
      "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum"
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomersid",
  "legacyHash": "eP_4FP7YdE669ic4Karxe"
}
```
:::


[title] Update name
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- Core.Customer.Name.Changed

## API reference

Updates the name on a customer record.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{customerId}/name",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/name",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "xK0mDfrnuxTC3HLNjR8-M",
        "language": "curl",
        "code": "curl -L -X PUT 'https://sandbox.crbcos.com/core/v1/cm/customers/4e2a0d37-3e93-461d-9f88-b300007af893/name' ^\n-H 'Content-Type: application/json' ^\n-H 'Authorization: Bearer token' ^\n-d '{\n    \"firstName\": \"Brandon\",\n    \"lastName\": \"Sanderson\"\n}'",
        "customLabel": ""
      },
      {
        "id": "M8UW6kpZkfUBriicsGKAe",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/4e2a0d37-3e93-461d-9f88-b300007af893/name',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer token'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"firstName\": \"Brandon\",\n  \"lastName\": \"Sanderson\"\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "NODX906lIJhvoJponVP4L",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/core/v1/cm/customers/4e2a0d37-3e93-461d-9f88-b300007af893/name\"\n\npayload = json.dumps({\n  \"firstName\": \"Brandon\",\n  \"lastName\": \"Sanderson\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': '••••••'\n}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "UhYAJ4U8DKsESN6jyBmfx",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/4e2a0d37-3e93-461d-9f88-b300007af893/name\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"••••••\"\nrequest.body = JSON.dump({\n  \"firstName\": \"Brandon\",\n  \"lastName\": \"Sanderson\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "Fa3Ra4Qu_Jp9UzBxNEP3d",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/4e2a0d37-3e93-461d-9f88-b300007af893/name\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"firstName\": \"Brandon\",`+\"\n\"+`\n    \"lastName\": \"Sanderson\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MjUwMDAyMSwiaWF0IjoxNzUyNTAwMDIxLCJleHAiOjE3NTI1MDM2MjEsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJiNzk5OTUxZDQ3ZWI0MTBkOTJiOWRhOTAxYjhmZmE2OSIsImp0aSI6IjNEMkM4NkNDRjg1NEQ1NDA4RDgyODc2RDhFOEVEMUU5In0.Wa9ddUdwJD2VBbY-B5u3zEAajtyt5zm_78uVQhvlDcrVpsq_3ZZxj2NvOOAE6nNihKDfBB-_dZEnzRxi5jrAQGw1ZtISvdZiO7ayIUtQj92BbSV80CAJAX1s6KYMQ_vG42XU-EHrAvJk42MZj87lBfT28VwLMahZaSADgQ9d7iVun9LjdVWWlk9915TCpvaQbD2CMFq237ArsnCo567hndD9vkbSIjQ85HJl4XishFYGboL0WQf5ZikDe-ALXUGfjUp8KMG-8fLFDOL7l9V9KJX-vYEkamBD74BRHVOoIWx-3lPf6-drEMyKAzyhmP9QtFJZcc3vxVE-gMXTpoPF3A\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xK0mDfrnuxTC3HLNjR8-M"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"firstName\": \"Brandon\",\n    \"lastName\": \"Sanderson\",\n    \"fullName\": \"Brandon Sanderson\"\n}"
      }
    ],
    "selectedLanguageId": "zuoamZSUzJOVAnQseRBuz"
  },
  "request": {
    "pathParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The customer ID of the customer record to update",
        "": "The customer ID of the customer record to update"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "entityName",
        "kind": "optional",
        "type": "string",
        "description": "Name of the business if opening a business account. 255 character maximum.",
        "": "optional"
      },
      {
        "name": "prefix",
        "kind": "optional",
        "type": "string",
        "description": "Prefix for name",
        "": "Prefix for name"
      },
      {
        "name": "firstName",
        "kind": "optional",
        "type": "string",
        "description": "Customer first name. 100 characters maximum",
        "": "optional"
      },
      {
        "name": "middleName",
        "kind": "optional",
        "type": "string",
        "description": "Customer middle name. 50 characters maximum",
        "": "Customer middle name. 50 characters maximum"
      },
      {
        "name": "lastName",
        "kind": "optional",
        "type": "string",
        "description": "Customer last name. 100 characters maximum",
        "": "Customer last name. 100 characters maximum"
      },
      {
        "name": "suffix",
        "kind": "optional",
        "type": "string",
        "description": "Suffix for the name",
        "": "Suffix for the name"
      },
      {
        "name": "preferredName",
        "kind": "optional",
        "type": "string",
        "description": "Customer preferred name. 255 character maximum",
        "": "Customer preferred name. 255 character maximum"
      },
      {
        "name": "fullName",
        "kind": "optional",
        "type": "string",
        "description": "Customer's entire name including middle  initial. 255 characters maximum",
        "": "Customer's entire name including middle  initial. 255 characters maximum"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "entityName",
      "kind": "optional",
      "type": "string",
      "description": "Name of the business if opening a business account"
    },
    {
      "name": "prefix",
      "kind": "optional",
      "type": "string",
      "description": "Prefix for name",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "boolean",
      "description": "Customer first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Customer middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Customer last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Suffix for the name",
      "children": []
    },
    {
      "name": "preferredName",
      "kind": "optional",
      "type": "string",
      "description": "Customer preferred name",
      "children": []
    },
    {
      "name": "fullName",
      "kind": "optional",
      "type": "string",
      "description": "Customer's entire name including middle  initial",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomerscustomeridname",
  "legacyHash": "Z2UswgK_wZ756ERa8KUqx"
}
```
:::


[title] Request and response codes: customer management
[path] Customer management/

## Customer entity types

| Entity Type                                        |
| -------------------------------------------------- |
| Limited Liability Company                          |
| Sole Proprietorship                                |
| Corporation                                        |
| Not for Profit                                     |
| Investment/Hedge/Private Equity Fund               |
| Trust                                              |
| Special Purpose Vehicle/Special Purpose Entity     |
| Private Investment Company/Private Holding Company |

## OFAC/PEP status

| Status    | Description                                                                      |
| --------- | -------------------------------------------------------------------------------- |
| Pending   | A scan is being performed on the customer.                                       |
| Clear     | A scan has been completed and the customer has been cleared.                     |
| Failed    | A scan has been completed but the customer must be reviewed by our BSA/AML Team. |
| Reviewing | The customer is currently being reviewed by our BSA/AML Team.                    |




[title] Get statement doc info
[path] Accounts/Account mgmt APIs/



## API reference

Returns information about monthly statement documents using a unique statement ID returned in the [Get statement info](docId\:IhY7U89HOIdGyk_84eBZc) call. The PDF is stored on our production server. Request a raw PDF file with the [Get statement PDF](docId:0UFqTtK_tYvg-zF44H0Cr) call.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/dda/accounts/{accountNumber}/statements/{statementId}/documents",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/statements/{statementId}/documents",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "ORrps9PK6LtEodAlYXBX5",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents' \\\n--header 'Authorization: Bearer <token>'",
        "customLabel": ""
      },
      {
        "id": "WxqMH8hlVDflODyG42YXY",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents',\n  'headers': {\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "-ybDqBVDmTQq-ekETeRrT",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"GET\", \"/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "oi9IQfEntyr-2PFcwOiQC",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Authorization\"] = \"Bearer <token>\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "DyNvJLlAjXJ-2Q-TZ3VU2",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ORrps9PK6LtEodAlYXBX5"
  },
  "results": {
    "languages": [
      {
        "id": "Bpj4xGoxiAWF9cgszfQRr",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"a2276ec1-e851-41e0-8ae1-b38800747098\",\n            \"statementId\": \"6daf4caa-34d5-4e65-9f98-b388004f0af7\",\n            \"fileType\": \"Pdf\",\n            \"description\": \"Document 1\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"createdAt\": \"2025-11-01T03:03:57-04:00\",\n            \"lastModifiedAt\": \"2025-11-01T03:03:57-04:00\",\n            \"fileName\": \"Devra Test_2819503463__6DAF4CAA-34D5-4E65-9F98-B388004F0AF7__2025-10-31.pdf\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 1,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": false\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Bpj4xGoxiAWF9cgszfQRr"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the account that you want the bank statement for",
        "": "Number of the account that you want the bank statement for"
      },
      {
        "name": "statementId",
        "kind": "required",
        "type": "string",
        "description": "The ID of the statement document you want. Find this ID in the 'id' parameter value of the GET statement info response.",
        "": "The ID of the statement document you want. Find this ID in the 'id' parameter value of the GET statement info response."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "ID of the specific document "
    },
    {
      "name": "statementId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the statement, returned as 'id' in the GET statement info call",
      "children": []
    },
    {
      "name": "fileType",
      "kind": "optional",
      "type": "string",
      "description": "Format of the statement file:\n- Png\n- Pdf\n- Csv",
      "children": []
    },
    {
      "name": "description",
      "kind": "optional",
      "type": "string",
      "description": "System description created for the statement document",
      "children": []
    },
    {
      "name": "data",
      "kind": "optional",
      "type": "string",
      "description": "Not used",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the document was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "fileName",
      "kind": "optional",
      "type": "string",
      "description": "Statement document filename",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-v1ddaaccountsaccountnumberstatementsstate",
  "legacyHash": "DgZcT5IaqqXtxp9W2XaxR"
}
```
:::


[title] Account details
[path] Accounts/Deposit sweeps APIs/

## API reference

Returns specific details of an account enabled for deposit sweeps.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /SweepsIntrafi/v1/accounts/{accountNumber}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/SweepsIntrafi/v1/accounts/{accountNumber}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "HFyzOHIwsJoxZInmLVxaC",
        "language": "curl",
        "code": "curl --location --globoff 'SweepsIntrafi/v1/accounts/2666129453}' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json'",
        "customLabel": ""
      },
      {
        "id": "BbTPWDDZ1RMOQv9smRTwD",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'SweepsIntrafi/v1/accounts/2666129453',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   }\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "hM_EI_DGOfjIOtH-nUH1k",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"SweepsIntrafi/v1/accounts/2666129453\"\n\npayload = {}\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "L-WneBdg70foOfh8ha2Wd",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"SweepsIntrafi/v1/accounts/2666129453\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\n\nresponse = http.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "trey5mJ371445eC4VuqzQ",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/SweepsIntrafi/v1/accounts/2666129453\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MDY1ODE5MCwiaWF0IjoxNzUwNjU4MTkwLCJleHAiOjE3NTA2OTQxOTAsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJrZmN1bGZnREF0TkJFVHpSbTFHWUhyazlDemN3ZUg0VSIsImp0aSI6IkU3OTJFNkVCQzMyQjAyODM3Q0FGNzFCREJCNjI0MkY4In0.vsG1iXkB9RkWexd7XcRhL9GTUTU8RhWbVwM8W3ov2em3RSePtcC8jK7c2O9qrWjVTs54lMyEqWhByZYJXIPlGXF8OwiNyoxiy9boeCXqVOTmS9Wix7K2FBQmPsMjZ7fZQqnqKLLNgrJhEf88c1MoN5DBwhhrH2oFsblZlnSd-DhNJYOyJRM45rE88ZfDdny_plLFxUo7DQ6BIjAv4B7QQcDDOXzAWlNgux7Txq_aaemDTkwLV2TjVyfG547iHz_pgfY_87tPPUpN9YA1w6NVK27DePsKbFLuErbCSJeAZPXQQYJJ0pS27kQNQeLXxGDsM3KjpHLl_CQ4aU08Nb_GSw\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "HFyzOHIwsJoxZInmLVxaC"
  },
  "results": {
    "languages": [
      {
        "id": "QqHiLt-FHhPgn7vzGSzAQ",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"accountNumber\": \"2666129453\",\n  \"status\": \"Active\",\n  \"title\": \"Sweeps Test 2\",\n  \"bankExclusions\": [\n    \"10015\"\n  ],\n  \"coreBalance\": 125627321,\n  \"coreBalanceAsOf\": \"2024-09-23T17:51:14.153-04:00\",\n  \"custodialBalance\": 25627321,\n  \"networkBalance\": 100000000,\n  \"networkBalanceAsOf\": \"2024-09-24T16:33:43.613-04:00\",\n  \"maxSweepAmount\": 0,\n  \"productId\": \"e4404005-03c1-4710-b759-b13700ebfac4\",\n  \"partnerId\": \"6e6769ec-99e0-4c4f-8ae8-b13700eab0fc\",\n  \"openedAt\": \"2024-05-14T16:26:10.227-04:00\",\n  \"lastModifiedAt\": \"2024-09-24T16:33:43.6128282-04:00\",\n  \"productName\": \"ibs Checking Product\",\n  \"partnerName\": \"Ibrahim Saeed Partner\",\n  \"balances\": [\n    {\n      \"bankNumber\": \"11866\",\n      \"bankName\": \"The Bryn Mawr Trust Company\",\n      \"balance\": 0,\n      \"createdAt\": \"0001-01-01T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2024-05-17T16:38:43.7709924-04:00\"\n    },\n    {\n      \"bankNumber\": \"14712\",\n      \"bankName\": \"First National Bank\",\n      \"balance\": 24700000,\n      \"createdAt\": \"0001-01-01T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2024-05-17T16:38:43.6692936-04:00\"\n    },\n     {\n      \"bankNumber\": \"32773\",\n      \"bankName\": \"Eastern Bank\",\n      \"balance\": 24700000,\n      \"createdAt\": \"0001-01-01T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2024-09-03T16:38:57.7836638-04:00\"\n    }\n    ]\n}"
      },
      {
        "id": "MkzOjj1RXMGrSWJeOOsVN",
        "language": "404",
        "customLabel": "",
        "code": "{\n  \"message\": \"Account not found.\"\n}"
      }
    ],
    "selectedLanguageId": "QqHiLt-FHhPgn7vzGSzAQ"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of account you want to look up ",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of account you want to look up "
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Inactive or Active",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "The name on the account. Usually this is the account holder name, but not always.\n255 characters maximum.",
      "children": []
    },
    {
      "name": "bankExclusions",
      "kind": "optional",
      "type": "Array",
      "description": "IDs of the banks to exclude from the network of banks where funds may be swept to",
      "children": []
    },
    {
      "name": "coreBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Total available balance at Cross River",
      "children": []
    },
    {
      "name": "coreBalanceAsOf",
      "kind": "optional",
      "type": "string",
      "description": "Date and time of the core balance. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "custodialBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Total amount held at Cross River",
      "children": []
    },
    {
      "name": "networkBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Total amount swept to IntraFi ",
      "children": []
    },
    {
      "name": "networkBalanceAsOf",
      "kind": "optional",
      "type": "String",
      "description": "Date and time of the network balance. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "maxSweepAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Max sweep amount will always be 0 as it refers to an override - program sweep limit is not reflected here",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was opened. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productName",
      "kind": "optional",
      "type": "string",
      "description": "Name associated with the product ID, for example, \"Fintech123 checking product\" ",
      "children": []
    },
    {
      "name": "partnerName",
      "kind": "optional",
      "type": "string",
      "description": "Your partner name in the Cross River system",
      "children": []
    },
    {
      "name": "balances",
      "kind": "optional",
      "type": "Object",
      "description": "Balances",
      "children": [
        {
          "name": "bankNumber",
          "kind": "optional",
          "type": "string",
          "description": "Number of bank"
        },
        {
          "name": "bankName",
          "kind": "optional",
          "type": "string",
          "description": "Name of bank"
        },
        {
          "name": "balance",
          "kind": "optional",
          "type": "Integer",
          "description": "Balance in this account"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "String",
          "description": "Internal Cross River value. Date and time the database entry was first created."
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified."
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-sweepsintrafiv1accountsaccountnumber",
  "legacyHash": "2CZ2yFy_OkrSTuYhrEdX0"
}
```
:::


[title] Request and response codes: Accounts
[path] Accounts/

## Account status

Values returned in the `status` attribute in the response to many account calls describes whether the account is active or not, and if not, why not.

| Status    | Description                                                     |
| --------- | --------------------------------------------------------------- |
| Inactive  | Dormant for 1 year                                              |
| Active    | Account is active                                               |
| Dormant   | Dormant for 2 years                                             |
| Escheat   | Account is in escheatment (dormant for 3 years)                 |
| Closed    | Account is closed                                               |
| ChargeOff | Account has been overdrawn for a period of greater than 30 days |

## Account types

Values returned in the `accountType` attribute in the response to `POST /v1/dda/accounts` describes the type of account created.

| Type          | Description                                                  |
| ------------- | ------------------------------------------------------------ |
| GeneralLedger | General Ledger                                               |
| Deposit       | Demand Deposit Account (DDA). Checking and Savings accounts. |
| CreditCard    | Credit Card                                                  |
| StoredValue   | Gifts Cards and other stored value accounts                  |
| Wallet        | Wallet account                                               |
| Unknown       |                                                              |

## Subledger type&#x20;

| Type        | Description                                                                                                                                                                                                                                                            |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Passthrough | Subledger balance is informational only and will not be considered when making transaction decisions for the account. Only the master balance is used for transaction decisions. Subledgers can go negative if needed, as long as the funds are in the master account. |
| Direct      | Subledger balance is used for transaction decisions. Implicit subledger cannot go negative.                                                                                                                                                                            |

## Closure reason

Values returned in the `closureReason` attribute in the response to many account calls describes why an account was closed.

| Reason returned                             |
| ------------------------------------------- |
| CustomerInitiatedNoComplaint                |
| CustomerComplaintAccountClosing             |
| CustomerComplaintAddOnProducts              |
| CustomerComplaintApplicationProcessing      |
| CustomerComplaintInterestRate               |
| CustomerComplaintBillingDispute             |
| CustomerComplaintBillingStatement           |
| CustomerComplaintCollectionPractices        |
| CustomerComplaintCreditDetermination        |
| CustomerComplaintCreditReporting            |
| CustomerComplaintCustomerService            |
| CustomerComplaintFraud                      |
| CustomerComplaintFundAvailability           |
| CustomerComplaintLateFees                   |
| CustomerComplaintMerchantDispute            |
| CustomerComplaintOnlineAccountManagement    |
| CustomerComplaintOtherFees                  |
| CustomerComplaintBalanceIssue               |
| CustomerComplaintPromoDispute               |
| CustomerComplaintMarketing                  |
| CustomerComplaintSettlementHardshipPrograms |
| BankPartnerInitiatedNoBalance               |
| PartnerProductClosure                       |
| FirstPartyFraud                             |
| ThirdPartyFraud                             |
| FinancialCrimeNonFraud                      |
| HighOverdraftAmount                         |
| ExceededTransactionLimits                   |
| AccountInactivityDormancyEscheatment        |
| TermsOfServiceBreach                        |
| BulkClosureExcerciseOther                   |
| ChargeOff                                   |






[title] CD penalty fee
[path] Accounts/Time deposit (CD) APIs/

## API reference

Returns the penalty fee if you make an early withdrawal to an active time deposit account. The response will define the number of months during which a penalty will usually be applied on early withdrawal (months), and the number of days of interest to be paid in penalty (feeDays).

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/accounts/{accountNumber}/time-deposit/penalty-fee",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/time-deposit/penalty-fee",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "gEUm5jOXJrcoOftE869H5",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/penalty-fee'",
        "customLabel": ""
      },
      {
        "id": "iWnAToGlhCSS2itbwQAsa",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/190432130358/time-deposit/penalty-fee',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "GspRu8gWp209vk6Uryiyy",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"GET\", \"/core/v1/dda/accounts/190432130358/time-deposit/penalty-fee\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "3LWXQAv49MWYe9tJlogpY",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/penalty-fee\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "9YqP3IXyvM_0sNhO3lm_N",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/penalty-fee\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "gEUm5jOXJrcoOftE869H5"
  },
  "results": {
    "languages": [
      {
        "id": "Ub9YpXSeXw4T6Es3K6rza",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"months\": 0,\n    \"feeDays\": 0,\n    \"feeAmount\": 0\n}"
      }
    ],
    "selectedLanguageId": "Ub9YpXSeXw4T6Es3K6rza"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of the time deposit account",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "months",
      "kind": "optional",
      "type": "Integer",
      "description": "Minimum number of months that the time deposit account is closed. A withdrawal before that time results in a penalty fee."
    },
    {
      "name": "feeDays",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of days of interest to be paid in penalty for early withdrawal",
      "children": []
    },
    {
      "name": "feeAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Penalty amount. There is no decimal point between the dollars and the cents.",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the penalty fee",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-corev1ddaaccountsaccountnumbertime-deposi",
  "legacyHash": "vpduTwT4kjURW1Q6USSA4"
}
```
:::


[title] Get statement PDF
[path] Accounts/Account mgmt APIs/



## API reference

Returns a PDF of the requested statement document in raw format using the document ID returned from the [Get statement doc info](docId:4tf9s1UGK6evHIFgQ2zFS) call.

You can save this response as a PDF file to view it in human-readable format or use it to display the statement PDF in your app.

:::hint{type="warning"}
**IMPORTANT**
Only pull documents as needed. If you want to pull a large number of documents, speak to your Relationship Manager.
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/dda/accounts/{accountNumber}/statements/{statementId}/documents/{documentId}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/statements/{statementId}/documents/{documentId}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "ORrps9PK6LtEodAlYXBX5",
        "language": "curl",
        "code": "curl --location --request GET 'https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents/a2276ec1-e851-41e0-8ae1-b38800747098' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '",
        "customLabel": ""
      },
      {
        "id": "WxqMH8hlVDflODyG42YXY",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents/a2276ec1-e851-41e0-8ae1-b38800747098',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"\\nMake your API call in Postman\\r\\nClick \\\"Save Response\\\" → \\\"Save to a file\\\"\\r\\nChoose location and filename\\r\\nOpen the saved PDF in a PDF viewer\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "-ybDqBVDmTQq-ekETeRrT",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"\\nMake your API call in Postman\\r\\nClick \\\"Save Response\\\" → \\\"Save to a file\\\"\\r\\nChoose location and filename\\r\\nOpen the saved PDF in a PDF viewer\"\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"GET\", \"/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents/a2276ec1-e851-41e0-8ae1-b38800747098\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "oi9IQfEntyr-2PFcwOiQC",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents/a2276ec1-e851-41e0-8ae1-b38800747098\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = \"\\nMake your API call in Postman\\r\\nClick \\\"Save Response\\\" → \\\"Save to a file\\\"\\r\\nChoose location and filename\\r\\nOpen the saved PDF in a PDF viewer\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "DyNvJLlAjXJ-2Q-TZ3VU2",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements/6daf4caa-34d5-4e65-9f98-b388004f0af7/documents/a2276ec1-e851-41e0-8ae1-b38800747098\"\n  method := \"GET\"\n\n  payload := strings.NewReader(`\nMake your API call in Postman`+\"\n\"+`\nClick \"Save Response\" → \"Save to a file\"`+\"\n\"+`\nChoose location and filename`+\"\n\"+`\nOpen the saved PDF in a PDF viewer`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ORrps9PK6LtEodAlYXBX5"
  },
  "results": {
    "languages": [
      {
        "id": "Bpj4xGoxiAWF9cgszfQRr",
        "language": "200",
        "code": "%PDF-1.7\n2 0 obj\n[/PDF /Text /ImageB /ImageC /ImageI]\nendobj\n8 0 obj\n<</Length 9 0 R\n/Filter /FlateDecode >>\nstream\n<PDF string>",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Bpj4xGoxiAWF9cgszfQRr"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the account that you want the bank statement for",
        "": "Number of the account that you want the bank statement for"
      },
      {
        "name": "statementId",
        "kind": "required",
        "type": "string",
        "description": "The ID of the statement you want. Find this ID in the 'id' parameter value of the GET statement info response.",
        "": "The ID of the statement you want. Find this ID in the 'id' parameter value of the GET statement info response."
      },
      {
        "name": "documentId",
        "kind": "required",
        "type": "string",
        "description": "ID of the specific statement document you want. Find this ID in the 'id' parameter value of the GET statement doc info response.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "PDF",
      "kind": "optional",
      "type": "string",
      "description": "The response contains the actual PDF of the requested statement document in raw format."
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-v1ddaaccountsaccountnumberstatementsstate",
  "legacyHash": "DgZcT5IaqqXtxp9W2XaxR"
}
```
:::


[title] Bank list
[path] Accounts/Deposit sweeps APIs/

## API reference

Returns a list of bank IDs for all banks that are participating in the sweeps program. Use the [Identify bank](docId\:Kr8Y3Fq08pJ0-R1hGsr7o) call to get the name of a specific bank according to its ID.

:::ApiMethodV2
```json
{
  "name": "Endpoint: SweepsIntrafi/v1/Banks",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/SweepsIntrafi/v1/Banks",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "V1lWQ884H4p-OITp97Cyz",
        "language": "curl",
        "code": "curl --location 'SweepsIntrafi/v1/Banks' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json'",
        "customLabel": ""
      },
      {
        "id": "omQpvZN7IJnHjmniNdoKn",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'SweepsIntrafi/v1/Banks',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   }\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "7GrOa79eqA0bXWt6VwImu",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"SweepsIntrafi/v1/Banks\"\n\npayload = {}\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "CV4uqFjGoQpRuXtBTCIZ6",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"SweepsIntrafi/v1/Banks\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\n\nresponse = http.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "_K8ZM8tfcIKnZDsHGcNq7",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/SweepsIntrafi/v1/banks\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MDY1ODE5MCwiaWF0IjoxNzUwNjU4MTkwLCJleHAiOjE3NTA2OTQxOTAsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJrZmN1bGZnREF0TkJFVHpSbTFHWUhyazlDemN3ZUg0VSIsImp0aSI6IkU3OTJFNkVCQzMyQjAyODM3Q0FGNzFCREJCNjI0MkY4In0.vsG1iXkB9RkWexd7XcRhL9GTUTU8RhWbVwM8W3ov2em3RSePtcC8jK7c2O9qrWjVTs54lMyEqWhByZYJXIPlGXF8OwiNyoxiy9boeCXqVOTmS9Wix7K2FBQmPsMjZ7fZQqnqKLLNgrJhEf88c1MoN5DBwhhrH2oFsblZlnSd-DhNJYOyJRM45rE88ZfDdny_plLFxUo7DQ6BIjAv4B7QQcDDOXzAWlNgux7Txq_aaemDTkwLV2TjVyfG547iHz_pgfY_87tPPUpN9YA1w6NVK27DePsKbFLuErbCSJeAZPXQQYJJ0pS27kQNQeLXxGDsM3KjpHLl_CQ4aU08Nb_GSw\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "V1lWQ884H4p-OITp97Cyz"
  },
  "results": {
    "languages": [
      {
        "id": "XzSr9vUsjOkUdGeHqdtni",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"results\": [\n    {\n      \"bankNumber\": \"0\",\n      \"name\": \"Help Desk Test Bank\",\n      \"abaNumber\": \"000000000\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.6938884-05:00\"\n    },\n    {\n      \"bankNumber\": \"1\",\n      \"name\": \"American Challenger Bank\",\n      \"abaNumber\": \"123456789\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.6254624-05:00\"\n    },\n    {\n      \"bankNumber\": \"10004\",\n      \"name\": \"Farmers State Bank\",\n      \"abaNumber\": \"075903763\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.6822623-05:00\"\n    },\n    {\n      \"bankNumber\": \"10007\",\n      \"name\": \"Partnership Bank\",\n      \"abaNumber\": \"075902272\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.7797733-05:00\"\n    },\n    {\n      \"bankNumber\": \"10011\",\n      \"name\": \"Woodford State Bank\",\n      \"abaNumber\": \"075908920\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.8010813-05:00\"\n    },\n    {\n      \"bankNumber\": \"10012\",\n      \"name\": \"Portage County Bank\",\n      \"abaNumber\": \"075904377\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.7816612-05:00\"\n    },\n    {\n      \"bankNumber\": \"10015\",\n      \"name\": \"Security Bank\",\n      \"abaNumber\": \"091806242\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.7851783-05:00\"\n    },\n    {\n      \"bankNumber\": \"1003\",\n      \"name\": \"Chemical Bank\",\n      \"abaNumber\": \"072410013\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.6337165-05:00\"\n    },\n    {\n      \"bankNumber\": \"10044\",\n      \"name\": \"National Exchange Bank and Trust\",\n      \"abaNumber\": \"075900766\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.7015381-05:00\"\n    },\n    {\n      \"bankNumber\": \"10045\",\n      \"name\": \"Cornerstone Bank, Inc.\",\n      \"abaNumber\": \"051502175\",\n      \"effectiveDate\": \"2025-01-13T00:00:00-05:00\",\n      \"lastModifiedAt\": \"2025-01-13T16:34:20.6787167-05:00\"\n    }\n  ],\n  \"pageNumber\": 1,\n  \"pageSize\": 10,\n  \"hasPreviousPage\": false,\n  \"hasNextPage\": true\n}"
      }
    ],
    "selectedLanguageId": "XzSr9vUsjOkUdGeHqdtni"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "results",
      "kind": "optional",
      "type": "Object",
      "description": "List of bank information",
      "children": [
        {
          "name": "bankNumber",
          "kind": "optional",
          "type": "Integer",
          "description": "The bank number for the bank"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Bank name"
        },
        {
          "name": "abaNumber",
          "kind": "optional",
          "type": "string",
          "description": "ABA (American Bankers Association) routing number is a 9 digit number used to identify banks in America"
        },
        {
          "name": "effectiveDate",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last effective."
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified."
        }
      ]
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-sweepsintrafiv1banks",
  "legacyHash": "--DaHUJ8_WLImc5c0J2ON"
}
```
:::


[title] Tax document list
[path] Accounts/Account mgmt APIs/

## API reference

When the account is over a year old, returns a list of the tax documents associated with the specified account based on query criteria. The list includes each document's unique GUID, which you need to pull a specific document. The response values below are repeated for each document in the list.

Once you have the document ID use [GET /core/v1/dda/accounts/\{accountNumber}/tax-documents/\{id}](docId\:hHDTdVSPONreJhJT_0rhw) to pull an individual document.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/accounts/{accountNumber}/tax-documents/",
  "method": "GET",
  "url": " https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/tax-documents/",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "h7B5XNrX_RLOjzAzYPT5J",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts/2203250853/tax-documents' \\\n--header 'Authorization: Bearer <token>'",
        "customLabel": ""
      },
      {
        "id": "4rmYpDRipkUflkL9BJfGy",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': '/core/v1/dda/accounts/2203250853/tax-documents?accountNumber=String&Status=String&documentType=String&year=Integer',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   }\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "7L_7exAgTnYamwE0wQ2uK",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"/core/v1/dda/accounts/2203250853/tax-documents?accountNumber=String&Status=String&documentType=String&year=Integer\"\n\npayload = {}\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "22p0MYtyoZs5aYyPRc-xK",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"/core/v1/dda/accounts/2203250853/tax-documents?accountNumber=String&Status=String&documentType=String&year=Integer\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\n\nresponse = http.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "PXd_FTns7ovEE1Mk3XSsM",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/2203250853/tax-documents\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "h7B5XNrX_RLOjzAzYPT5J"
  },
  "results": {
    "languages": [
      {
        "id": "Inq22wDZxrqFF2CdgNJa6",
        "language": "200",
        "customLabel": "",
        "code": "{   \"results\":\n    [\n\n\n\n     ],\n     \"pageNumber\": 1,\n     \"pageSize\": 0,\n     \"hasPreviousPage\": false,\n     \"hasNextPage\": false\n}"
      }
    ],
    "selectedLanguageId": "Inq22wDZxrqFF2CdgNJa6"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the customer's account that earns tax-reportable income",
        "": "Number of the customer's account that earns tax-reportable income"
      }
    ],
    "queryParameters": [
      {
        "name": "status",
        "kind": "optional",
        "type": "string",
        "description": "Status of the document in the Cross River system:\n- Importing\n- Active\n- Recalled",
        "": "status"
      },
      {
        "name": "documentType",
        "kind": "optional",
        "type": "string",
        "description": "Document type the query returns information about:\n- Form1099Int\n- Unknown",
        "": "Document type the query returns information about:\n- Form1099Int\n- Unknown"
      },
      {
        "name": "year",
        "kind": "optional",
        "type": "Integer",
        "description": "Year the document covers, in the format YYYY",
        "children": []
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Cross River system ID of the specific document, in GUID format. Use this ID to get the document in PDF format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number used in your request",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Document status in the system:\n- Importing\n- Active\n- Recalled",
      "children": []
    },
    {
      "name": "documentType",
      "kind": "optional",
      "type": "string",
      "description": "Document type the query returns information about:\n- Form1099Int\n- Unknown",
      "children": []
    },
    {
      "name": "year",
      "kind": "optional",
      "type": "string",
      "description": "Year the document covers, in the format YYYY",
      "children": []
    },
    {
      "name": "isCorrection",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the document is a correction to a previously generated document. Otherwise, false.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the document was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "recalledAt",
      "kind": "optional",
      "type": "string",
      "description": "When the document was recalled, for example for a correction. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddaaccountsaccountnumbertax-documen",
  "legacyHash": "6CxX7v9g2t8oBONNcIptN"
}
```
:::

:::hint{type="warning"}
**IMPORTANT**
Only pull documents as needed. If you want to pull a large number of documents, speak to your Relationship Manager.
:::

:::hint{type="info"}
The IRS requires Cross River to provide account holders with an IRS Form 1099 for earnings equal to or greater than $10.00, per taxpayer identification number (TIN).Should the customer have more than one account, the system generates a 1099 for *each&#x20;*&#x61;ccount if the earnings of *all&#x20;*&#x61;ccounts total $10.00 or more.
:::


[title] Time deposit (CD) APIs
[path] Accounts/


[title] Get statement info
[path] Accounts/Account mgmt APIs/



## API reference

Returns bank statement information for the specified account. Also returns a unique statement ID you can use to request a PDF statement file for the specific account number. Request the file info in the [Get statement doc info](docId:4tf9s1UGK6evHIFgQ2zFS) call.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/dda/accounts/{accountNumber}/statements",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/statements",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "ORrps9PK6LtEodAlYXBX5",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements' \\\n--header 'Authorization: Bearer <token>'",
        "customLabel": ""
      },
      {
        "id": "tbGWSLN2wwEgZfgRtaSaS",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/2819503463/statements',\n  'headers': {\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "EkJqoa_nOUUzGCBSbTUc4",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"GET\", \"/core/v1/dda/accounts/2819503463/statements\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "adSsnG-9Ccb_BPNETFOI8",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Authorization\"] = \"Bearer <token>\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "MEdoSB2CABSIll1kXZw6K",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/2819503463/statements\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ORrps9PK6LtEodAlYXBX5"
  },
  "results": {
    "languages": [
      {
        "id": "Bpj4xGoxiAWF9cgszfQRr",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"6daf4caa-34d5-4e65-9f98-b388004f0af7\",\n            \"status\": \"Completed\",\n            \"accountNumber\": \"2819503463\",\n            \"description\": \"10/1/2025 - 10/31/2025\",\n            \"createdAt\": \"2025-11-01T00:47:47.293-04:00\",\n            \"periodStart\": \"2025-10-01T00:00:00-04:00\",\n            \"periodEnd\": \"2025-10-31T00:00:00-04:00\",\n            \"closedAt\": \"2025-11-01T00:47:47.483-04:00\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"productName\": \"Devra Personal Checking\",\n            \"beginBalance\": 905000,\n            \"endBalance\": 905000,\n            \"entryCount\": 0,\n            \"debitTotal\": 0,\n            \"creditTotal\": 0,\n            \"documentCount\": 1,\n            \"depositTotal\": 0,\n            \"withdrawalTotal\": 0,\n            \"feesTotal\": 0,\n            \"interestPaidThisPeriod\": 0,\n            \"interestPaidYtd\": 0,\n            \"interestAccruedThisPeriod\": 0,\n            \"interestAccruedYtd\": 0,\n            \"annualPercentageYieldEarnedBps\": 0,\n            \"averageDailyBalance\": 905000,\n            \"currency\": \"usd\",\n            \"mailingLine1\": \"Jerry Penn\",\n            \"mailingLine2\": \"12 Main St\",\n            \"mailingLine5\": \"New York NY 10001\",\n            \"mailingLine6\": \"US\",\n            \"lastModifiedAt\": \"2025-11-01T03:03:56.664588-04:00\"\n        },\n        {\n            \"id\": \"27422396-20e0-4ad7-8700-b3690051d30c\",\n            \"status\": \"Completed\",\n            \"accountNumber\": \"2819503463\",\n            \"description\": \"9/1/2025 - 9/30/2025\",\n            \"createdAt\": \"2025-10-01T00:57:54.943-04:00\",\n            \"periodStart\": \"2025-09-01T00:00:00-04:00\",\n            \"periodEnd\": \"2025-09-30T00:00:00-04:00\",\n            \"closedAt\": \"2025-10-01T00:57:55.023-04:00\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"productName\": \"Devra Personal Checking\",\n            \"beginBalance\": 910000,\n            \"endBalance\": 905000,\n            \"entryCount\": 2,\n            \"debitTotal\": 5000,\n            \"creditTotal\": 0,\n            \"documentCount\": 2,\n            \"depositTotal\": 0,\n            \"withdrawalTotal\": 5000,\n            \"feesTotal\": 0,\n            \"interestPaidThisPeriod\": 0,\n            \"interestPaidYtd\": 0,\n            \"interestAccruedThisPeriod\": 0,\n            \"interestAccruedYtd\": 0,\n            \"annualPercentageYieldEarnedBps\": 0,\n            \"averageDailyBalance\": 907833,\n            \"currency\": \"usd\",\n            \"mailingLine1\": \"Jerry Penn\",\n            \"mailingLine2\": \"12 Main St\",\n            \"mailingLine5\": \"New York NY 10001\",\n            \"mailingLine6\": \"US\",\n            \"lastModifiedAt\": \"2025-10-01T05:03:06.3427273-04:00\"\n        },\n        {\n            \"id\": \"3e9f8061-0c26-4bf3-8788-b34b004eee9d\",\n            \"status\": \"Completed\",\n            \"accountNumber\": \"2819503463\",\n            \"description\": \"8/1/2025 - 8/31/2025\",\n            \"createdAt\": \"2025-09-01T00:47:23.047-04:00\",\n            \"periodStart\": \"2025-08-01T00:00:00-04:00\",\n            \"periodEnd\": \"2025-08-31T00:00:00-04:00\",\n            \"closedAt\": \"2025-09-01T00:47:23.133-04:00\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"productName\": \"Devra Personal Checking\",\n            \"beginBalance\": 911000,\n            \"endBalance\": 910000,\n            \"entryCount\": 3,\n            \"debitTotal\": 16000,\n            \"creditTotal\": 15000,\n            \"documentCount\": 1,\n            \"depositTotal\": 15000,\n            \"withdrawalTotal\": 16000,\n            \"feesTotal\": 0,\n            \"interestPaidThisPeriod\": 0,\n            \"interestPaidYtd\": 0,\n            \"interestAccruedThisPeriod\": 0,\n            \"interestAccruedYtd\": 0,\n            \"annualPercentageYieldEarnedBps\": 0,\n            \"averageDailyBalance\": 909677,\n            \"currency\": \"usd\",\n            \"mailingLine1\": \"Jerry Penn\",\n            \"mailingLine2\": \"12 Main St\",\n            \"mailingLine5\": \"New York NY 10001\",\n            \"mailingLine6\": \"US\",\n            \"lastModifiedAt\": \"2025-09-01T05:09:41.7781479-04:00\"\n        },\n        {\n            \"id\": \"f5486212-6c3a-4cdf-a185-b32c004ad9b8\",\n            \"status\": \"Completed\",\n            \"accountNumber\": \"2819503463\",\n            \"description\": \"7/1/2025 - 7/31/2025\",\n            \"createdAt\": \"2025-08-01T00:32:31.487-04:00\",\n            \"periodStart\": \"2025-07-01T00:00:00-04:00\",\n            \"periodEnd\": \"2025-07-31T00:00:00-04:00\",\n            \"closedAt\": \"2025-08-01T00:32:31.933-04:00\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"productName\": \"Devra Personal Checking\",\n            \"beginBalance\": 901000,\n            \"endBalance\": 911000,\n            \"entryCount\": 1,\n            \"debitTotal\": 0,\n            \"creditTotal\": 10000,\n            \"documentCount\": 1,\n            \"depositTotal\": 10000,\n            \"withdrawalTotal\": 0,\n            \"feesTotal\": 0,\n            \"interestPaidThisPeriod\": 0,\n            \"interestPaidYtd\": 0,\n            \"interestAccruedThisPeriod\": 0,\n            \"interestAccruedYtd\": 0,\n            \"annualPercentageYieldEarnedBps\": 0,\n            \"averageDailyBalance\": 909387,\n            \"currency\": \"usd\",\n            \"mailingLine1\": \"Jerry Penn\",\n            \"mailingLine2\": \"12 Main St\",\n            \"mailingLine5\": \"New York NY 10001\",\n            \"mailingLine6\": \"US\",\n            \"lastModifiedAt\": \"2025-08-01T02:08:20.1161898-04:00\"\n        },\n        {\n            \"id\": \"9df39d21-8b4e-4709-baa3-b30d004bed7a\",\n            \"status\": \"Completed\",\n            \"accountNumber\": \"2819503463\",\n            \"description\": \"6/18/2025 - 6/30/2025\",\n            \"createdAt\": \"2025-07-01T00:36:26.7-04:00\",\n            \"periodStart\": \"2025-06-18T00:00:00-04:00\",\n            \"periodEnd\": \"2025-06-30T00:00:00-04:00\",\n            \"closedAt\": \"2025-07-01T00:36:26.787-04:00\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"productName\": \"Devra Personal Checking\",\n            \"beginBalance\": 0,\n            \"endBalance\": 901000,\n            \"entryCount\": 2,\n            \"debitTotal\": 0,\n            \"creditTotal\": 901000,\n            \"documentCount\": 0,\n            \"depositTotal\": 901000,\n            \"withdrawalTotal\": 0,\n            \"feesTotal\": 0,\n            \"interestPaidThisPeriod\": 0,\n            \"interestPaidYtd\": 0,\n            \"interestAccruedThisPeriod\": 0,\n            \"interestAccruedYtd\": 0,\n            \"annualPercentageYieldEarnedBps\": 0,\n            \"averageDailyBalance\": 900615,\n            \"currency\": \"usd\",\n            \"mailingLine1\": \"Jerry Penn\",\n            \"mailingLine2\": \"12 Main St\",\n            \"mailingLine5\": \"New York NY 10001\",\n            \"mailingLine6\": \"US\",\n            \"lastModifiedAt\": \"2025-07-01T00:36:26.6989838-04:00\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 5,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": false\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Bpj4xGoxiAWF9cgszfQRr"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the account that you want the bank statement for",
        "": "Number of the account that you want the bank statement for"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The statement ID, expressed as a GUID"
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the statement document\n- Processing\n- Completed\n- Recalled",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of the account this response describes",
      "children": []
    },
    {
      "name": "description",
      "kind": "optional",
      "type": "string",
      "description": "System description created for the statement",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the document was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "periodStart",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the statement data starts from",
      "children": []
    },
    {
      "name": "periodEnd",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the statement data ends at",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Last settlement for the statement period",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which this account is based",
      "children": []
    },
    {
      "name": "productName",
      "kind": "optional",
      "type": "string",
      "description": "Name associated with the product ID, for example, \"Fintech123 checking product\" ",
      "children": []
    },
    {
      "name": "beginBalance",
      "kind": "optional",
      "type": "integer",
      "description": "Balance in the account at the beginning of the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "endBalance",
      "kind": "optional",
      "type": "integer",
      "description": "Balance in the account at the end of the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "entryCount",
      "kind": "optional",
      "type": "integer",
      "description": "Number of activity records for this statement period",
      "children": []
    },
    {
      "name": "debitTotal",
      "kind": "optional",
      "type": "integer",
      "description": "Sum of all debits for the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "creditTotal",
      "kind": "optional",
      "type": "integer",
      "description": "Sum of all credits for the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "documentCount",
      "kind": "optional",
      "type": "integer",
      "description": "Number of statement documents generated",
      "children": []
    },
    {
      "name": "depositTotal",
      "kind": "optional",
      "type": "integer",
      "description": "Sum of all deposits for the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "withdrawalTotal",
      "kind": "optional",
      "type": "integer",
      "description": "Sum of all withdrawals for the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "feesTotal",
      "kind": "optional",
      "type": "integer",
      "description": "Sum of all fees for the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "interestPaidThisPeriod",
      "kind": "optional",
      "type": "integer",
      "description": "Total interest paid for the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "interestPaidYtd",
      "kind": "optional",
      "type": "integer",
      "description": "Total interest paid since the beginning of the calendar year in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "interestAccruedThisPeriod",
      "kind": "optional",
      "type": "integer",
      "description": "Total interest accrued for the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "interestAccruedYtd",
      "kind": "optional",
      "type": "integer",
      "description": "Total interest accrued since the beginning of the calendar year in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "annualPercentageYieldEarnedBps",
      "kind": "optional",
      "type": "integer",
      "description": "The percentage yield earnings for the year, expressed in basis points (BPS). A basis point is 1/100th of a percent,",
      "children": []
    },
    {
      "name": "averageDailyBalance",
      "kind": "optional",
      "type": "integer",
      "description": "Average balance in the account per day for the statement period in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "mailingLine1",
      "kind": "optional",
      "type": "string",
      "description": "Mailing address for the statement, expressed in up to 7 mailingLine attributes",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-v1ddaaccountsaccountnumberstatements",
  "legacyHash": "DgZcT5IaqqXtxp9W2XaxR"
}
```
:::


[title] Tax document
[path] Accounts/Account mgmt APIs/

## API reference

Returns a PDF of the requested tax document in raw format using the document ID returned from the [Tax document list](docId\:T5K0QeW58PeTTey4QlG2j) call.

:::hint{type="warning"}
**IMPORTANT**
Only pull documents as needed. If you want to pull a large number of documents, speak to your Relationship Manager.
:::

:::hint{type="info"}
The IRS requires Cross River to provide account holders with an IRS Form 1099 for earnings equal to or greater than $10.00, per taxpayer identification number (TIN). Should the customer have more than one account, the system generates a 1099 for*each&#x20;*&#x61;ccount if the earnings of *all&#x20;*&#x61;ccounts total $10.00 or more.
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/accounts/{accountNumber}/tax-documents/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/tax-documents/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "gXSVKH6kU2vtj4T65tp6d",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts/2203250853/tax-documents/1f7e9138-9300-4c83-b911-715a53ff0f9d' \\\n--header 'Authorization: Bearer <token>'",
        "customLabel": ""
      },
      {
        "id": "nHsfnXCU1l_Sk4iizHwfG",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/2203250853/tax-documents/1f7e9138-9300-4c83-b911-715a53ff0f9d',\n  'headers': {\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "6UhjY_y2FPQrsDLln0A2T",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"GET\", \"/core/v1/dda/accounts/2203250853/tax-documents/1f7e9138-9300-4c83-b911-715a53ff0f9d\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "HUeUBrcfjl2HqdbSP4dpM",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/2203250853/tax-documents/1f7e9138-9300-4c83-b911-715a53ff0f9d\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Authorization\"] = \"Bearer <token>\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "a9v7Tv5h_RpJ-1NxfiO-Z",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/2203250853/tax-documents/1f7e9138-9300-4c83-b911-715a53ff0f9d\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "a9v7Tv5h_RpJ-1NxfiO-Z"
  },
  "results": {
    "languages": [
      {
        "id": "6uF2P2J461OLOkqtKa6JG",
        "language": "200",
        "customLabel": "",
        "code": "RETURNS A PDF"
      }
    ],
    "selectedLanguageId": "6uF2P2J461OLOkqtKa6JG"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the customer's account that earns tax-reportable income",
        "children": []
      },
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The document ID returned in a GET tax documents query for the specific desired document.",
        "": "The document ID returned in a GET tax documents query for the specific desired document."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "PDF",
      "kind": "optional",
      "type": "string",
      "description": "The response contains the actual PDF of the requested tax document in raw format."
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddaaccountsaccountnumbertax-documen",
  "legacyHash": "dXh1ny_Zq8h1hRfFlmI_O"
}
```
:::


[title] Identify bank
[path] Accounts/Deposit sweeps APIs/

## API reference

Returns a bank name for a bank ID. Get a list of bank IDs with the [Bank list](docId\:RZxJ8syt4OiJDZq0FIzZ9) call.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /SweepsIntrafi/v1/Banks/{bankNumber}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/SweepsIntrafi/v1/Banks/{bankNumber}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "0vTOQcmlG-MRm3GsBSecZ",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/SweepsIntrafi/v1/banks/10004'",
        "customLabel": ""
      },
      {
        "id": "ZQdJFHycPuMoX9OgGhgsF",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/SweepsIntrafi/v1/banks/10004',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "1DQQo03FjSlORuYTTsARE",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"GET\", \"/SweepsIntrafi/v1/banks/10004\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "vKNxlSCrv8zNLxvKQUjt0",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/SweepsIntrafi/v1/banks/10004\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "bEXtjK-R9E6elhFXaO3up",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/SweepsIntrafi/v1/banks/10004\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "0vTOQcmlG-MRm3GsBSecZ"
  },
  "results": {
    "languages": [
      {
        "id": "QqHiLt-FHhPgn7vzGSzAQ",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"bankNumber\": \"10004\",\n    \"name\": \"Farmers State Bank\",\n    \"abaNumber\": \"075903763\",\n    \"effectiveDate\": \"2025-06-20T00:00:00-04:00\",\n    \"lastModifiedAt\": \"2025-06-20T16:35:45.5739859-04:00\"\n}"
      },
      {
        "id": "Rlz8sNuia0a7TP78GEZu3",
        "language": "400",
        "code": "{\n  \"errors\": [\n    {\n      \"code\": 0,\n      \"message\": \"BadRequest\"\n    }\n  ]\n}",
        "customLabel": ""
      },
      {
        "id": "MkzOjj1RXMGrSWJeOOsVN",
        "language": "404",
        "customLabel": "",
        "code": ""
      }
    ],
    "selectedLanguageId": "QqHiLt-FHhPgn7vzGSzAQ"
  },
  "request": {
    "pathParameters": [
      {
        "name": "bankNumber",
        "kind": "required",
        "type": "string",
        "description": "The bank number for the bank",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "bankNumber",
      "kind": "optional",
      "type": "string",
      "description": "Requested bank number"
    },
    {
      "name": "name",
      "kind": "optional",
      "type": "string",
      "description": "Bank name",
      "children": []
    },
    {
      "name": "abaNumber",
      "kind": "optional",
      "type": "string",
      "description": "ABA (American Bankers Association) routing number is a 9 digit number used to identify banks in America",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last effective.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-sweepsintrafiv1banksbanknumber",
  "legacyHash": "54p33ZELywG5-fmfvN0Im"
}
```
:::


[title] Early funds withdrawal
[path] Accounts/Time deposit (CD) APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- Core.TimeDeposit.Withdrawn

## API reference

Requests to withdraw the funds from a time deposit (CD) account before the account reaches maturity. Depending on the setting of the waivePenaltyFee attribute, the penalty fee is either waived or not. If the penalty fee for early withdrawal is waived, it is as if the account owner performs a partial withdrawal of funds.
Actual withdrawal of the funds requires a transaction call, which will in turn trigger the Core.TimeDeposit.Withdrawn webhook event.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/accounts/{accountNumber}/time-deposit/early-withdraw",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/time-deposit/early-withdraw",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "q0_pOKrlLi1qibbxm5Etl",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '{\n  \"waivePenaltyFee\": true\n}'",
        "customLabel": ""
      },
      {
        "id": "h0pYVjX9_p52iMxD9mZjF",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"waivePenaltyFee\": true\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "qtY5KXUCH4H3h6C4CJPBa",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"waivePenaltyFee\": True\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"POST\", \"/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "-yoZGwvqQSUck390dHo5c",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = JSON.dump({\n  \"waivePenaltyFee\": true\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "rQE-n7mlzHZlCzlGtrQUe",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"waivePenaltyFee\": true`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "q0_pOKrlLi1qibbxm5Etl"
  },
  "results": {
    "languages": [
      {
        "id": "bFD_epqH3NkyFUMXyexqq",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"timeDeposit\": {\n        \"masterAccountNumber\": \"190432130358\",\n        \"status\": \"EarlyWithdrawal\",\n        \"minFundingAmount\": 50000,\n        \"maxFundingAmount\": 5000000,\n        \"autoClose\": false,\n        \"allowBumpUp\": false,\n        \"waivePenaltyFee\": true,\n        \"fundingDays\": 3,\n        \"gracePeriodDays\": 6,\n        \"currentRate\": 0.0,\n        \"maturityMonths\": 12,\n        \"rates\": [\n            {\n                \"months\": 3,\n                \"rate\": 4.00000\n            },\n            {\n                \"months\": 3,\n                \"rate\": 6.00000\n            },\n            {\n                \"months\": 3,\n                \"rate\": 8.00000\n            },\n            {\n                \"months\": 3,\n                \"rate\": 10.00000\n            }\n        ],\n        \"penalties\": [\n            {\n                \"months\": 6,\n                \"feeDays\": 3\n            },\n            {\n                \"months\": 6,\n                \"feeDays\": 3\n            }\n        ],\n        \"fundingExpDate\": \"2025-07-03T00:00:00-04:00\",\n        \"fundingDate\": \"2025-07-01T00:00:00-04:00\",\n        \"startDate\": \"2025-07-01T00:00:00-04:00\",\n        \"depositAmount\": 1000000,\n        \"depositCurrency\": \"usd\",\n        \"maturityDate\": \"2026-06-30T00:00:00-04:00\",\n        \"earlyWithdrawnAt\": \"2025-07-02T03:21:07.3293384-04:00\",\n        \"rolloverDate\": \"2026-07-03T00:00:00-04:00\",\n        \"createdAt\": \"2025-06-30T03:57:49.4-04:00\",\n        \"productId\": \"be8300b4-1206-4cf9-8800-b30100b7a867\",\n        \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n        \"lastModifiedAt\": \"2025-07-02T03:21:07.3293384-04:00\"\n    },\n    \"penaltyAccountNumber\": \"00000098764\",\n    \"penaltyFeeAmount\": 329\n}"
      }
    ],
    "selectedLanguageId": "bFD_epqH3NkyFUMXyexqq"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of the time deposit account",
        "": "Account number of the time deposit account"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "waivePenaltyFee",
        "kind": "required",
        "type": "Boolean",
        "description": "If true, a request for early withdrawal will be processed without a penalty fee. Otherwise, false.",
        "": "required"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number of the time deposit account"
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the account:\n- Funding\n- Active\n- Matured\n- EarlyWithdrawal\n- Inactive",
      "children": []
    },
    {
      "name": "minFundingAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Minimum dollar amount allowed for the time deposit. If the deposit amount is less than this value the deposit will be rejected.",
      "children": []
    },
    {
      "name": "maxFundingAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Maximum dollar amount allowed for the time deposit. If the deposit amount is more than this value the deposit will be rejected.",
      "children": []
    },
    {
      "name": "autoClose",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the time deposit account automatically closes if not sufficiently funded by the funding expiration date. Otherwise, false.",
      "children": []
    },
    {
      "name": "allowBumpUp",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the Interest Rates Period tier(s) are enabled, where applicable. Otherwise, false.",
      "children": []
    },
    {
      "name": "waivePenaltyFee",
      "kind": "optional",
      "type": "Boolean",
      "description": "If true, a request for early withdrawal will be processed without a penalty fee. Otherwise, false.",
      "children": []
    },
    {
      "name": "fundingDays",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of days the time deposit will remain active once opened but not yet funded",
      "children": []
    },
    {
      "name": "gracePeriodDays",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of days the customer has to withdraw the time deposit once it reaches maturity. If no action is taken during this time then the time deposit will automatically renew for the same term at the rate currently being offered for the term.",
      "children": []
    },
    {
      "name": "currentRate",
      "kind": "optional",
      "type": "Number",
      "description": "The current rate of interest being earned by the account",
      "children": []
    },
    {
      "name": "maturityMonths",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of months until the time deposit reaches maturity",
      "children": []
    },
    {
      "name": "rates",
      "kind": "optional",
      "type": "Object",
      "description": "Interest rate details",
      "children": [
        {
          "name": "months",
          "kind": "optional",
          "type": "Integer",
          "description": "Defines the number of months the given rate is valid"
        },
        {
          "name": "rate",
          "kind": "optional",
          "type": "number",
          "description": "Interest rate of the CD"
        }
      ]
    },
    {
      "name": "penalties",
      "kind": "optional",
      "type": "Object",
      "description": "Details of the penalty your customer pays for early withdrawal",
      "children": [
        {
          "name": "months",
          "kind": "optional",
          "type": "Integer",
          "description": "Early withdrawal within this number of months results in a penalty. Cross River works with you to configure this number for the CD product."
        },
        {
          "name": "feeDays",
          "kind": "optional",
          "type": "Integer",
          "description": "How many days of simple interest to assess"
        }
      ]
    },
    {
      "name": "fundingExpDate",
      "kind": "optional",
      "type": "string",
      "description": "Based on the product configuration, the date by which the account must be funded. if it isn't funded, it's deactivated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "fundingDate",
      "kind": "optional",
      "type": "string",
      "description": "Date account is funded. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "startDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the account starts accruing interest. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "depositAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount deposited to fund the account",
      "children": []
    },
    {
      "name": "depositCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency used for the deposit",
      "children": []
    },
    {
      "name": "maturityDate",
      "kind": "optional",
      "type": "string",
      "description": "Calendar date when the account can be withdrawn. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "earlyWithdrawnAt",
      "kind": "optional",
      "type": "string",
      "description": "Date of early withdrawal. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rolloverDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the time deposit account rolls over (and withdrawal without penalty no longer possible). In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Account created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.\n\nIn this case, your configured time deposit product.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddaaccountsaccountnumbertime-deposi",
  "legacyHash": "Mh5k4AKIQzo25ZxpkQJ_Q"
}
```
:::


[title] Exclude bank/account
[path] Accounts/Deposit sweeps APIs/

## API reference

Excludes either specific banks from an account's sweep or specific accounts from being swept at all.

- Exclude banks from the sweep network
  Your customers may already have funds at a certain bank and this is a way to exclude  that bank
-  Opt out of sweeps
  When a product is enabled for sweeps, all accounts created from that product are enrolled into the sweeps program. Use this endpoint to mark an account inactive for sweeps, effectively opting out for sweeps.

:::ApiMethodV2
```json
{
  "name": "Endpoint: SweepsIntrafi/v1/accounts/{accountNumber}",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/SweepsIntrafi/v1/accounts/{accountNumber}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "CkBeCLe8iPdXERwfge2bM",
        "language": "curl",
        "code": "curl --location --request PUT 'https://sandbox.crbcos.com/SweepsIntrafi/v1/accounts/2666129453'\n--header 'Content-Type: application/json'\n--header 'Authorization: Bearer <token>'\n--data '{\n  \"status\": \"Active\",\n  \"bankExclusions\": [ \n     \"30895\",\n     \"10015\"\n  ]\n} '",
        "customLabel": ""
      },
      {
        "id": "eQMGrbPTNIiVt7XLO1sPD",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/SweepsIntrafi/v1/accounts/2666129453',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"status\": \"Active\",\n  \"bankExclusions\": [\n    \"30895\",\n    \"10015\"\n  ]\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "34XkfVA9Q2IhW0pFyPK4X",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"status\": \"Active\",\n  \"bankExclusions\": [\n    \"30895\",\n    \"10015\"\n  ]\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"PUT\", \"/SweepsIntrafi/v1/accounts/2666129453\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "R6r6yx1WvvMYbmscyJVXp",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/SweepsIntrafi/v1/accounts/2666129453\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = JSON.dump({\n  \"status\": \"Active\",\n  \"bankExclusions\": [\n    \"30895\",\n    \"10015\"\n  ]\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "7xTP2Y0NVMUYWQwerzMhR",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/SweepsIntrafi/v1/accounts/2666129453\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"status\": \"Active\",`+\"\n\"+`\n  \"bankExclusions\": [ `+\"\n\"+`\n     \"30895\",`+\"\n\"+`\n     \"10015\"`+\"\n\"+`\n  ]`+\"\n\"+`\n} `)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "CkBeCLe8iPdXERwfge2bM"
  },
  "results": {
    "languages": [
      {
        "id": "QqHiLt-FHhPgn7vzGSzAQ",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"accountNumber\": \"2666129453\",\n  \"status\": \"Active\",\n  \"title\": \"Sweeps Test 2\",\n  \"bankExclusions\": [\n    \"30895\",\n    \"10015\"\n  ],\n  \"coreBalance\": 125627321,\n  \"coreBalanceAsOf\": \"2024-09-25T16:17:20.1-04:00\",\n  \"custodialBalance\": 25627321,\n  \"networkBalance\": 100000000,\n  \"networkBalanceAsOf\": \"2024-09-24T16:33:43.613-04:00\",\n  \"maxSweepAmount\": 0,\n  \"productId\": \"e4404005-03c1-4710-b759-b13700ebfac4\",\n  \"partnerId\": \"6e6769ec-99e0-4c4f-8ae8-b13700eab0fc\",\n  \"openedAt\": \"2024-05-14T16:26:10.227-04:00\",\n  \"lastModifiedAt\": \"2024-09-25T16:18:48.5446146-04:00\",\n  \"productName\": \"ibs Checking Product\",\n  \"partnerName\": \"Ibrahim Saeed Partner\"\n}"
      },
      {
        "id": "MkzOjj1RXMGrSWJeOOsVN",
        "language": "404",
        "customLabel": "",
        "code": "{\n  \"message\": \"Ain't no cake like that.\"\n}"
      }
    ],
    "selectedLanguageId": "QqHiLt-FHhPgn7vzGSzAQ"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of account you want to make changes to",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "status",
        "kind": "required",
        "type": "String",
        "description": "Set to \"Active\" to enroll this account in the sweeps program.\nSet to \"Inactive\" to opt this account out of the sweeps program."
      },
      {
        "name": "bankExclusions",
        "kind": "optional",
        "type": "String",
        "description": "IDs of the banks to exclude from the network of banks where funds may be swept to",
        "": "IDs of the banks to exclude from the network of banks where funds may be swept to"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number"
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Inactive or Active",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "The name on the account. Usually this is the account holder name, but not always.\n255 characters maximum.",
      "children": []
    },
    {
      "name": "bankExclusions",
      "kind": "optional",
      "type": "Array",
      "description": "IDs of the banks to exclude from the network of banks where funds may be swept to",
      "children": []
    },
    {
      "name": "coreBalance",
      "kind": "optional",
      "type": "string",
      "description": "Total available balance at Cross River",
      "children": []
    },
    {
      "name": "coreBalanceAsOf",
      "kind": "optional",
      "type": "string",
      "description": "Date and time of the core balance. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "custodialBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Total amount held at Cross River",
      "children": []
    },
    {
      "name": "networkBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Total amount swept to IntraFi ",
      "children": []
    },
    {
      "name": "networkBalanceAsOf",
      "kind": "optional",
      "type": "string",
      "description": "Date and time of the network balance. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "maxSweepAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Max sweep amount will always be 0 as it refers to an override - program sweep limit is not reflected here",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was opened. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productName",
      "kind": "optional",
      "type": "string",
      "description": "Name associated with the product ID, for example, \"Fintech123 checking product\" ",
      "children": []
    },
    {
      "name": "partnerName",
      "kind": "optional",
      "type": "string",
      "description": "Your partner name in the Cross River system",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-sweepsintrafiv1accountsaccountnumber",
  "legacyHash": "Vg_z1OUvJYNIJGL7bo4Ew"
}
```
:::


[title] Accounts
[path] /

:::CtaButton{label="Accounts concepts" docId="ZQyAf4oeI1rEzpBOI78MJ" openInNewTab="true"}

:::

## Accounts APIs

Cross River offers a set of APIs for account management in our banking core.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ)  to control presentation of your results.&#x20;

## Account management&#x20;

This table presents general account management APIs that we describe in detail.

:::hint{type="warning"}
**IMPORTANT**
Only pull statement and tax documents as needed. If you want to pull a large number of documents, speak to your Relationship Manager.
:::

| Action                                                 | API Call                                                                                    | Description                                                                                                               |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| [Open account](docId\:abKDIZOKHXLSswzwrbBJ1)           | `POST /core/v1/dda/accounts`                                                                | Creates an account based on the product ID for that type of account. This includes CD (time deposit) accounts.            |
| [Restrict account](docId\:EIckX6Djcuo3cryRIH8mp)       | `POST /core/v1/dda/accounts/{accountNumber}/restrictions`                                   | Restricts an account from defined transaction types.                                                                      |
| [Remove restriction](docId\:qXDRgzjuPEfeUXz6oKFoB)     | `DELETE /core/v1/dda/accounts/{accountNumber}/restrictions/{id}`                            | Removes a previously applied restriction from an account                                                                  |
| [Get statement info](docId\:IhY7U89HOIdGyk_84eBZc)     | `GET /core/v1/dda/accounts/{accountNumber}/statements`                                      | Returns bank statement information for the specified account                                                              |
| [Get statement doc info](docId:4tf9s1UGK6evHIFgQ2zFS)  | `GET /core/v1/dda/accounts/{accountNumber}/statements/{statementId}/documents`              | Returns information about monthly statement documents using a unique statement ID returned in the GET statement info call |
| [Get statement PDF](docId:0UFqTtK_tYvg-zF44H0Cr)       | `GET /core/v1/dda/accounts/{accountNumber}/statements/{statementId}/documents/{documentId}` | Returns a PDF of the requested statement document in raw format                                                           |
| [Tax document list](docId\:T5K0QeW58PeTTey4QlG2j)      | `GET /core/v1/dda/accounts/{accountNumber}/tax-documents/`                                  | Gets a list of tax documents for a given account, including IDs for each                                                  |
| [Tax document](docId\:hHDTdVSPONreJhJT_0rhw)           | `GET /core/v1/dda/accounts/{accountNumber}/tax-documents/{id}`                              | Retrieves a PDF of a specific tax document                                                                                |



## Subledgers

In subledger API endpoints, subledgers are referred to as `subaccounts` , For example, `POST /core/v1/dda/subaccounts` creates a new subledger.

This table presents the subledger management APIs we describe in detail.

| Action                                                     | API Call                                                | Description                                                |
| ---------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------- |
| [Create subledger](docId\:K40F8Ih5SnvtbAbcEJ1MR)           | `POST /core/v1/dda/subaccounts`<br />                   | Creates a new subledger                                    |
| [Get subledger info](docId\:RL2WJ6moXGL-OEGWh5HZp)         | `GET /core/v1/dda/subaccounts/{accountNumber}`          | Returns information on a specific subledger account        |
| [Change subledger title](docId\:vF6EET959sod8TW1orGD8)     | `PUT /core/v1/dda/subaccounts/{accountNumber}/title`    | Changes the title on a specific subledger account          |
| [Change subledger customer](docId\:wfjZEWfzQXnkXCWxsVcm5)  | `PUT /core/v1/dda/subaccounts/{accountNumber}/customer` | Changes the customer associated with the subledger account |
| [Close subledger](docId\:KKcIiiesDAtwh3dOzrMPW)            | `GET /core/v1/dda/subaccounts/{accountNumber}`          | Close a subledger account                                  |

## Time deposit (CD)&#x20;

This table presents time deposit (CD) APIs that we describe in detail.

| Action                                                   | API Call                                                                 | Description                                                                                         |
| -------------------------------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| [Early funds withdrawal](docId\:bHeqF948uoL69C872O299)   | `POST /core/v1/dda/accounts/{accountNumber}/time-deposit/early-withdraw` | Requests to withdraw the funds from a time deposit account before the account reaches maturity      |
| [CD activity](docId:9nAb7NqgEGfIpDq8flDjf)               | `GET /core/v1/dda/accounts/{accountNumber}/time-deposit`                 | Returns information about the account activity of a specific time deposit account                   |
| [CD penalty fee](docId\:e4dAA6XWq3ZPAU6WMqR-c)           | `GET /core/v1/dda/accounts/{accountNumber}/time-deposit/penalty-fee`     | Returns the projected penalty fee if you make an early withdrawal to an active time deposit account |

## Deposit sweeps

This table presents APIs we describe in detail.

| Action                                                 | API Call                                        | Description                                                                |
| ------------------------------------------------------ | ----------------------------------------------- | -------------------------------------------------------------------------- |
| [Account details](docId\:Q6S6Db3yL7LxoCbsGhIzn)        | `GET/SweepsIntrafi/v1/accounts/{accountNumber}` | GET call to get account details of a COS account enrolled in Sweeps        |
| [Exclude bank/account](docId\:VzAWBxjbGlGAVDQddxN8j)   | `PUT/SweepsIntrafi/v1/accounts/{accountNumber`} | PUT call to exclude specific bank or opt out specific account from Sweeps. |
| [Bank list](docId\:RZxJ8syt4OiJDZq0FIzZ9)              | `GET/SweepsIntrafi/v1/banks`                    | GET call to get a list of all banks                                        |
| [Identify bank](docId\:Kr8Y3Fq08pJ0-R1hGsr7o)          | `GET/SweepsIntrafi/v1/banks/{bankNumber`        | GET call to get bank name for a specific BankID                            |

## Related topics

- [Webhook events: Accounts](docId\:eAs8aFqW7M97baeZUC8Sr)&#x20;

## Tutorials

See our API tutorials to learn how to:

- [Open an account](docId\:ZtQ-EXuMODfi9pu3z10FW): Create a deposit account.
- [Open a subledger](docId\:xqDRbzh8lzHUQIWZEdHoZ): Create a subledger (virtual account).
- [Withdraw CD funds early](docId\:WDAQ0M_t5wowKtdPXnnk_): Withdraw funds from a certificate of deposit before it reaches maturity.&#x20;


[title] Card details
[path] Cards/APIs/Card Issuing APIs/

## API reference

The request can contain any of the query parameters, must contain at least one. The response values below are repeated for each card. This example's input users Account Number.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "GNOqx7MwVm6G7gpQFMNnt",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/cards?accountNumber=158560897007' \\--data ''",
        "customLabel": ""
      },
      {
        "id": "SNZXzA6EQmifAI9iTmVt-",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/cards?accountNumber=158560897007',\n  'headers': {\n  }\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "aLLNdPjMh4UukMZ2Sgi6M",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards?accountNumber=158560897007\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "_mweH9WDk1Ouz1eyDgtSl",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards?accountNumber=158560897007\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "v982tZfGciqRWV58j8Omx",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards?accountNumber=158560897007\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "GNOqx7MwVm6G7gpQFMNnt"
  },
  "results": {
    "languages": [
      {
        "id": "RQyEEaTQF08iGlEEJcXWC",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"cac074a9-0f45-4cd4-89bf-b2ff009a0421\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"792112119400380\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Closed\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"F\",\n            \"firstName\": \"Dalinar\",\n            \"lastName\": \"Kholiner\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dkholiner@gmail.com\",\n            \"nameOnCard\": \"Dalinar Kholiner\",\n            \"panLastFour\": \"8518\",\n            \"isPinSet\": false,\n            \"expirationDate\": \"2028-06-17T00:00:00-04:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"P0UTV968U1R28105IRHP\",\n            \"createdAt\": \"2025-06-17T05:20:45.67-04:00\",\n            \"closedAt\": \"2025-07-01T07:54:14.247-04:00\",\n            \"initialActivation\": \"2025-06-17T00:00:00-04:00\",\n            \"activatedAt\": \"2025-06-17T05:26:35.573-04:00\",\n            \"lastModifiedAt\": \"2025-07-01T07:54:14.2764906-04:00\"\n        },\n        {\n            \"id\": \"a19c944b-ef09-4bea-a222-b300006209cb\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"749973740723710\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Suspended\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"I\",\n            \"firstName\": \"Dal\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dkhol@gmail.com\",\n            \"nameOnCard\": \"Dal Khol\",\n            \"panLastFour\": \"7093\",\n            \"isPinSet\": false,\n            \"expirationDate\": \"2028-06-18T00:00:00-04:00\",\n            \"adminBlocked\": true,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"J3J23765HM5580AMR4Z4\",\n            \"createdAt\": \"2025-06-18T01:56:57.643-04:00\",\n            \"suspendedAt\": \"2025-07-01T08:08:25.283-04:00\",\n            \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n            \"activatedAt\": \"2025-06-18T01:58:04.033-04:00\",\n            \"lastModifiedAt\": \"2025-07-01T08:08:25.2830573-04:00\"\n        },\n        {\n            \"id\": \"00ed94c7-7372-4518-ba3f-b3000065daf9\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"333572795353644\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Unactivated\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"A\",\n            \"firstName\": \"Da\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dakhol@gmail.com\",\n            \"nameOnCard\": \"Da Khol\",\n            \"panLastFour\": \"7590\",\n            \"isPinSet\": false,\n            \"expirationDate\": \"2028-06-18T00:00:00-04:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"JR1QWR86VZ25701RHW12\",\n            \"createdAt\": \"2025-06-18T02:10:51.21-04:00\",\n            \"lastModifiedAt\": \"2025-06-18T02:10:53.1357289-04:00\"\n        },\n        {\n            \"id\": \"5ff47cda-f925-4290-a257-b3000066d9ea\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"090035062316339\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Unactivated\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"A\",\n            \"firstName\": \"Dali\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dkhol@gmail.com\",\n            \"nameOnCard\": \"Dali Khol\",\n            \"panLastFour\": \"4958\",\n            \"isPinSet\": false,\n            \"expirationDate\": \"2028-06-18T00:00:00-04:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"QQV6713S7N7K25G521Y1\",\n            \"createdAt\": \"2025-06-18T02:14:28.547-04:00\",\n            \"lastModifiedAt\": \"2025-06-18T02:14:30.469426-04:00\"\n        },\n        {\n            \"id\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"827277613081398\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Closed\",\n            \"statusReasonCode\": \"Damaged\",\n            \"processorCardStatus\": \"B\",\n            \"firstName\": \"Daly\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dkhol@gmail.com\",\n            \"nameOnCard\": \"Daly Khol\",\n            \"panLastFour\": \"4558\",\n            \"isPinSet\": true,\n            \"expirationDate\": \"2028-06-18T00:00:00-04:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"Completed\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"0CIF7L2973U98WT4E652\",\n            \"createdAt\": \"2025-06-18T02:26:49.617-04:00\",\n            \"closedAt\": \"2025-06-18T06:40:46.5-04:00\",\n            \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n            \"activatedAt\": \"2025-06-18T02:27:58.813-04:00\",\n            \"lastModifiedAt\": \"2025-06-18T06:40:46.5012717-04:00\"\n        },\n        {\n            \"id\": \"1c243431-23b8-407c-afa4-b30000abbe0d\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"827277613081398\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Suspended\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"I\",\n            \"firstName\": \"Daly\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dkhol@gmail.com\",\n            \"nameOnCard\": \"Daly Khol\",\n            \"panLastFour\": \"4558\",\n            \"previousCardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n            \"isPinSet\": true,\n            \"expirationDate\": \"2028-06-18T00:00:00-04:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"X5R364GI9VXUUK24QH1D\",\n            \"createdAt\": \"2025-06-18T06:25:17.697-04:00\",\n            \"suspendedAt\": \"2026-08-03T05:01:46.053-04:00\",\n            \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n            \"activatedAt\": \"2026-08-03T04:52:10.103-04:00\",\n            \"lastModifiedAt\": \"2026-08-03T05:01:46.0547069-04:00\"\n        },\n        {\n            \"id\": \"35a505ce-085a-4dd3-957a-b306003fffd4\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"997603738162203\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Unactivated\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"A\",\n            \"firstName\": \"Dali\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dikhol@gmail.com\",\n            \"nameOnCard\": \"Dali Khol\",\n            \"panLastFour\": \"1272\",\n            \"isPinSet\": false,\n            \"expirationDate\": \"2028-06-23T00:00:00-04:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"8199DY7EO9VN90ZSQ7NE\",\n            \"createdAt\": \"2025-06-23T23:53:01.24-04:00\",\n            \"lastModifiedAt\": \"2025-06-23T23:53:03.2660948-04:00\"\n        },\n        {\n            \"id\": \"99690b76-21f2-4a5b-ac61-b3fc00d9fbd8\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"357212458222845\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Active\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"B\",\n            \"firstName\": \"Daly\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dkhol@gmail.com\",\n            \"nameOnCard\": \"Daly Khol\",\n            \"panLastFour\": \"1315\",\n            \"isPinSet\": true,\n            \"expirationDate\": \"2029-02-28T00:00:00-05:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"Q72068X5I2F367001NXZ\",\n            \"createdAt\": \"2026-02-25T08:13:39.697-05:00\",\n            \"initialActivation\": \"2026-05-04T00:00:00-04:00\",\n            \"activatedAt\": \"2026-05-04T03:34:56.933-04:00\",\n            \"lastModifiedAt\": \"2026-05-04T03:34:56.9655654-04:00\"\n        },\n        {\n            \"id\": \"940710c0-d9d5-484a-b678-b41a007dd461\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"618166648308057\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Unactivated\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"A\",\n            \"firstName\": \"Dan\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dkhol@gmail.com\",\n            \"nameOnCard\": \"Daly Khol\",\n            \"panLastFour\": \"9246\",\n            \"isPinSet\": false,\n            \"expirationDate\": \"2029-03-31T00:00:00-04:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"i2c\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"TQ2V33UMIFA9V59D910F\",\n            \"createdAt\": \"2026-03-27T03:38:08.37-04:00\",\n            \"lastModifiedAt\": \"2026-03-27T03:38:10.4573412-04:00\"\n        },\n        {\n            \"id\": \"3acaef30-5d82-45e9-b26b-b44100ae4596\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"processorCardId\": \"3acaef30-5d82-45e9-b26b-b44100ae4596\",\n            \"accountNumber\": \"158560897007\",\n            \"status\": \"Active\",\n            \"statusReasonCode\": \"NotSet\",\n            \"processorCardStatus\": \"A\",\n            \"firstName\": \"Dan\",\n            \"lastName\": \"Khol\",\n            \"shippingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"billingAddress\": {\n                \"street1\": \"1 Roshar Ave\",\n                \"city\": \"Roshar\",\n                \"state\": \"NY\",\n                \"postalCode\": \"10001\",\n                \"countryCode\": \"US\"\n            },\n            \"phone\": {\n                \"phoneType\": \"Home\",\n                \"phoneNumber\": \"7185551234\"\n            },\n            \"emailAddress\": \"dkhol@gmail.com\",\n            \"nameOnCard\": \"Daly Khol\",\n            \"panLastFour\": \"5827\",\n            \"isPinSet\": false,\n            \"expirationDate\": \"2029-05-31T00:00:00-04:00\",\n            \"adminBlocked\": false,\n            \"fraudSuspect\": false,\n            \"configurationId\": \"d8e48f19-880c-4b99-86b6-b44100aab972\",\n            \"category\": \"Debit\",\n            \"paymentInstrument\": \"PhysicalCombo\",\n            \"processor\": \"P1\",\n            \"shippingType\": \"Normal\",\n            \"orderStatus\": \"Completed\",\n            \"replacementStatus\": \"NotApplicable\",\n            \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n            \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n            \"processorCustomerId\": \"2c7e6d30-2926-4e4a-adf1-b44100ae4612\",\n            \"createdAt\": \"2026-05-05T06:34:30.67-04:00\",\n            \"initialActivation\": \"2026-05-05T00:00:00-04:00\",\n            \"activatedAt\": \"2026-05-05T06:35:58.593-04:00\",\n            \"lastModifiedAt\": \"2026-05-05T06:35:58.5924808-04:00\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 10,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": true\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "RQyEEaTQF08iGlEEJcXWC"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "from",
        "kind": "optional",
        "type": "string",
        "description": "Provide date and time",
        "": "Provide date and time"
      },
      {
        "name": "to",
        "kind": "optional",
        "type": "string",
        "description": "Provide date and time",
        "": "Provide date and time"
      },
      {
        "name": "firstName",
        "kind": "optional",
        "type": "string",
        "description": "First name of the cardholder",
        "": "First name of the cardholder"
      },
      {
        "name": "lastName",
        "kind": "optional",
        "type": "string",
        "description": "Cardholder last name\n60 characters maximum",
        "": "Cardholder last name\n60 characters maximum"
      },
      {
        "name": "productId",
        "kind": "optional",
        "type": "string",
        "description": "Product ID of the cardholder deposit account. This is in the GUID format.",
        "": "Product ID of the cardholder deposit account. This is in the GUID format."
      },
      {
        "name": "accountNumber",
        "kind": "optional",
        "type": "string",
        "description": "Deposit account number associated with the card.",
        "": "Deposit account number associated with the card."
      },
      {
        "name": "status",
        "kind": "optional",
        "type": "string",
        "description": "Select from:\n- Unactivated\n- Active\n- Suspended\n- Closed",
        "": "Select from:\n- Unactivated\n- Active\n- Suspended\n- Closed"
      },
      {
        "name": "adminBlocked",
        "kind": "optional",
        "type": "boolean",
        "description": "Select from:\n- True\n- False",
        "": "Select from:\n- True\n- False"
      },
      {
        "name": "fraudSuspect",
        "kind": "optional",
        "type": "boolean",
        "description": "Select from:\n- True\n- False",
        "": "Select from:\n- True\n- False"
      },
      {
        "name": "statusReasonCode",
        "kind": "optional",
        "type": "string",
        "description": "Reason for the card status:\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- Fraud Blocked\n",
        "": "Reason for the card status:\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- Fraud Blocked\n"
      },
      {
        "name": "orderStatus",
        "kind": "optional",
        "type": "string",
        "description": "Status of the card order:\n- OrderPending\n- Completed\n- Failed\n- Authorizing\n- AuthorizationFailed\n- AuthorizationCompleted",
        "": "Status of the card order:\n- OrderPending\n- Completed\n- Failed\n- Authorizing\n- AuthorizationFailed\n- AuthorizationCompleted"
      },
      {
        "name": "pageNumber",
        "kind": "optional",
        "type": "integer",
        "description": "Page number in a paginated API response.",
        "": "integer"
      },
      {
        "name": "pageSize",
        "kind": "optional",
        "type": "integer",
        "description": "Number of items per page in a paginated response.",
        "": "Number of items per page in a paginated response."
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card Processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "Status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "StatusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the Primary Account Number, which appears on the physical card",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "string",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "string",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "string",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n- PhysicalMSR \n- PhysicalICC \n- PhysicalContactless \n- PhysicalCombo \n- VirtualPan\n",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order: \n- OrderPending (0) \n- Completed (1)\n- Failed (2) \n- Authorizing (3) \n- AuthorizationFailed (4) \n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "\nIndicates whether the card is a replacement card and the status of the replacement: \n- NotApplicable \n- Pending \n- Completed \n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. 50 characters maximum.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processors unique ID for the cardholder",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cards",
  "legacyHash": "CJ1zUdV_vEgEhlmDckRjv"
}
```
:::


[title] Simulate card clearing
[path] Cards/APIs/Card Issuing APIs/

## API reference

Simulates replacement of a memo post with a core transaction.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/clearing",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/clearing",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "WJQTgOAuPddzxBwHanjiK",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/clearing' \\\n--data '{\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n  \"retrievalReferenceNumber\": \"644371423186\",\n  \"processingCode\": \"BillPayment\"\n}'",
        "customLabel": ""
      },
      {
        "id": "FekkAT2y5bJjxP9feijS_",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/simulate/clearing',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"644371423186\\\",\\r\\n  \\\"processingCode\\\": \\\"BillPayment\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "_XKMz_OWJ0ckpXHGno88O",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/clearing\"\n\npayload = \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"644371423186\\\",\\r\\n  \\\"processingCode\\\": \\\"BillPayment\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "anrSY4yeosv820M7ITlG1",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/clearing\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"644371423186\\\",\\r\\n  \\\"processingCode\\\": \\\"BillPayment\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "f2ANhBmuVmiDYbYq3ueRq",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/clearing\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",`+\"\n\"+`\n  \"retrievalReferenceNumber\": \"644371423186\",`+\"\n\"+`\n  \"processingCode\": \"BillPayment\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "WJQTgOAuPddzxBwHanjiK"
  },
  "results": {
    "languages": [
      {
        "id": "dbsafFgKff2jE0bhPNJva",
        "language": "200",
        "customLabel": "",
        "code": ""
      }
    ],
    "selectedLanguageId": "dbsafFgKff2jE0bhPNJva"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      },
      {
        "name": "retrievalReferenceNumber",
        "kind": "optional",
        "type": "string",
        "description": "Automatically generated reference (alphanumeric). Card network generated identifier used to uniquely track a transaction across systems.",
        "": "Automatically generated reference (alphanumeric). Card network generated identifier used to uniquely track a transaction across systems."
      },
      {
        "name": "systemTraceAuditNumber",
        "kind": "optional",
        "type": "string",
        "description": "Unique transaction ID assigned by the acquirer of the transaction for audit purposes.",
        "": "Unique transaction ID assigned by the acquirer of the transaction for audit purposes."
      },
      {
        "name": "processingCode",
        "kind": "optional",
        "type": "string",
        "description": "Code indicating the transaction type and account types involved.\nSelect from:\n- Purchase\n- Withdrawal\n- DebitAdjustment\n- ConversionGuarantee\n- ConversionVerification\n- TravelerCheck\n- CashbackPurchase\n- AccountFunding\n- QuasiCash\n- FundsWithdrawal\n- CashDisbursement\n- DeferredGoods\n- DebitFee\n- CreditReturn\n- Deposit\n- CreditAdjustment\n- CheckDepositGuarantee\n- CheckDeposit\n- CashDeposit\n- OriginalCredit\n- PaymentTransaction\n- CreditDisbursement\n- AvailableFundsInquiry\n- BalanceInquiry\n- AccountVerification\n- AtmMiniStatement\n- EligibilityInquiry\n- CardholderTransfer\n- BillPayment\n- Payment\n- P2PPayment\n- PaymentFromThirdParty\n- P2PPaymentCredit\n- LoanPayment\n- PaymentEnclosed\n- PrepaidActivation\n- PinUnblock\n- PinChange\n- PV\n- PD\n- CB\n- Q2\n",
        "": "Code indicating the transaction type and account types involved.\nSelect from:\n- Purchase\n- Withdrawal\n- DebitAdjustment\n- ConversionGuarantee\n- ConversionVerification\n- TravelerCheck\n- CashbackPurchase\n- AccountFunding\n- QuasiCash\n- FundsWithdrawal\n- CashDisbursement\n- DeferredGoods\n- DebitFee\n- CreditReturn\n- Deposit\n- CreditAdjustment\n- CheckDepositGuarantee\n- CheckDeposit\n- CashDeposit\n- OriginalCredit\n- PaymentTransaction\n- CreditDisbursement\n- AvailableFundsInquiry\n- BalanceInquiry\n- AccountVerification\n- AtmMiniStatement\n- EligibilityInquiry\n- CardholderTransfer\n- BillPayment\n- Payment\n- P2PPayment\n- PaymentFromThirdParty\n- P2PPaymentCredit\n- LoanPayment\n- PaymentEnclosed\n- PrepaidActivation\n- PinUnblock\n- PinChange\n- PV\n- PD\n- CB\n- Q2\n"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulateclearing",
  "legacyHash": "unv_-qe4bRDWltFygFYto"
}
```
:::


[title] Transaction details by ID
[path] Cards/APIs/Card Issuing APIs/

## API reference

Returns details about card transactions. The response values below are repeated for each transaction. This example uses Partner ID as the input.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/transactions/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/transactions/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "GNOqx7MwVm6G7gpQFMNnt",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/transactions/{id}'",
        "customLabel": ""
      },
      {
        "id": "SNZXzA6EQmifAI9iTmVt-",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/transactions/{id},\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "aLLNdPjMh4UukMZ2Sgi6M",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/transactions/{id}\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "_mweH9WDk1Ouz1eyDgtSl",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/transactions/{id})\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "v982tZfGciqRWV58j8Omx",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/transactions/{id}\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "GNOqx7MwVm6G7gpQFMNnt"
  },
  "results": {
    "languages": [
      {
        "id": "RQyEEaTQF08iGlEEJcXWC",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"ec2639b3-7524-4c1e-8b34-b30000c93225\",\n            \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n            \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n            \"accountNumber\": \"158560897007\",\n            \"createdAt\": \"2025-06-18T08:12:31.91-04:00\",\n            \"description\": \"644371423186 StreamFlix               Anywhere     NYUSA BillPayment on 158560897007\",\n            \"isReversal\": false,\n            \"traceNumber\": 357609,\n            \"transmissionDate\": \"0618121231\",\n            \"panLastFour\": \"4558\",\n            \"isDebit\": true,\n            \"isPin\": false,\n            \"transactionAmount\": 1999,\n            \"billingAmount\": 1999,\n            \"settlementAmount\": 0,\n            \"panEntryMode\": \"PANAutoEntryViaContactless\",\n            \"pinCaptureCapability\": \"Unspecified\",\n            \"retrievalReferenceNumber\": \"644371423186\",\n            \"networkType\": \"Visa\",\n            \"acquirerNetworkId\": \"7476\",\n            \"merchantNameLocation\": \"StreamFlix               Anywhere     NYUSA\",\n            \"merchantType\": \"1111\",\n            \"merchantPostalCode\": \"10001\",\n            \"transactionCurrencyCode\": \"840\",\n            \"billingCurrencyCode\": \"840\",\n            \"settlementCurrencyCode\": \"840\",\n            \"authorizationCode\": \"750884\",\n            \"transactionIdentifier\": \"1-10001719746199\",\n            \"transactionUniqueIdentifier\": \"750884\",\n            \"accountIdentification\": \"827277613081398\",\n            \"partialAuthorizationIndicator\": false,\n            \"isChargeBack\": false,\n            \"outboundResponseCode\": \"00\",\n            \"messageType\": \"0100\",\n            \"processingCode\": \"BillPayment\",\n            \"expirationDate\": \"2025-06-21T08:12:31.91-04:00\",\n            \"billingConversionRate\": 0,\n            \"settlementConversionRate\": 0,\n            \"bankNetReferenceNumber\": \"747771579\",\n            \"transactionFeeAmount\": 0,\n            \"acquiringInstitutionCode\": \"52377112883\",\n            \"forwardingInstitutionCode\": \"50185636050\",\n            \"processor\": \"P1\",\n            \"memoPostId\": \"10dbd093-a37a-4121-885a-b30000c9327b\",\n            \"transactionKey\": \"283D2B2AC4BE5E3F1F34A939E3E96D9478DD2BBE\",\n            \"transactionCurrency\": \"usd\",\n            \"billingCurrency\": \"usd\",\n            \"settlementCurrency\": \"usd\",\n            \"postClosureAccountUsed\": false,\n            \"relatedTransactionId\": \"ec2639b3-7524-4c1e-8b34-b30000c93225\"\n        }\n    ]",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "RQyEEaTQF08iGlEEJcXWC"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "optional",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by CR.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the transaction record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "description",
      "kind": "optional",
      "type": "string",
      "description": "Description of the transaction",
      "children": []
    },
    {
      "name": "isReversal",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the transaction is a reversal of a previous transaction, otherwise false.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "Integer",
      "description": "A unique number assigned to a transaction from the time it leaves the merchant bank until it arrives at the cardholder bank",
      "children": []
    },
    {
      "name": "transmissionDate",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the message entered the data interchange system",
      "children": []
    },
    {
      "name": "cardProgramId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card program the card is assigned to",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "transactionType",
      "kind": "optional",
      "type": "string",
      "description": "Type of transaction: debit or credit",
      "children": []
    },
    {
      "name": "isDebit",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card is a debit card, otherwise false.",
      "children": []
    },
    {
      "name": "isPin",
      "kind": "optional",
      "type": "boolean",
      "description": "Indicator whether a PIN was used in the transaction.",
      "children": []
    },
    {
      "name": "transactionAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Funds requested by the cardholder in the local currency of either the acquirer or source location of the transaction, exclusive the of transaction fee amount",
      "children": []
    },
    {
      "name": "billingAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount billed to the cardholder in the currency of the cardholder account, exclusive of cardholder billing fees",
      "children": []
    },
    {
      "name": "settlementAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The settlement amount may vary from the transaction amount if currency conversion is involved",
      "children": []
    },
    {
      "name": "posEntry",
      "kind": "optional",
      "type": "string",
      "description": "Method more used at the point of sale, which combines card and terminal capabilities.",
      "children": []
    },
    {
      "name": "panEntryMode",
      "kind": "optional",
      "type": "string",
      "description": "Method used to enter the card number for a given transaction (e.g., manual, magnetic stripe, chip).",
      "children": []
    },
    {
      "name": "pinCaptureCapability",
      "kind": "optional",
      "type": "string",
      "description": "For PIN transactions, the method used to enter the PIN.\nOptions include:\n- Unspecified\n- PinEntry\n- NoPinEntry\n- PinEntryTerminalOOS\n- ReservedForISO\n- PinPadInoperative\n- ReservedForNational\n- ReservedForPrivate\n- PinVerified",
      "children": []
    },
    {
      "name": "responseCode",
      "kind": "optional",
      "type": "string",
      "description": "A code that defines the disposition of a message. When the response code is 30, the Additional Response Data contains the bit number in error.",
      "children": []
    },
    {
      "name": "retrievalReferenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Automatically generated reference (alphanumeric)",
      "children": []
    },
    {
      "name": "networkId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the transaction, provided by the card network",
      "children": []
    },
    {
      "name": "networkType",
      "kind": "optional",
      "type": "string",
      "description": "Payment network used to process the transactions (e.g. Visa, Mastercard).",
      "children": []
    },
    {
      "name": "acquirerNetworkId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier associated to the payment network that processed the transaction.",
      "children": []
    },
    {
      "name": "merchantNameLocation",
      "kind": "optional",
      "type": "string",
      "description": "Name and location of merchant involved in the transaction",
      "children": []
    },
    {
      "name": "merchantType",
      "kind": "optional",
      "type": "string",
      "description": "Classification of the merchant type of business, product, or service",
      "children": []
    },
    {
      "name": "merchantPostalCode",
      "kind": "optional",
      "type": "string",
      "description": "Postal code of the merchant",
      "children": []
    },
    {
      "name": "terminalId",
      "kind": "optional",
      "type": "string",
      "description": "Unique code identifying a terminal at the card acceptor location",
      "children": []
    },
    {
      "name": "transactionCurrencyCode",
      "kind": "optional",
      "type": "string",
      "description": "ISO 4217 currency code telling you the local currency of either the acquirer or the source location of the transaction. This is the currency used in the transaction amount and transaction fee amount.",
      "children": []
    },
    {
      "name": "billingCurrencyCode",
      "kind": "optional",
      "type": "string",
      "description": "ISO 4217 currency code telling you the currency of the cardholder billing amount and the cardholder billing fee amount",
      "children": []
    },
    {
      "name": "settlementCurrencyCode",
      "kind": "optional",
      "type": "string",
      "description": "ISO 4217 currency code telling you the currency of both the settlement amount and the settlement fee amount",
      "children": []
    },
    {
      "name": "authorizationCode",
      "kind": "optional",
      "type": "string",
      "description": "Code provided by the issuer when a transaction is approved or a “no reason to decline” code provided for successful verification.",
      "children": []
    },
    {
      "name": "transactionIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "A number that remains unique throughout a transaction life cycle",
      "children": []
    },
    {
      "name": "transactionUniqueIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Additional unique identifier for the transaction",
      "children": []
    },
    {
      "name": "authorizationIndicator",
      "kind": "optional",
      "type": "string",
      "description": "Not used",
      "children": []
    },
    {
      "name": "authorizationLifeCycle",
      "kind": "optional",
      "type": "string",
      "description": "Time interval in effect for pre-authorization when an acquirer is requests guarantee of funds. The first digit indicates the type of time interval (1=calendar days, 2=hours, 3=minutes) and the second digit is the actual time interval value.",
      "children": []
    },
    {
      "name": "accountIdentification",
      "kind": "optional",
      "type": "string",
      "description": "Series of digits used to identify a customer account or relationship ID",
      "children": []
    },
    {
      "name": "partialAuthorizationIndicator",
      "kind": "optional",
      "type": "Boolean",
      "description": "If true, indicates that the authorization is for a partial amount and not the whole amount of the transaction, otherwise, false.",
      "children": []
    },
    {
      "name": "isChargeBack",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the transaction is a chargeback, otherwise false.",
      "children": []
    },
    {
      "name": "outboundResponseCode",
      "kind": "optional",
      "type": "string",
      "description": "Code describing outbound response. ",
      "children": []
    },
    {
      "name": "messageType",
      "kind": "optional",
      "type": "string",
      "description": "Identifies the message type related to the transaction. List of message types.",
      "children": []
    },
    {
      "name": "processingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code indicating the transaction type and account types involved.\nSelect from:\n- Purchase\n- Withdrawal\n- DebitAdjustment\n- ConversionGuarantee\n- ConversionVerification\n- TravelerCheck\n- CashbackPurchase\n- AccountFunding\n- QuasiCash\n- FundsWithdrawal\n- CashDisbursement\n- DeferredGoods\n- DebitFee\n- CreditReturn\n- Deposit\n- CreditAdjustment\n- CheckDepositGuarantee\n- CheckDeposit\n- CashDeposit\n- OriginalCredit\n- PaymentTransaction\n- CreditDisbursement\n- AvailableFundsInquiry\n- BalanceInquiry\n- AccountVerification\n- AtmMiniStatement\n- EligibilityInquiry\n- CardholderTransfer\n- BillPayment\n- Payment\n- P2PPayment\n- PaymentFromThirdParty\n- P2PPaymentCredit\n- LoanPayment\n- PaymentEnclosed\n- PrepaidActivation\n- PinUnblock\n- PinChange\n- PV\n- PD\n- CB\n- Q2",
      "children": []
    },
    {
      "name": "cardAcceptorCode",
      "kind": "optional",
      "type": "string",
      "description": "Unique code identifying a terminal at the card acceptor location",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "billingConversionRate",
      "kind": "optional",
      "type": "Integer",
      "description": "The factor used in the conversion from the transaction to the cardholder billing amount. The transaction amount is multiplied by the cardholder billing conversion rate to determine the cardholder billing amount.",
      "children": []
    },
    {
      "name": "settlementConversionRate",
      "kind": "optional",
      "type": "Integer",
      "description": "The factor used in the conversion from the transaction to the settlement amount. The transaction amount is multiplied by the settlement conversion rate to determine the settlement amount.",
      "children": []
    },
    {
      "name": "bankNetReferenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Unique reference ID within the Banknet system. See: https://www.banknet.gov/entrance/about-banknet/about-banknet.html",
      "children": []
    },
    {
      "name": "transactionFeeAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The fee charged (for example, by the acquirer) for transaction activity in the currency of the transaction amount. This fee can be a surcharge, rebate, or transaction fee.",
      "children": []
    },
    {
      "name": "chargeBackIndicator",
      "kind": "optional",
      "type": "string",
      "description": "If the transaction is a chargeback, this contain the chargeback flag",
      "children": []
    },
    {
      "name": "acquiringInstitutionCode",
      "kind": "optional",
      "type": "string",
      "description": "Code identifying the acquiring institution (for example, merchant bank) or its agent. This can be any uniquely identifying number agreed upon by the network.",
      "children": []
    },
    {
      "name": "forwardingInstitutionCode",
      "kind": "optional",
      "type": "string",
      "description": "Code identifying the institution that is forwarding a request or advice message in an interchange system.",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the core transaction. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "transactionKey",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the transaction",
      "children": []
    },
    {
      "name": "transactionCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency the transaction is performed in",
      "children": []
    },
    {
      "name": "billingCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency used for bllling the cardholder (ISO 4217 format).",
      "children": []
    },
    {
      "name": "settlementCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency in which the transaction is settled between institutions (ISO 4217 format).",
      "children": []
    },
    {
      "name": "reversalType",
      "kind": "optional",
      "type": "string",
      "description": "For reversal type transactions, whether the transaction being reversed is a prior authorization or clearing.\nCan be:\n- Authorization\n- Clearing",
      "children": []
    },
    {
      "name": "postClosureAccountUsed",
      "kind": "optional",
      "type": "string",
      "description": "Indicates if a transaction was attempted on a closed account DDA and therefore had to be posted on the program's post colsure account.",
      "children": []
    },
    {
      "name": "relatedTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique transaction ID assigned by the acquirer of the trnasaction for audit purposes.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1transactionsid",
  "legacyHash": "CJ1zUdV_vEgEhlmDckRjv"
}
```
:::


[title] Simulate card incremental
[path] Cards/APIs/Card Issuing APIs/

## API reference

This endpoint, used with the retrievalReferenceNumber returned by the authorization endpoint, creates an incremental transaction reflected in the deposit account activity. An example of an incremental transaction is when a hotel adds an additional charge for an item charged to your room.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/incremental",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/incremental",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "WJQTgOAuPddzxBwHanjiK",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/incremental' \\\n--data '{\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n  \"retrievalReferenceNumber\": \"654492282074\",\n  \"amount\": \"123\"\n}'\n",
        "customLabel": ""
      },
      {
        "id": "tCR0FA3wfd4BuZIkKCriF",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/simulate/incremental',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"654492282074\\\",\\r\\n  \\\"amount\\\": \\\"123\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "fjoQbyWZjnK6BKfCh4s9s",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/incremental\"\n\npayload = \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"654492282074\\\",\\r\\n  \\\"amount\\\": \\\"123\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "cS_HfOyVDMbZuqCAzB50a",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/incremental\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"retrievalReferenceNumber\\\": \\\"654492282074\\\",\\r\\n  \\\"amount\\\": \\\"123\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "WD3sK5SYtxDvolistgpqp",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/incremental\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",`+\"\n\"+`\n  \"retrievalReferenceNumber\": \"654492282074\",`+\"\n\"+`\n  \"amount\": \"123\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "WJQTgOAuPddzxBwHanjiK"
  },
  "results": {
    "languages": [
      {
        "id": "dbsafFgKff2jE0bhPNJva",
        "language": "200",
        "customLabel": "",
        "code": ""
      }
    ],
    "selectedLanguageId": "dbsafFgKff2jE0bhPNJva"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      },
      {
        "name": "retrievalReferenceNumber",
        "kind": "optional",
        "type": "string",
        "description": "Card network generated identifier used to uniquely track a transaction across systems.",
        "": "Card network generated identifier used to uniquely track a transaction across systems."
      },
      {
        "name": "systemTraceAuditNumber",
        "kind": "optional",
        "type": "string",
        "description": "Unique transaction ID assigned by the acquirer of the transaction for audit puposes.",
        "": "Unique transaction ID assigned by the acquirer of the transaction for audit puposes."
      },
      {
        "name": "amount",
        "kind": "optional",
        "type": "integer",
        "description": "Monetary value of the transaction type and account types involved.",
        "": "Monetary value of the transaction type and account types involved."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulateincremental",
  "legacyHash": "unv_-qe4bRDWltFygFYto"
}
```
:::


[title] Simulate clearing
[path] Cards/APIs/Card Issuing APIs/

## API reference

A single message is a message type that uses real-time verification and requires the cardholder to enter their PIN to authorize and clear their transaction. An example of a transaction that uses a single message is an ATM withdrawal.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/single-message-clearing",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-clearing",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "WJQTgOAuPddzxBwHanjiK",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-clearing' \\\n--data '{\n  \"processingCode\": \"Purchase\",\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n  \"amount\": \"22\",\n  \"merchantCountryCode\": \"US\",\n  \"merchantName\": \"StreamFlix\",\n  \"merchantStreet\": \"123 Any St\",\n  \"merchantCity\": \"Anywhere\",\n  \"merchantState\": \"NY\",\n  \"merchantPostalCode\": \"10001\",\n  \"cardNetwork\": \"Visa\",\n  \"additionalAmounts\": [\n    {\n      \"amountType\": \"Unknown\",\n      \"accountType\": \"NotSpecified\",\n      \"amount\": \"10\"\n    }\n  ]\n}\n\n'",
        "customLabel": ""
      },
      {
        "id": "RcMz2380uzR50iecWLofv",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/simulate/single-message-clearing',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"processingCode\\\": \\\"Purchase\\\",\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"amount\\\": \\\"22\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [\\r\\n    {\\r\\n      \\\"amountType\\\": \\\"Unknown\\\",\\r\\n      \\\"accountType\\\": \\\"NotSpecified\\\",\\r\\n      \\\"amount\\\": \\\"10\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "PgmBJqg97r6PGSRi6p26G",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-clearing\"\n\npayload = \"{\\r\\n  \\\"processingCode\\\": \\\"Purchase\\\",\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"amount\\\": \\\"22\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [\\r\\n    {\\r\\n      \\\"amountType\\\": \\\"Unknown\\\",\\r\\n      \\\"accountType\\\": \\\"NotSpecified\\\",\\r\\n      \\\"amount\\\": \\\"10\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\\r\\n\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "T_07ItxyRBIo20dktmuP-",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-clearing\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"processingCode\\\": \\\"Purchase\\\",\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"amount\\\": \\\"22\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [\\r\\n    {\\r\\n      \\\"amountType\\\": \\\"Unknown\\\",\\r\\n      \\\"accountType\\\": \\\"NotSpecified\\\",\\r\\n      \\\"amount\\\": \\\"10\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "_8bhCYiQW6a9AZzegGcjh",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-clearing\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"processingCode\": \"Purchase\",`+\"\n\"+`\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",`+\"\n\"+`\n  \"amount\": \"22\",`+\"\n\"+`\n  \"merchantCountryCode\": \"US\",`+\"\n\"+`\n  \"merchantName\": \"StreamFlix\",`+\"\n\"+`\n  \"merchantStreet\": \"123 Any St\",`+\"\n\"+`\n  \"merchantCity\": \"Anywhere\",`+\"\n\"+`\n  \"merchantState\": \"NY\",`+\"\n\"+`\n  \"merchantPostalCode\": \"10001\",`+\"\n\"+`\n  \"cardNetwork\": \"Visa\",`+\"\n\"+`\n  \"additionalAmounts\": [`+\"\n\"+`\n    {`+\"\n\"+`\n      \"amountType\": \"Unknown\",`+\"\n\"+`\n      \"accountType\": \"NotSpecified\",`+\"\n\"+`\n      \"amount\": \"10\"`+\"\n\"+`\n    }`+\"\n\"+`\n  ]`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "WJQTgOAuPddzxBwHanjiK"
  },
  "results": {
    "languages": [
      {
        "id": "dbsafFgKff2jE0bhPNJva",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"retrievalReferenceNumber\": \"674583031323\",\n    \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n}"
      }
    ],
    "selectedLanguageId": "dbsafFgKff2jE0bhPNJva"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "processingCode",
        "kind": "optional",
        "type": "string",
        "description": "Code indicating the transaction type and account types involved.\nSelect from:\n- Purchase\n- Withdrawal\n- DebitAdjustment\n- ConversionGuarantee\n- ConversionVerification\n- TravelerCheck\n- CashbackPurchase\n- AccountFunding\n- QuasiCash\n- FundsWithdrawal\n- CashDisbursement\n- DeferredGoods\n- DebitFee\n- CreditReturn\n- Deposit\n- CreditAdjustment\n- CheckDepositGuarantee\n- CheckDeposit\n- CashDeposit\n- OriginalCredit\n- PaymentTransaction\n- CreditDisbursement\n- AvailableFundsInquiry\n- BalanceInquiry\n- AccountVerification\n- AtmMiniStatement\n- EligibilityInquiry\n- CardholderTransfer\n- BillPayment\n- Payment\n- P2PPayment\n- PaymentFromThirdParty\n- P2PPaymentCredit\n- LoanPayment\n- PaymentEnclosed\n- PrepaidActivation\n- PinUnblock\n- PinChange\n- PV\n- PD\n- CB\n- Q2\n",
        "": "Code indicating the transaction type and account types involved.\nSelect from:\n- Purchase\n- Withdrawal\n- DebitAdjustment\n- ConversionGuarantee\n- ConversionVerification\n- TravelerCheck\n- CashbackPurchase\n- AccountFunding\n- QuasiCash\n- FundsWithdrawal\n- CashDisbursement\n- DeferredGoods\n- DebitFee\n- CreditReturn\n- Deposit\n- CreditAdjustment\n- CheckDepositGuarantee\n- CheckDeposit\n- CashDeposit\n- OriginalCredit\n- PaymentTransaction\n- CreditDisbursement\n- AvailableFundsInquiry\n- BalanceInquiry\n- AccountVerification\n- AtmMiniStatement\n- EligibilityInquiry\n- CardholderTransfer\n- BillPayment\n- Payment\n- P2PPayment\n- PaymentFromThirdParty\n- P2PPaymentCredit\n- LoanPayment\n- PaymentEnclosed\n- PrepaidActivation\n- PinUnblock\n- PinChange\n- PV\n- PD\n- CB\n- Q2\n"
      },
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "Monetary value of the transaction in the transaction currency",
        "": "Monetary value of the transaction in the transaction currency"
      },
      {
        "name": "merchantCountryCode",
        "kind": "required",
        "type": "string",
        "description": "Country code of the merchant",
        "": "Country code of the merchant"
      },
      {
        "name": "merchantName",
        "kind": "required",
        "type": "string",
        "description": "Name of the merchant",
        "": "Name of the merchant"
      },
      {
        "name": "merchantStreet",
        "kind": "required",
        "type": "string",
        "description": "Street address of the merchant",
        "": "Street address of the merchant"
      },
      {
        "name": "merchantCity",
        "kind": "required",
        "type": "string",
        "description": "City of the merchant",
        "": "City of the merchant"
      },
      {
        "name": "merchantState",
        "kind": "required",
        "type": "string",
        "description": "State where the merchant is located - 2 letter code format",
        "": "State where the merchant is located - 2 letter code format"
      },
      {
        "name": "merchantPostalCode",
        "kind": "required",
        "type": "string",
        "description": "Postal code of the merchant",
        "": "Postal code of the merchant"
      },
      {
        "name": "cardNetwork",
        "kind": "optional",
        "type": "string",
        "description": "Payment network used to process the transaction.\nSelect from:\n- Visa\n- Mastercard",
        "": "Payment network used to process the transaction.\nSelect from:\n- Visa\n- Mastercard"
      },
      {
        "name": "additionalAmounts",
        "kind": "optional",
        "type": "object",
        "description": "Array with amounts other than the transaction amount that are relevant to this transaction (e.g. fees)",
        "": "Array with amounts other than the transaction amount that are relevant to this transaction (e.g. fees)",
        "children": [
          {
            "name": "amountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- Unknown \n- LedgerBalance\n- AvailableBalance \n- AmountOwing\n- AmountDue \n- AccountAvailableCredit\n- AmountCurrencyConversionAssessment\n- OverLimitFee\n- OverPaymentFee \n- HealthcareEligibilityAmount\n- PerscriptionEligibilityAmount\n- CreditLine\n- PrepaidOnlineBillPayFeeAmount\n- BeginningBalance\n- AmountRemainingThisCycle\n- AmountCashBack\n- AmountGoodsAndServices\n- AmountSurcharge\n- HoldAmount\n- OriginalAmount\n- AuthorizedAmountStarAccess\n- FloorLimit\n- FeeAmount \n- CoPayAmount \n- AvailableCreditOrCheckAmount\n- CreditLimitOrTipService \n- CashDepositAmount \n- CheckDepositAmount\n- ForeignExchangeFee \n- MerchantLocalCurrencyCashBenefitAmount \n- CourtesyAmount \n- OriginalCashBackAmount \n- InterchangeFee\n- TotalAuthorizationAmount\n- ATMExcessUsageFee\n- CurrencyConversionExcessUsageFee"
          },
          {
            "name": "accountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- NotSpecified\n- Savings\n- Checking\n- Account\n- Universal"
          },
          {
            "name": "amount",
            "kind": "optional",
            "type": "integer",
            "description": "Monetary value of the transaction in the transaction currency"
          }
        ],
        "schema": [
          {
            "name": "amountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- Unknown \n- LedgerBalance\n- AvailableBalance \n- AmountOwing\n- AmountDue \n- AccountAvailableCredit\n- AmountCurrencyConversionAssessment\n- OverLimitFee\n- OverPaymentFee \n- HealthcareEligibilityAmount\n- PerscriptionEligibilityAmount\n- CreditLine\n- PrepaidOnlineBillPayFeeAmount\n- BeginningBalance\n- AmountRemainingThisCycle\n- AmountCashBack\n- AmountGoodsAndServices\n- AmountSurcharge\n- HoldAmount\n- OriginalAmount\n- AuthorizedAmountStarAccess\n- FloorLimit\n- FeeAmount \n- CoPayAmount \n- AvailableCreditOrCheckAmount\n- CreditLimitOrTipService \n- CashDepositAmount \n- CheckDepositAmount\n- ForeignExchangeFee \n- MerchantLocalCurrencyCashBenefitAmount \n- CourtesyAmount \n- OriginalCashBackAmount \n- InterchangeFee\n- TotalAuthorizationAmount\n- ATMExcessUsageFee\n- CurrencyConversionExcessUsageFee"
          },
          {
            "name": "accountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- NotSpecified\n- Savings\n- Checking\n- Account\n- Universal"
          },
          {
            "name": "amount",
            "kind": "optional",
            "type": "integer",
            "description": "Monetary value of the transaction in the transaction currency"
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "retrievalReferenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Card network generated identifier used to uniquely track a transaction across systems.\nAutomatically generated reference (alphanumeric)"
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulatesingle-message-cl",
  "legacyHash": "unv_-qe4bRDWltFygFYto"
}
```
:::


[title] Simulate reversal
[path] Cards/APIs/Card Issuing APIs/

## API reference

This endpoint allows you to create a reversal transaction to a single message clearing transaction. For example, use the single-message-clearing endpoint to simulate a purchase and then simulate a return with the single-message-reversal.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/single-message-reversal",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-reversal",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "WJQTgOAuPddzxBwHanjiK",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-reversal' \\\n--data '{\n  \"amount\": \"22\",\n  \"processingCode\": \"Purchase\",\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n  \"merchantCountryCode\": \"US\",\n  \"merchantName\": \"StreamFlix\",\n  \"merchantStreet\": \"123 Any St\",\n  \"merchantCity\": \"Anywhere\",\n  \"merchantState\": \"NY\",\n  \"merchantPostalCode\": \"10001\",\n  \"cardNetwork\": \"Visa\",\n  \"additionalAmounts\": [\n    {\n      \"amountType\": \"Unknown\",\n      \"accountType\": \"NotSpecified\",\n      \"amount\": \"10\"\n    }\n  ]\n}\n'",
        "customLabel": ""
      },
      {
        "id": "iqGDgOoKBmWfFwget0Oss",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/simulate/single-message-reversal',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"amount\\\": \\\"22\\\",\\r\\n  \\\"processingCode\\\": \\\"Purchase\\\",\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [\\r\\n    {\\r\\n      \\\"amountType\\\": \\\"Unknown\\\",\\r\\n      \\\"accountType\\\": \\\"NotSpecified\\\",\\r\\n      \\\"amount\\\": \\\"10\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "hQ0thVQ5xP_49lvNm_EQC",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-reversal\"\n\npayload = \"{\\r\\n  \\\"amount\\\": \\\"22\\\",\\r\\n  \\\"processingCode\\\": \\\"Purchase\\\",\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [\\r\\n    {\\r\\n      \\\"amountType\\\": \\\"Unknown\\\",\\r\\n      \\\"accountType\\\": \\\"NotSpecified\\\",\\r\\n      \\\"amount\\\": \\\"10\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "moRHobe8m4ajddbFECmuy",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-reversal\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"amount\\\": \\\"22\\\",\\r\\n  \\\"processingCode\\\": \\\"Purchase\\\",\\r\\n  \\\"cardId\\\": \\\"8c6a53e0-83ad-4b76-b446-b300006a3e6a\\\",\\r\\n  \\\"merchantCountryCode\\\": \\\"US\\\",\\r\\n  \\\"merchantName\\\": \\\"StreamFlix\\\",\\r\\n  \\\"merchantStreet\\\": \\\"123 Any St\\\",\\r\\n  \\\"merchantCity\\\": \\\"Anywhere\\\",\\r\\n  \\\"merchantState\\\": \\\"NY\\\",\\r\\n  \\\"merchantPostalCode\\\": \\\"10001\\\",\\r\\n  \\\"cardNetwork\\\": \\\"Visa\\\",\\r\\n  \\\"additionalAmounts\\\": [\\r\\n    {\\r\\n      \\\"amountType\\\": \\\"Unknown\\\",\\r\\n      \\\"accountType\\\": \\\"NotSpecified\\\",\\r\\n      \\\"amount\\\": \\\"10\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "gApSE8UyXsWa_B6AgqgtP",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/single-message-reversal\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"amount\": \"22\",`+\"\n\"+`\n  \"processingCode\": \"Purchase\",`+\"\n\"+`\n  \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",`+\"\n\"+`\n  \"merchantCountryCode\": \"US\",`+\"\n\"+`\n  \"merchantName\": \"StreamFlix\",`+\"\n\"+`\n  \"merchantStreet\": \"123 Any St\",`+\"\n\"+`\n  \"merchantCity\": \"Anywhere\",`+\"\n\"+`\n  \"merchantState\": \"NY\",`+\"\n\"+`\n  \"merchantPostalCode\": \"10001\",`+\"\n\"+`\n  \"cardNetwork\": \"Visa\",`+\"\n\"+`\n  \"additionalAmounts\": [`+\"\n\"+`\n    {`+\"\n\"+`\n      \"amountType\": \"Unknown\",`+\"\n\"+`\n      \"accountType\": \"NotSpecified\",`+\"\n\"+`\n      \"amount\": \"10\"`+\"\n\"+`\n    }`+\"\n\"+`\n  ]`+\"\n\"+`\n}`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "WJQTgOAuPddzxBwHanjiK"
  },
  "results": {
    "languages": [
      {
        "id": "dbsafFgKff2jE0bhPNJva",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"retrievalReferenceNumber\": \"150323318008\",\n    \"cardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n}"
      }
    ],
    "selectedLanguageId": "dbsafFgKff2jE0bhPNJva"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "Monetary value of the transaction in the transaction currency.",
        "": "Monetary value of the transaction in the transaction currency."
      },
      {
        "name": "processingCode",
        "kind": "optional",
        "type": "string",
        "description": "Code indicating the transaction type and account types involved.\nSelect from:\n- Purchase\n- Withdrawal\n- DebitAdjustment\n- ConversionGuarantee\n- ConversionVerification\n- TravelerCheck\n- CashbackPurchase\n- AccountFunding\n- QuasiCash\n- FundsWithdrawal\n- CashDisbursement\n- DeferredGoods\n- DebitFee\n- CreditReturn\n- Deposit\n- CreditAdjustment\n- CheckDepositGuarantee\n- CheckDeposit\n- CashDeposit\n- OriginalCredit\n- PaymentTransaction\n- CreditDisbursement\n- AvailableFundsInquiry\n- BalanceInquiry\n- AccountVerification\n- AtmMiniStatement\n- EligibilityInquiry\n- CardholderTransfer\n- BillPayment\n- Payment\n- P2PPayment\n- PaymentFromThirdParty\n- P2PPaymentCredit\n- LoanPayment\n- PaymentEnclosed\n- PrepaidActivation\n- PinUnblock\n- PinChange\n- PV\n- PD\n- CB\n- Q2\n",
        "": "Code indicating the transaction type and account types involved.\nSelect from:\n- Purchase\n- Withdrawal\n- DebitAdjustment\n- ConversionGuarantee\n- ConversionVerification\n- TravelerCheck\n- CashbackPurchase\n- AccountFunding\n- QuasiCash\n- FundsWithdrawal\n- CashDisbursement\n- DeferredGoods\n- DebitFee\n- CreditReturn\n- Deposit\n- CreditAdjustment\n- CheckDepositGuarantee\n- CheckDeposit\n- CashDeposit\n- OriginalCredit\n- PaymentTransaction\n- CreditDisbursement\n- AvailableFundsInquiry\n- BalanceInquiry\n- AccountVerification\n- AtmMiniStatement\n- EligibilityInquiry\n- CardholderTransfer\n- BillPayment\n- Payment\n- P2PPayment\n- PaymentFromThirdParty\n- P2PPaymentCredit\n- LoanPayment\n- PaymentEnclosed\n- PrepaidActivation\n- PinUnblock\n- PinChange\n- PV\n- PD\n- CB\n- Q2\n"
      },
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      },
      {
        "name": "merchantCountryCode",
        "kind": "required",
        "type": "string",
        "description": "Country code of the merchant",
        "": "Country code of the merchant"
      },
      {
        "name": "merchantName",
        "kind": "required",
        "type": "string",
        "description": "Name of the merchant",
        "": "Name of the merchant"
      },
      {
        "name": "merchantStreet",
        "kind": "required",
        "type": "string",
        "description": "Street address of the merchant",
        "": "Street address of the merchant"
      },
      {
        "name": "merchantCity",
        "kind": "required",
        "type": "string",
        "description": "City of the merchant",
        "": "City of the merchant"
      },
      {
        "name": "merchantState",
        "kind": "required",
        "type": "string",
        "description": "State where the merchant is located - 2 letter code format",
        "": "State where the merchant is located - 2 letter code format"
      },
      {
        "name": "merchantPostalCode",
        "kind": "required",
        "type": "string",
        "description": "Postal code of the merchant",
        "": "Postal code of the merchant"
      },
      {
        "name": "cardNetwork",
        "kind": "optional",
        "type": "string",
        "description": "Payment network used to process the transaction.\nSelect from:\n- Visa\n- Mastercard",
        "": "Payment network used to process the transaction.\nSelect from:\n- Visa\n- Mastercard"
      },
      {
        "name": "additionalAmounts",
        "kind": "required",
        "type": "object",
        "description": "Array with amounts other than the transaction amount that are relevant to this transaction (e.g. fees)",
        "": "Array with amounts other than the transaction amount that are relevant to this transaction (e.g. fees)",
        "children": [
          {
            "name": "amountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- Unknown \n- LedgerBalance\n- AvailableBalance \n- AmountOwing\n- AmountDue \n- AccountAvailableCredit\n- AmountCurrencyConversionAssessment\n- OverLimitFee\n- OverPaymentFee \n- HealthcareEligibilityAmount\n- PerscriptionEligibilityAmount\n- CreditLine\n- PrepaidOnlineBillPayFeeAmount\n- BeginningBalance\n- AmountRemainingThisCycle\n- AmountCashBack\n- AmountGoodsAndServices\n- AmountSurcharge\n- HoldAmount\n- OriginalAmount\n- AuthorizedAmountStarAccess\n- FloorLimit\n- FeeAmount \n- CoPayAmount \n- AvailableCreditOrCheckAmount\n- CreditLimitOrTipService \n- CashDepositAmount \n- CheckDepositAmount\n- ForeignExchangeFee \n- MerchantLocalCurrencyCashBenefitAmount \n- CourtesyAmount \n- OriginalCashBackAmount \n- InterchangeFee\n- TotalAuthorizationAmount\n- ATMExcessUsageFee\n- CurrencyConversionExcessUsageFee"
          },
          {
            "name": "accountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- NotSpecified\n- Savings\n- Checking\n- Account\n- Universal"
          },
          {
            "name": "amount",
            "kind": "optional",
            "type": "integer",
            "description": "Monetary value of the transaction in the transaction currency"
          }
        ],
        "schema": [
          {
            "name": "amountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- Unknown \n- LedgerBalance\n- AvailableBalance \n- AmountOwing\n- AmountDue \n- AccountAvailableCredit\n- AmountCurrencyConversionAssessment\n- OverLimitFee\n- OverPaymentFee \n- HealthcareEligibilityAmount\n- PerscriptionEligibilityAmount\n- CreditLine\n- PrepaidOnlineBillPayFeeAmount\n- BeginningBalance\n- AmountRemainingThisCycle\n- AmountCashBack\n- AmountGoodsAndServices\n- AmountSurcharge\n- HoldAmount\n- OriginalAmount\n- AuthorizedAmountStarAccess\n- FloorLimit\n- FeeAmount \n- CoPayAmount \n- AvailableCreditOrCheckAmount\n- CreditLimitOrTipService \n- CashDepositAmount \n- CheckDepositAmount\n- ForeignExchangeFee \n- MerchantLocalCurrencyCashBenefitAmount \n- CourtesyAmount \n- OriginalCashBackAmount \n- InterchangeFee\n- TotalAuthorizationAmount\n- ATMExcessUsageFee\n- CurrencyConversionExcessUsageFee"
          },
          {
            "name": "accountType",
            "kind": "optional",
            "type": "string",
            "description": "Select from:\n- NotSpecified\n- Savings\n- Checking\n- Account\n- Universal"
          },
          {
            "name": "amount",
            "kind": "optional",
            "type": "integer",
            "description": "Monetary value of the transaction in the transaction currency"
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "retrievalReferenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Card network generated identifier used to uniquely track a transaction across systems.\nAutomatically generated reference (alphanumeric)"
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulatesingle-message-re",
  "legacyHash": "unv_-qe4bRDWltFygFYto"
}
```
:::


[title] Get card controls
[path] Cards/APIs/Card Controls APIs/

## API reference

Retrieve current authorization and velocity controls for a card.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{cardId}/controls",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/controls",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"authorizationControls\": [\n        {\n            \"type\": \"country\",\n            \"action\": \"ALLOW\",\n            \"list\": [\n                \"5172\", \"5541\", \"5542\", \"5552\"\n            ]\n        }\n    ],\n    \"velocityControls\": [\n        {\n            \"type\": \"pos\",\n            \"action\": \"ALLOW\",\n            \"list\": [\n                {\n                    \"period\": \"DAY\",\n                    \"amount\": 0,\n                    \"usageLimit\": 0\n                }\n            ],\n            \"cashback\": \"ALLOW\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "cardId"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "authorizationControls",
      "kind": "optional",
      "type": "object",
      "description": "Authorization control settings",
      "children": [
        {
          "name": "type",
          "kind": "optional",
          "type": "string",
          "description": "- country\n- currency\n- mcc\n- mid"
        },
        {
          "name": "action",
          "kind": "optional",
          "type": "string",
          "description": "- ALLOW\n- DENY"
        },
        {
          "name": "list",
          "kind": "optional",
          "type": "string",
          "description": ""
        }
      ]
    },
    {
      "name": "velocityControls",
      "kind": "optional",
      "type": "object",
      "description": "Velocity control settings",
      "children": [
        {
          "name": "type",
          "kind": "optional",
          "type": "string",
          "description": "- pos\n- ecomm\n- gwp\n- withdrawal"
        },
        {
          "name": "action",
          "kind": "optional",
          "type": "string",
          "description": "- ALLOW\n- DENY"
        },
        {
          "name": "list",
          "kind": "optional",
          "type": "object",
          "description": "",
          "children": [
            {
              "name": "period",
              "kind": "optional",
              "type": "string",
              "description": "- DAY\n- WEEK\n- MONTH\n- YEAR\n- TOTAL"
            },
            {
              "name": "amount",
              "kind": "optional",
              "type": "integer",
              "description": ""
            },
            {
              "name": "usageLimit",
              "kind": "optional",
              "type": "integer",
              "description": ""
            }
          ]
        },
        {
          "name": "cashback",
          "kind": "optional",
          "type": "string",
          "description": "- ALLOW\n- DENY"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardscardidcontrols",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::

###


[title] Set card controls
[path] Cards/APIs/Card Controls APIs/

## API reference

Limit the amount of money that can be spent through different channels in a given period.

You can update controls on existing card without reissuing the card.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{cardId}/controls",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/controls",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --request PUT 'https://sandbox.crbcos.com/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls' \\\n--data '{\n  \"authorizationControls\": [\n    {\n      \"type\": \"country\",\n      \"action\": \"ALLOW\",\n      \"list\": [\n        \"string\"\n      ]\n    }\n  ],\n  \"velocityControls\": [\n    {\n      \"type\": \"pos\",\n      \"action\": \"ALLOW\",\n      \"list\": [\n        {\n          \"period\": \"DAY\",\n          \"amount\": 0,\n          \"usageLimit\": 0\n        }\n      ],\n      \"cashback\": \"ALLOW\"\n    }\n  ]\n}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"authorizationControls\\\": [\\r\\n    {\\r\\n      \\\"type\\\": \\\"country\\\",\\r\\n      \\\"action\\\": \\\"ALLOW\\\",\\r\\n      \\\"list\\\": [\\r\\n        \\\"string\\\"\\r\\n      ]\\r\\n    }\\r\\n  ],\\r\\n  \\\"velocityControls\\\": [\\r\\n    {\\r\\n      \\\"type\\\": \\\"pos\\\",\\r\\n      \\\"action\\\": \\\"ALLOW\\\",\\r\\n      \\\"list\\\": [\\r\\n        {\\r\\n          \\\"period\\\": \\\"DAY\\\",\\r\\n          \\\"amount\\\": 0,\\r\\n          \\\"usageLimit\\\": 0\\r\\n        }\\r\\n      ],\\r\\n      \\\"cashback\\\": \\\"ALLOW\\\"\\r\\n    }\\r\\n  ]\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls\"\n\npayload = \"{\\r\\n  \\\"authorizationControls\\\": [\\r\\n    {\\r\\n      \\\"type\\\": \\\"country\\\",\\r\\n      \\\"action\\\": \\\"ALLOW\\\",\\r\\n      \\\"list\\\": [\\r\\n        \\\"string\\\"\\r\\n      ]\\r\\n    }\\r\\n  ],\\r\\n  \\\"velocityControls\\\": [\\r\\n    {\\r\\n      \\\"type\\\": \\\"pos\\\",\\r\\n      \\\"action\\\": \\\"ALLOW\\\",\\r\\n      \\\"list\\\": [\\r\\n        {\\r\\n          \\\"period\\\": \\\"DAY\\\",\\r\\n          \\\"amount\\\": 0,\\r\\n          \\\"usageLimit\\\": 0\\r\\n        }\\r\\n      ],\\r\\n      \\\"cashback\\\": \\\"ALLOW\\\"\\r\\n    }\\r\\n  ]\\r\\n}\"\nheaders = {\n\n}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n  \\\"authorizationControls\\\": [\\r\\n    {\\r\\n      \\\"type\\\": \\\"country\\\",\\r\\n      \\\"action\\\": \\\"ALLOW\\\",\\r\\n      \\\"list\\\": [\\r\\n        \\\"string\\\"\\r\\n      ]\\r\\n    }\\r\\n  ],\\r\\n  \\\"velocityControls\\\": [\\r\\n    {\\r\\n      \\\"type\\\": \\\"pos\\\",\\r\\n      \\\"action\\\": \\\"ALLOW\\\",\\r\\n      \\\"list\\\": [\\r\\n        {\\r\\n          \\\"period\\\": \\\"DAY\\\",\\r\\n          \\\"amount\\\": 0,\\r\\n          \\\"usageLimit\\\": 0\\r\\n        }\\r\\n      ],\\r\\n      \\\"cashback\\\": \\\"ALLOW\\\"\\r\\n    }\\r\\n  ]\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/cc25620c-d865-4801-9128-b44700ccb94c/controls\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"authorizationControls\": [`+\"\n\"+`\n    {`+\"\n\"+`\n      \"type\": \"country\",`+\"\n\"+`\n      \"action\": \"ALLOW\",`+\"\n\"+`\n      \"list\": [`+\"\n\"+`\n        \"string\"`+\"\n\"+`\n      ]`+\"\n\"+`\n    }`+\"\n\"+`\n  ],`+\"\n\"+`\n  \"velocityControls\": [`+\"\n\"+`\n    {`+\"\n\"+`\n      \"type\": \"pos\",`+\"\n\"+`\n      \"action\": \"ALLOW\",`+\"\n\"+`\n      \"list\": [`+\"\n\"+`\n        {`+\"\n\"+`\n          \"period\": \"DAY\",`+\"\n\"+`\n          \"amount\": 0,`+\"\n\"+`\n          \"usageLimit\": 0`+\"\n\"+`\n        }`+\"\n\"+`\n      ],`+\"\n\"+`\n      \"cashback\": \"ALLOW\"`+\"\n\"+`\n    }`+\"\n\"+`\n  ]`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "LlihbtH7gA8XaUtFWFayL",
        "language": "202",
        "code": ""
      }
    ],
    "selectedLanguageId": "LlihbtH7gA8XaUtFWFayL"
  },
  "request": {
    "pathParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "UID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "UID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "controlConfigInfo",
        "kind": "required",
        "type": "object",
        "description": "",
        "": "required",
        "children": [
          {
            "name": "authorizationControls",
            "kind": "optional",
            "type": "object",
            "description": "Establish rules for card transaction validation",
            "children": [
              {
                "name": "type",
                "kind": "optional",
                "type": "string",
                "description": "- country \n- currency \n- mcc \n- mid "
              },
              {
                "name": "action",
                "kind": "optional",
                "type": "string",
                "description": "- ALLOW \n- DENY "
              },
              {
                "name": "list",
                "kind": "optional",
                "type": "string",
                "description": ""
              }
            ]
          },
          {
            "name": "velocityControls",
            "kind": "optional",
            "type": "object",
            "description": "Spending limits over time periods",
            "children": [
              {
                "name": "type",
                "kind": "optional",
                "type": "string",
                "description": "- pos\n- ecomm\n- gwp\n- withdrawal\n- general_spend"
              },
              {
                "name": "action",
                "kind": "optional",
                "type": "string",
                "description": "- ALLOW\n- DENY"
              },
              {
                "name": "list",
                "kind": "optional",
                "type": "object",
                "description": "",
                "children": [
                  {
                    "name": "period",
                    "kind": "optional",
                    "type": "string",
                    "description": "- DAY\n- WEEK\n- MONTH\n- YEAR\n- TOTAL"
                  },
                  {
                    "name": "amount",
                    "kind": "optional",
                    "type": "integer",
                    "description": "Maximum cumulative transaction amount allowed within the period. "
                  },
                  {
                    "name": "usageLimit",
                    "kind": "optional",
                    "type": "integer",
                    "description": "Number of transactions allowed within the velocity window. Block high-frequency fraud attempts, even when each transaction is small."
                  }
                ]
              },
              {
                "name": "cashback",
                "kind": "optional",
                "type": "string",
                "description": "Controls whether cashback amounts are included in velocity control amount calculations. \nOptions:\n- ALLOW (Cashback amount is included in the velocity control limit calculation)\n- DENY (Cashback amount is excluded from the velocity control limit calculation)"
              }
            ]
          }
        ],
        "schema": [
          {
            "name": "authorizationControls",
            "kind": "optional",
            "type": "object",
            "description": "Establish rules for card transaction validation",
            "children": [
              {
                "name": "type",
                "kind": "optional",
                "type": "string",
                "description": "- country \n- currency \n- mcc \n- mid "
              },
              {
                "name": "action",
                "kind": "optional",
                "type": "string",
                "description": "- ALLOW \n- DENY "
              },
              {
                "name": "list",
                "kind": "optional",
                "type": "string",
                "description": ""
              }
            ]
          },
          {
            "name": "velocityControls",
            "kind": "optional",
            "type": "object",
            "description": "Spending limits over time periods",
            "children": [
              {
                "name": "type",
                "kind": "optional",
                "type": "string",
                "description": "- pos\n- ecomm\n- gwp\n- withdrawal\n- general_spend"
              },
              {
                "name": "action",
                "kind": "optional",
                "type": "string",
                "description": "- ALLOW\n- DENY"
              },
              {
                "name": "list",
                "kind": "optional",
                "type": "object",
                "description": "",
                "children": [
                  {
                    "name": "period",
                    "kind": "optional",
                    "type": "string",
                    "description": "- DAY\n- WEEK\n- MONTH\n- YEAR\n- TOTAL"
                  },
                  {
                    "name": "amount",
                    "kind": "optional",
                    "type": "integer",
                    "description": "Maximum cumulative transaction amount allowed within the period. "
                  },
                  {
                    "name": "usageLimit",
                    "kind": "optional",
                    "type": "integer",
                    "description": "Number of transactions allowed within the velocity window. Block high-frequency fraud attempts, even when each transaction is small."
                  }
                ]
              },
              {
                "name": "cashback",
                "kind": "optional",
                "type": "string",
                "description": "Controls whether cashback amounts are included in velocity control amount calculations. \nOptions:\n- ALLOW (Cashback amount is included in the velocity control limit calculation)\n- DENY (Cashback amount is excluded from the velocity control limit calculation)"
              }
            ]
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardscardidcontrols",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::

### Combining multiple authorization controls

You can combine multiple authorization control types on a single card. All controls must pass for transaction approval.

**Example - comprehensive control set:**

:::BlockQuote
\{
&#x20; "authorizationControls": \[
&#x20;   \{
&#x20;     "type": "country",
&#x20;     "action": "ALLOW",
&#x20;     "list": \["US"]
&#x20;   },
&#x20;   \{
&#x20;     "type": "currency",
&#x20;     "action": "ALLOW",
&#x20;     "list": \["USD"]
&#x20;   },
&#x20;   \{
&#x20;     "type": "mcc",
&#x20;     "action": "ALLOW",
&#x20;     "list": \["5172", "5541", "5542", "5552"]
&#x20;   },
&#x20;   \{
&#x20;     "type": "mid",
&#x20;     "action": "DENY",
&#x20;     "list": \["BLOCKED\_MERCHANT\_123"]
&#x20;   }
&#x20; ]
}
:::

**Evaluation logic:**

1. ✅ Country must be US
2. ✅ Currency must be USD
3. ✅ MCC must be fuel-related (5172, 5541, 5542, 5552)
4. ✅ MID must exclude BLOCKED\_MERCHANT\_123

All conditions must be satisfied for approval.


[title] Retrieve specific wallet token
[path] Cards/APIs/Wallet Tokenization APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- Cards.Token.ActivationReceived
- Cards.Token.CompletionReceived
- Cards.Token.ProvisioningReceived

## API reference

Retrieve a specific wallet token by its Cross River token ID

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{cardId}/tokens/{tokenId}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/tokens/{tokenId}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7',\n  'headers': {\n  }\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"c25cabee-2533-4a46-a52b-c74991559bd7\",\n    \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",\n    \"createdAt\": \"2026-05-19T09:18:20.24664-04:00\",\n    \"status\": \"ACTIVE\",\n    \"channelProvisioningType\": \"WALLET_MANUAL\",\n    \"tokenRequestor\": {\n        \"name\": \"APPLE_PAY\",\n        \"id\": \"40010030273\"\n    },\n    \"tokenUniqueReference\": \"DNITHE9081730203478143\",\n    \"dPanLast4\": \"0098\",\n    \"lastModifiedAt\": \"2026-05-19T09:39:14.219418-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "cardId"
      },
      {
        "name": "tokenId",
        "kind": "required",
        "type": "string",
        "description": "The unique identifier of the token to update. Must be a valid GUID.",
        "": "The unique identifier of the token to update. Must be a valid GUID."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm] ",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Current status of the wallet token (e.g., ACTIVE, SUSPENDED, DELETED).",
      "children": []
    },
    {
      "name": "channelProvisioningType",
      "kind": "optional",
      "type": "string",
      "description": "The method used to provision this token (e.g., MOBILE_APP, ECOMMERCE).",
      "children": []
    },
    {
      "name": "tokenRequester",
      "kind": "optional",
      "type": "object",
      "description": "Identifier of the token service provider requesting tokenization (e.g. Apply Pay).",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Display name of the wallet or token service provider."
        },
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier for this wallet token in GUID format."
        }
      ]
    },
    {
      "name": "tokenUniqueReference",
      "kind": "optional",
      "type": "string",
      "description": "Unique reference identifier assigned by the token service provider.",
      "children": []
    },
    {
      "name": "dPanLast4",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the device-specific PAN (DPAN) used for the tokenized transaction.",
      "children": []
    },
    {
      "name": "paymentAccountReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "Reference linking this token to the payment account/PAN.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardscardidtokenstokenid",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Add phone
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.Customer.Phone.Added](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;

## API reference

Adds a phone number to the customer record.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{customerId}/phones",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/phones",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "xK0mDfrnuxTC3HLNjR8-M",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/phones' ^\n-d '{\n  \"isPrimary\": true,\n  \"phoneType\": \"Work\",\n  \"phoneNumber\": \"2015551212\",\n  \"extension\": \"123\"\n}\n'",
        "customLabel": ""
      },
      {
        "id": "IKn-PxxWeTvuu7Ts0a1vg",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/phones',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"phoneType\\\": \\\"Work\\\",\\r\\n  \\\"phoneNumber\\\": \\\"2015551212\\\",\\r\\n  \\\"extension\\\": \\\"123\\\"\\r\\n}\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "-paRfLEtWtmccFPoP6PJ7",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/phones\"\n\npayload = \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"phoneType\\\": \\\"Work\\\",\\r\\n  \\\"phoneNumber\\\": \\\"2015551212\\\",\\r\\n  \\\"extension\\\": \\\"123\\\"\\r\\n}\\r\\n\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "3FTL4k3m64eg39sFIS-SA",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/phones\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"phoneType\\\": \\\"Work\\\",\\r\\n  \\\"phoneNumber\\\": \\\"2015551212\\\",\\r\\n  \\\"extension\\\": \\\"123\\\"\\r\\n}\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "jcYn64Ted91iFNXMbDDWM",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/phones\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"isPrimary\": true,`+\"\n\"+`\n  \"phoneType\": \"Work\",`+\"\n\"+`\n  \"phoneNumber\": \"2015551212\",`+\"\n\"+`\n  \"extension\": \"123\"`+\"\n\"+`\n}`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xK0mDfrnuxTC3HLNjR8-M"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "code": "{\n    \"id\": \"a25e3529-bccd-4699-8386-b30400bf7e63\",\n    \"customerId\": \"bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887\",\n    \"status\": \"Active\",\n    \"phoneType\": \"Work\",\n    \"isPrimary\": true,\n    \"phoneNumber\": \"2015551212\",\n    \"extension\": \"123\",\n    \"createdAt\": \"2025-06-22T07:37:12.4331184-04:00\",\n    \"lastModifiedAt\": \"2025-06-22T07:37:12.4331184-04:00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\"\n}",
        "customLabel": ""
      },
      {
        "id": "qba0R7XRwObMUX7S30mb7",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2230,\n            \"message\": \"Phone number already exists\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zuoamZSUzJOVAnQseRBuz"
  },
  "request": {
    "pathParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The customer ID of the customer record to update",
        "": "The customer ID of the customer record to update"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "isPrimary",
        "kind": "required",
        "type": "boolean",
        "description": "True if this is the primary phone record for this customer. Otherwise, false.",
        "": "required"
      },
      {
        "name": "phoneType",
        "kind": "required",
        "type": "string",
        "description": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax",
        "": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax"
      },
      {
        "name": "phoneNumber",
        "kind": "required",
        "type": "string",
        "description": "Phone number with no spaces or other characters. Minimum 10 characters, maximum 20.",
        "": "Phone number with no spaces or other characters. Minimum 10 characters, maximum 20."
      },
      {
        "name": "extension",
        "kind": "optional",
        "type": "string",
        "description": "If the phone rings a switchboard, the entity's direct extension. 20 character maximum.",
        "": "If the phone rings a switchboard, the entity's direct extension. 20 character maximum."
      },
      {
        "name": "notes",
        "kind": "optional",
        "type": "string",
        "description": "Additional phone information. 255 character maximum.",
        "": "Additional phone information. 255 character maximum."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "COS ID for the record, in GUID format"
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The COS customer ID of the customer record being updated",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the customer record:\n- Inactive\n- Active",
      "children": []
    },
    {
      "name": "phoneType",
      "kind": "optional",
      "type": "string",
      "description": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax",
      "children": []
    },
    {
      "name": "isPrimary",
      "kind": "optional",
      "type": "boolean",
      "description": "True if this is the primary address record for this customer. Otherwise, false.",
      "children": []
    },
    {
      "name": "phoneNumber",
      "kind": "optional",
      "type": "string",
      "description": "Phone number with no spaces or other characters. Minimum 10 characters, maximum 20.",
      "children": []
    },
    {
      "name": "extension",
      "kind": "optional",
      "type": "string",
      "description": "If the phone rings a switchboard, the entity's direct extension. 20 character maximum.",
      "children": []
    },
    {
      "name": "notes",
      "kind": "optional",
      "type": "string",
      "description": "Additional phone information. 255 character maximum.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomerscustomeridphones",
  "legacyHash": "NyU7IE8Zo5TJFk3YzYdTu"
}
```
:::


[title] Update profile
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.Customer.Profile.Changed](docId\:rl8xMrOEgISTYbmE-Y98D) &#x20;

## API reference

Updates the Profile section of the customer record. The profile includes customer banking-relevant information.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{id}/profile",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{id}/profile",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "xK0mDfrnuxTC3HLNjR8-M",
        "language": "curl",
        "code": "curl --location --request PUT 'https://sandbox.crbcos.com/core/v1/cm/customers/928668cc-27ca-4388-9754-b3ad0092be45/profile' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer ' \\\n--data '{\n  \"regO\": false,\n  \"politicallyExposedPerson\": false,\n  \"taxIdType\": \"Ssn\",\n  \"taxId\": \"874339497\",\n  \"birthDate\": \"1972-11-08\",\n  \"riskRating\": \"Low\",\n}\n'",
        "customLabel": ""
      },
      {
        "id": "Sfds9Hmx9Sui1_6GJyU5q",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/928668cc-27ca-4388-9754-b3ad0092be45/profile',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"regO\\\": false,\\r\\n  \\\"politicallyExposedPerson\\\": false,\\r\\n  \\\"taxIdType\\\": \\\"Ssn\\\",\\r\\n  \\\"taxId\\\": \\\"874339497\\\",\\r\\n  \\\"birthDate\\\": \\\"1972-11-08\\\",\\r\\n  \\\"riskRating\\\": \\\"Low\\\",\\r\\n}\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "p2mgpAw9ZbaTwt2iiYMG-",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"regO\\\": false,\\r\\n  \\\"politicallyExposedPerson\\\": false,\\r\\n  \\\"taxIdType\\\": \\\"Ssn\\\",\\r\\n  \\\"taxId\\\": \\\"874339497\\\",\\r\\n  \\\"birthDate\\\": \\\"1972-11-08\\\",\\r\\n  \\\"riskRating\\\": \\\"Low\\\",\\r\\n}\\r\\n\"\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"PUT\", \"/core/v1/cm/customers/928668cc-27ca-4388-9754-b3ad0092be45/profile\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "yQQFbZ14K1Svsw-c2e440",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/928668cc-27ca-4388-9754-b3ad0092be45/profile\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n  \\\"regO\\\": false,\\r\\n  \\\"politicallyExposedPerson\\\": false,\\r\\n  \\\"taxIdType\\\": \\\"Ssn\\\",\\r\\n  \\\"taxId\\\": \\\"874339497\\\",\\r\\n  \\\"birthDate\\\": \\\"1972-11-08\\\",\\r\\n  \\\"riskRating\\\": \\\"Low\\\",\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "SNQlzFgb-VGSFcRmwkzV3",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/928668cc-27ca-4388-9754-b3ad0092be45/profile\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"regO\": false,`+\"\n\"+`\n  \"politicallyExposedPerson\": false,`+\"\n\"+`\n  \"taxIdType\": \"Ssn\",`+\"\n\"+`\n  \"taxId\": \"874339497\",`+\"\n\"+`\n  \"birthDate\": \"1972-11-08\",`+\"\n\"+`\n  \"riskRating\": \"Low\",`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xK0mDfrnuxTC3HLNjR8-M"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "code": "{\n    \"regO\": false,\n    \"politicallyExposedPerson\": false,\n    \"enableBackupWithholding\": false,\n    \"taxIdType\": \"Ssn\",\n    \"taxId\": \"874339497\",\n    \"birthDate\": \"1972-11-08\",\n    \"riskRating\": \"Low\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zuoamZSUzJOVAnQseRBuz"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The unique customer ID for the onboarded customer. This is a GUID.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "regO",
        "kind": "required",
        "type": "boolean",
        "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity, but is required for an individual.",
        "": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity, but is required for an individual."
      },
      {
        "name": "citizenshipCountryCode",
        "kind": "optional",
        "type": "string",
        "description": "Country of citizenship (2 character ISO code)",
        "": "Country of citizenship (2 character ISO code)"
      },
      {
        "name": "politicallyExposedPerson",
        "kind": "optional",
        "type": "boolean",
        "description": "Politically exposed person (PEP). True if PEP, otherwise false.\nThis attribute is not relevant for a business entity, but is required for an individual.",
        "": "optional"
      },
      {
        "name": "enableBackupWithholding",
        "kind": "optional",
        "type": "boolean",
        "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false.",
        "": "boolean"
      },
      {
        "name": "backupWithholdingPercent",
        "kind": "optional",
        "type": "number",
        "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned",
        "": "number"
      },
      {
        "name": "taxIdType",
        "kind": "required",
        "type": "string",
        "description": "Tax ID type for the entity:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)",
        "": "required"
      },
      {
        "name": "taxId",
        "kind": "required",
        "type": "string",
        "description": "Tax ID number. 9 character minimum for SSN, EIN, or ITIN; 5 character minimum for VAT or Foreign. 20 character maximum.",
        "": "Tax ID number. 9 character minimum for SSN, EIN, or ITIN; 5 character minimum for VAT or Foreign. 20 character maximum."
      },
      {
        "name": "birthDate",
        "kind": "optional",
        "type": "string",
        "description": "Date of birth in the format \"yyyy-mm-dd\".\nThis attribute is not relevant for a business entity.",
        "": "Date of birth in the format \"yyyy-mm-dd\".\nThis attribute is not relevant for a business entity."
      },
      {
        "name": "dateFormed",
        "kind": "optional",
        "type": "string",
        "description": "Date when legal entity was  formed. In the format \"yyyy-mm-dd\".\nNot relevant for an individual.",
        "": "Date when legal entity was  formed. In the format \"yyyy-mm-dd\".\nNot relevant for an individual."
      },
      {
        "name": "entityType",
        "kind": "optional",
        "type": "string",
        "description": "Business entity legal classification. Also called Customer entity type.",
        "": "Business entity legal classification. Also called Customer entity type."
      },
      {
        "name": "riskRating",
        "kind": "required",
        "type": "string",
        "description": "Customer risk rating:\nLow, Medium, High",
        "": "required"
      },
      {
        "name": "ownershipType",
        "kind": "optional",
        "type": "string",
        "description": "Exempt, Excluded, NonProfit, LegalEntity\nNot relevant for an individual, required for a business entity",
        "": "optional"
      },
      {
        "name": "primaryOwnerCustomerId",
        "kind": "optional",
        "type": "string",
        "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format.",
        "": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format."
      },
      {
        "name": "parentEntityId",
        "kind": "optional",
        "type": "string",
        "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format.",
        "": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format."
      },
      {
        "name": "dateOfDeath",
        "kind": "optional",
        "type": "string",
        "description": "Indicates the date of a customer's passing, should that occur. In the format \"yyyy-mm-dd\".",
        "": "Indicates the date of a customer's passing, should that occur. In the format \"yyyy-mm-dd\"."
      },
      {
        "name": "privacyOptOut",
        "kind": "optional",
        "type": "boolean",
        "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false.",
        "": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "regO",
      "kind": "optional",
      "type": "boolean",
      "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity, but is required for an individual.",
      "children": []
    },
    {
      "name": "citizenshipCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "Country of citizenship (2 character ISO code)",
      "children": []
    },
    {
      "name": "politicallyExposedPerson",
      "kind": "optional",
      "type": "boolean",
      "description": "Politically exposed person (PEP). True if PEP, otherwise false.\nThis attribute is not relevant for a business entity, but is required for an individual.",
      "children": []
    },
    {
      "name": "enableBackupWithholding",
      "kind": "optional",
      "type": "boolean",
      "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false.",
      "children": []
    },
    {
      "name": "backupWithholdingPercent",
      "kind": "optional",
      "type": "number",
      "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned",
      "children": []
    },
    {
      "name": "taxIdType",
      "kind": "optional",
      "type": "string",
      "description": "Tax ID type for the entity:\n- Ssn\n- Ein\n- Itin\n- Vat\n- Foreign",
      "children": []
    },
    {
      "name": "taxId",
      "kind": "optional",
      "type": "string",
      "description": "Tax ID number",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Date of birth in the format \"yyyy-mm-dd\".\nThis attribute is not relevant for a business entity.",
      "children": []
    },
    {
      "name": "dateFormed",
      "kind": "optional",
      "type": "string",
      "description": "Date when legal entity was  formed. In the format \"yyyy-mm-dd\".\nNot relevant for an individual.",
      "children": []
    },
    {
      "name": "entityType",
      "kind": "optional",
      "type": "string",
      "description": "Business entity legal classification. Also called Customer entity type.",
      "children": []
    },
    {
      "name": "riskRating",
      "kind": "optional",
      "type": "string",
      "description": "Customer risk rating:\nLow, Medium, High",
      "children": []
    },
    {
      "name": "ownershipType",
      "kind": "optional",
      "type": "string",
      "description": "Exempt, Excluded, NonProfit, LegalEntity",
      "children": []
    },
    {
      "name": "primaryOwnerCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format.",
      "children": []
    },
    {
      "name": "parentEntityId",
      "kind": "optional",
      "type": "string",
      "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format.",
      "children": []
    },
    {
      "name": "dateOfDeath",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the date of a customer's passing, should that occur. In the format \"yyyy-mm-dd\".",
      "children": []
    },
    {
      "name": "privacyOptOut",
      "kind": "optional",
      "type": "boolean",
      "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomersidprofile",
  "legacyHash": "eP_4FP7YdE669ic4Karxe"
}
```
:::


[title] Open account
[path] Accounts/Account mgmt APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Core.Account.Opened](docId\:eAs8aFqW7M97baeZUC8Sr)&#x20;
- Core.Account.Closed

## API reference

Creates a deposit account for a specific customer using the customer ID and based on the product ID for that type of account.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/dda/accounts",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "TkkpRJVwm9o-A0Jz7Ux6D",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts' \\\n--header 'Idempotency-key: 025aaf3e-87e5-46e6-ba60-2071c3a69be8' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '{\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n  \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n  \"title\": \"Jerry Penn\",\n  \"statementAddress\": {\n    \"street1\": \"12 Main St\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\"\n  }\n}\n\n'",
        "customLabel": ""
      },
      {
        "id": "XH3cOVfBXlwQz4cv9gDvV",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts',\n  'headers': {\n    'Idempotency-key': '025aaf3e-87e5-46e6-ba60-2071c3a69be8',\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n  \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n  \"title\": \"Jerry Penn\",\n  \"statementAddress\": {\n    \"street1\": \"12 Main St\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\"\n  }\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "aEVC5E2Js9DdxzS22O3Fb",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/core/v1/dda/accounts\"\n\npayload = json.dumps({\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n  \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n  \"title\": \"Jerry Penn\",\n  \"statementAddress\": {\n    \"street1\": \"12 Main St\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\"\n  }\n})\nheaders = {\n  'Idempotency-key': '025aaf3e-87e5-46e6-ba60-2071c3a69be8',\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "XlslCd0KYWmTiLqmtxpl1",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"025aaf3e-87e5-46e6-ba60-2071c3a69be8\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = JSON.dump({\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n  \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n  \"title\": \"Jerry Penn\",\n  \"statementAddress\": {\n    \"street1\": \"12 Main St\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\"\n  }\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "YG_DItEW4xV27MuNMwjzC",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",`+\"\n\"+`\n  \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",`+\"\n\"+`\n  \"title\": \"Jerry Penn\",`+\"\n\"+`\n  \"statementAddress\": {`+\"\n\"+`\n    \"street1\": \"12 Main St\",`+\"\n\"+`\n    \"city\": \"New York\",`+\"\n\"+`\n    \"state\": \"NY\",`+\"\n\"+`\n    \"postalCode\": \"10001\",`+\"\n\"+`\n    \"countryCode\": \"US\"`+\"\n\"+`\n  }`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"025aaf3e-87e5-46e6-ba60-2071c3a69be8\")\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "TkkpRJVwm9o-A0Jz7Ux6D"
  },
  "results": {
    "languages": [
      {
        "id": "g99c9siiTaND8YQGYvOkr",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"accountNumber\": \"2819503463\",\n    \"status\": \"Active\",\n    \"accountType\": \"Deposit\",\n    \"ledgerType\": \"Passthrough\",\n    \"classification\": \"Personal\",\n    \"productType\": \"Checking\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"title\": \"Jerry Penn\",\n    \"currentBalance\": 0,\n    \"holdAmount\": 0,\n    \"transactionCount\": 0,\n    \"availableBalance\": 0,\n    \"creditLimit\": 0,\n    \"overdraftFundingEnabled\": false,\n    \"overdraftFundingThreshold\": 0,\n    \"currency\": \"usd\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"statementAddress\": {\n        \"street1\": \"12 Main St\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"openedAt\": \"2025-06-18T09:41:00.9073289-04:00\",\n    \"lastMaintenanceAt\": \"2025-06-18T09:41:00.9073289-04:00\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-06-18T09:41:00.9073289-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "g99c9siiTaND8YQGYvOkr"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format.",
        "": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format."
      },
      {
        "name": "productId",
        "kind": "required",
        "type": "string",
        "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
        "": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River."
      },
      {
        "name": "title",
        "kind": "required",
        "type": "string",
        "description": "The name on the account. Usually this is the account holder name, but not always.\n255 characters maximum.",
        "": "The name on the account. Usually this is the account holder name, but not always.\n255 characters maximum."
      },
      {
        "name": "statementAddress",
        "kind": "required",
        "type": "Object",
        "description": "Mailing address for paper statement delivery",
        "children": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of account holder, for instance, street name, house/building number, PO box.\n255 character maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information.\n255 characters maximum."
          },
          {
            "name": "street3",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information.\n255 characters maximum."
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "City full name.\n255 characters maximum."
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "State name. We recommend you enter the 2-character state code.\n255 characters maximum."
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Postal code, also known as ZIP code\n50 characters maximum."
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code"
          }
        ],
        "schema": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of account holder, for instance, street name, house/building number, PO box.\n255 character maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information.\n255 characters maximum."
          },
          {
            "name": "street3",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information.\n255 characters maximum."
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "City full name.\n255 characters maximum."
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "State name. We recommend you enter the 2-character state code.\n255 characters maximum."
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Postal code, also known as ZIP code\n50 characters maximum."
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code"
          }
        ]
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
        "children": []
      },
      {
        "name": "rateCard",
        "kind": "optional",
        "type": "string",
        "description": "ID of the account's assigned, pre-configured interest rate profile, in GUID format",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of the newly created account"
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Account status:\n- Inactive\n- Active\n- Dormant\n- Escheat\n- Closed",
      "children": []
    },
    {
      "name": "accountType",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account type:\n- GeneralLedger\n- Deposit\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown",
      "children": []
    },
    {
      "name": "ledgerType",
      "kind": "optional",
      "type": "string",
      "description": "Ledger type:\n- Passthrough\n- Direct",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account classification:\n- Personal\n- Business",
      "children": []
    },
    {
      "name": "productType",
      "kind": "optional",
      "type": "string",
      "description": "Product type associated with the deposit account:\n- GeneralLedger\n- Checking\n- Savings\n- TimeDeposit\n- MoneyMarket\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown",
      "children": []
    },
    {
      "name": "closureReason",
      "kind": "optional",
      "type": "string",
      "description": "Reason account was closed",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "The name on the account. Usually this is the account holder name, but not always.",
      "children": []
    },
    {
      "name": "currentBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Current balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "holdAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount of the hold (if any) placed on the deposit account",
      "children": []
    },
    {
      "name": "transactionCount",
      "kind": "optional",
      "type": "Integer",
      "description": "Total number of transactions posted to the account",
      "children": []
    },
    {
      "name": "availableBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Available amount of the balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "creditLimit",
      "kind": "optional",
      "type": "Integer",
      "description": "Credit limit of the account customer",
      "children": []
    },
    {
      "name": "overdraftFundingEnabled",
      "kind": "optional",
      "type": "boolean",
      "description": "True if overdraft funding is enabled. Otherwise false.",
      "children": []
    },
    {
      "name": "overdraftFundingThreshold",
      "kind": "optional",
      "type": "integer",
      "description": "The desired ending balance at the end of each day. If the balance is less, funds are pulled from the funding account.",
      "children": []
    },
    {
      "name": "overdraftFundingAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of the account used to fund the account if at the end of the day the balance is less than the overdraft funding threshold.",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.",
      "children": []
    },
    {
      "name": "statementAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Mailing address for paper statement delivery",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of account holder, for instance, street name, house/building number, PO box."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "street3",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State name. We recommend you enter the 2-character state code."
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        }
      ]
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was opened. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastMaintenanceAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account last had maintenance performed on it. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastContactAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time Cross River last made contact with the deposit account holder. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastTransactedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time a transaction last took place on the deposit account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was closed. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rateCard",
      "kind": "optional",
      "type": "string",
      "description": "ID of the account's assigned, pre-configured interest rate profile, in GUID format",
      "children": []
    },
    {
      "name": "balances",
      "kind": "optional",
      "type": "object",
      "description": "There can be multiple account balances listed",
      "children": [
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Number of the account this information describes"
        },
        {
          "name": "isSubAccount",
          "kind": "optional",
          "type": "boolean",
          "description": "If the account balance presented is for a subledger, true. Otherwise false."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency held in the account"
        },
        {
          "name": "currentBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance including all transactions even if they have not yet settled"
        },
        {
          "name": "availableBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance available to the account holder"
        },
        {
          "name": "holdAmount",
          "kind": "optional",
          "type": "integer",
          "description": "Amount of funds that cannot yet be accessed because the funds are on hold"
        },
        {
          "name": "transactionCount",
          "kind": "optional",
          "type": "integer",
          "description": "Number of transactions in the last period"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastTransactedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1ddaaccounts",
  "legacyHash": "r2ZPT6_tgsf2F9Evv9nR3"
}
```
:::


[title] Update due diligence info
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Core.Customer.DueDiligence.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;

## API reference

Updates due diligence information for a personal customer record. The response returns the fields you updated.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customer/{id}/due-diligence",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customer/{id}/due-diligence",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl --location --request PUT 'https://sandbox.crbcos.com/core/v1/cm/customers/53c34cf0-4cd2-4768-937b-b30000dffdca/due-diligence' \\\n--data '{\n  \"employmentStatus\": \"Employed\",\n  \"occupation\": \"Sales\",\n  \"industry\": \"Finance\",\n  \"incomeSource\": \"Salary\",\n  \"incomeState\": \"NY\",\n  \"incomeCountryCode\": \"US\",\n  \"sourceOfFunds\": \"Salary\",\n  \"wealthSource\": \"Salary\",\n  \"annualIncome\": 50000000\n}'"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'PUT',\n  'url': 'https://sandbox.crbcos.com/core/v1/cm/customers/53c34cf0-4cd2-4768-937b-b30000dffdca/due-diligence',\n  'headers': {\n  },\n  body: '{\\r\\n  \"employmentStatus\": \"Employed\",\\r\\n  \"occupation\": \"Sales\",\\r\\n  \"industry\": \"Finance\",\\r\\n  \"incomeSource\": \"Salary\",\\r\\n  \"incomeState\": \"NY\",\\r\\n  \"incomeCountryCode\": \"US\",\\r\\n  \"sourceOfFunds\": \"Salary\",\\r\\n  \"wealthSource\": \"Salary\",\\r\\n  \"annualIncome\": 50000000\\r\\n}'\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"employmentStatus\\\": \\\"Employed\\\",\\r\\n  \\\"occupation\\\": \\\"Sales\\\",\\r\\n  \\\"industry\\\": \\\"Finance\\\",\\r\\n  \\\"incomeSource\\\": \\\"Salary\\\",\\r\\n  \\\"incomeState\\\": \\\"NY\\\",\\r\\n  \\\"incomeCountryCode\\\": \\\"US\\\",\\r\\n  \\\"sourceOfFunds\\\": \\\"Salary\\\",\\r\\n  \\\"wealthSource\\\": \\\"Salary\\\",\\r\\n  \\\"annualIncome\\\": 50000000\\r\\n}\"\nheaders = {}\nconn.request(\"PUT\", \"/core/v1/cm/customers/53c34cf0-4cd2-4768-937b-b30000dffdca/due-diligence\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/53c34cf0-4cd2-4768-937b-b30000dffdca/due-diligence\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n  \\\"employmentStatus\\\": \\\"Employed\\\",\\r\\n  \\\"occupation\\\": \\\"Sales\\\",\\r\\n  \\\"industry\\\": \\\"Finance\\\",\\r\\n  \\\"incomeSource\\\": \\\"Salary\\\",\\r\\n  \\\"incomeState\\\": \\\"NY\\\",\\r\\n  \\\"incomeCountryCode\\\": \\\"US\\\",\\r\\n  \\\"sourceOfFunds\\\": \\\"Salary\\\",\\r\\n  \\\"wealthSource\\\": \\\"Salary\\\",\\r\\n  \\\"annualIncome\\\": 50000000\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/53c34cf0-4cd2-4768-937b-b30000dffdca/due-diligence\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"employmentStatus\": \"Employed\",`+\"\n\"+`\n  \"occupation\": \"Sales\",`+\"\n\"+`\n  \"industry\": \"Finance\",`+\"\n\"+`\n  \"incomeSource\": \"Salary\",`+\"\n\"+`\n  \"incomeState\": \"NY\",`+\"\n\"+`\n  \"incomeCountryCode\": \"US\",`+\"\n\"+`\n  \"sourceOfFunds\": \"Salary\",`+\"\n\"+`\n  \"wealthSource\": \"Salary\",`+\"\n\"+`\n  \"annualIncome\": 50000000`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "curl-example"
  },
  "results": {
    "languages": [
      {
        "id": "200",
        "language": "200",
        "code": "{\n    \"employmentStatus\": \"Employed\",\n    \"occupation\": \"Sales\",\n    \"industry\": \"Finance\",\n    \"incomeSource\": \"Salary\",\n    \"incomeState\": \"NY\",\n    \"incomeCountryCode\": \"US\",\n    \"sourceOfFunds\": \"Salary\",\n    \"wealthSource\": \"Salary\",\n    \"annualIncome\": 50000000\n}"
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2250,\n            \"message\": \"Business Customers cannot supply personal due diligence information\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "200"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "type": "string",
        "kind": "required",
        "description": "The unique ID assigned to the customer when the customer record is created. The ID is in GUID format.",
        "": "The unique ID assigned to the customer when the customer record is created. The ID is in GUID format."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "employmentStatus",
        "kind": "optional",
        "type": "string",
        "description": "How and if the customer is employed:\n- Employed\n- SelfEmployed\n- Retired\n- Unemployed\n- Student"
      },
      {
        "name": "occupation",
        "kind": "optional",
        "type": "string",
        "description": "Possible occupation types:\n- Executive\n- Sales\n- Consulting\n- Government\n- Healthcare\n- FinanceAccounting\n- Technology\n- ScienceEngineering\n- FoodServices\n- LegalServices\n- Manufacturing\n- Other"
      },
      {
        "name": "occupationDescription",
        "kind": "optional",
        "type": "string",
        "description": "Any further details needed about the customer's occupation. 255 characters maximum."
      },
      {
        "name": "industry",
        "kind": "optional",
        "type": "string",
        "description": "Possible industries:\n- Agriculture\n- Mining\n- Utilities\n- Construction\n- Manufacturing\n- ChemicalManufacturing\n- MerchantWholesale\n- Automotive\n- RetailFurnishing\n- RetailElectronics\n- RetailHome\n- RetailFood\n- HealthStores\n- Gasoline\n- RetailClothing\n- RetailSporting\n- RetailNonStore\n- Transportation\n- Publishing\n- Finance\n- RealEstate\n- RentalServices\n- ProfessionalNonLegal\n- Accounting\n- Travel\n- EducationalMedical\n- PerformingArts\n- RecreationGambling\n- FoodService\n- Maintenance\n- Laundry\n- ReligiousCharity\n- PublicAdministration"
      },
      {
        "name": "incomeSource",
        "kind": "optional",
        "type": "string",
        "description": "Possible income sources:\n- Salary\n- SelfEmployed\n- Inheritance\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- FamilySupport"
      },
      {
        "name": "incomeState",
        "kind": "optional",
        "type": "string",
        "description": "State where customer earns income. Use the 2-letter code."
      },
      {
        "name": "incomeCountryCode",
        "kind": "optional",
        "type": "string",
        "description": "2-letter code of the country where the customer earns income"
      },
      {
        "name": "employer",
        "kind": "optional",
        "type": "string",
        "description": "Name of customer's employer"
      },
      {
        "name": "employerState",
        "kind": "optional",
        "type": "string",
        "description": "State where customer employer is based.  Use the 2-letter code."
      },
      {
        "name": "employerCountryCode",
        "kind": "optional",
        "type": "string",
        "description": "2-letter ISO code of the country where the customer's employer is based"
      },
      {
        "name": "sourceOfFunds",
        "kind": "optional",
        "type": "string",
        "description": "Customer funds the account from one of these sources:\n- SelfEmployed\n- GeneralEmployee\n- SeniorExecutive\n- Retired\n- Homemaker\n- InheritanceGift\n- Investment\n- Salary\n- BusinessOwner\n- Alimony\n- Retirement\n- Lottery\n- Annuity\n- TrustIncome\n- RealEstate\n- GovernmentBenefits\n- LegalSettlement"
      },
      {
        "name": "wealthSource",
        "kind": "optional",
        "type": "string",
        "description": "Source of customer wealth:\n- Salary\n- SelfEmployed\n- Inheritance\n- FamilySupport\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- BusinessSale\n- Other"
      },
      {
        "name": "wealthSourceDescription",
        "kind": "optional",
        "type": "string",
        "description": "Further details about the customer's source of wealth. 255 characters maximum."
      },
      {
        "name": "annualIncome",
        "kind": "optional",
        "type": "integer",
        "description": "Customer annual income. For example, 100 US dollars appears as 10000.",
        "": "Customer annual income. For example, 100 US dollars appears as 10000."
      }
    ]
  },
  "response": [
    {
      "name": "employmentStatus",
      "kind": "optional",
      "type": "string",
      "description": "How and if the customer is employed:\n- Employed\n- SelfEmployed\n- Retired\n- Unemployed\n- Student"
    },
    {
      "name": "occupation",
      "kind": "optional",
      "type": "string",
      "description": "Possible occupation types:\n- Executive\n- Sales\n- Consulting\n- Government\n- Healthcare\n- FinanceAccounting\n- Technology\n- ScienceEngineering\n- FoodServices\n- LegalServices\n- Manufacturing\n- Other"
    },
    {
      "name": "occupationDescription",
      "kind": "optional",
      "type": "string",
      "description": "Any further details needed about the customer's occupation"
    },
    {
      "name": "industry",
      "kind": "optional",
      "type": "string",
      "description": "Possible industries:\n- Agriculture\n- Mining\n- Utilities\n- Construction\n- Manufacturing\n- ChemicalManufacturing\n- MerchantWholesale\n- Automotive\n- RetailFurnishing\n- RetailElectronics\n- RetailHome\n- RetailFood\n- HealthStores\n- Gasoline\n- RetailClothing\n- RetailSporting\n- RetailNonStore\n- Transportation\n- Publishing\n- Finance\n- RealEstate\n- RentalServices\n- ProfessionalNonLegal\n- Accounting\n- Travel\n- EducationalMedical\n- PerformingArts\n- RecreationGambling\n- FoodService\n- Maintenance\n- Laundry\n- ReligiousCharity\n- PublicAdministration"
    },
    {
      "name": "incomeSource",
      "kind": "optional",
      "type": "string",
      "description": "Possible income sources:\n- Salary\n- SelfEmployed\n- Inheritance\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- FamilySupport"
    },
    {
      "name": "incomeState",
      "kind": "optional",
      "type": "string",
      "description": "State where customer earns income. Use the 2-letter code."
    },
    {
      "name": "incomeCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "2-letter code of the country where the customer earns income"
    },
    {
      "name": "employer",
      "kind": "optional",
      "type": "string",
      "description": "Name of customer's employer"
    },
    {
      "name": "employerState",
      "kind": "optional",
      "type": "string",
      "description": "State where customer employer is based"
    },
    {
      "name": "employerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "2-letter ISO code of the country where the customer's employer is based"
    },
    {
      "name": "sourceOfFunds",
      "kind": "optional",
      "type": "string",
      "description": "Customer funds the account from one of these sources:\n- SelfEmployed\n- GeneralEmployee\n- SeniorExecutive\n- Retired\n- Homemaker\n- InheritanceGift\n- Investment\n- Salary\n- BusinessOwner\n- Alimony\n- Retirement\n- Lottery\n- Annuity\n- TrustIncome\n- RealEstate\n- GovernmentBenefits\n- LegalSettlement"
    },
    {
      "name": "wealthSource",
      "kind": "optional",
      "type": "string",
      "description": "Source of customer wealth:\n- Salary\n- SelfEmployed\n- Inheritance\n- FamilySupport\n- Investments\n- Retirement\n- RentalIncome\n- GovernmentBenefits\n- BusinessSale\n- Other"
    },
    {
      "name": "wealthSourceDescription",
      "kind": "optional",
      "type": "string",
      "description": "Further details about the customer's source of wealth"
    },
    {
      "name": "annualIncome",
      "kind": "optional",
      "type": "integer",
      "description": "Customer annual income in integral cents. For example, 100 US dollars appears as 10000."
    }
  ],
  "hasTryItOut": false,
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomeriddue-diligence",
  "legacyHash": "Qrd2viS6aC-Cn8BPrl9mi"
}
```
:::


[title] Webhook events: Accounts
[path] Accounts/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific [webhooks](docId\:qF6bTOPBPNcpLPp9SAtWI) which have a specific [event format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents common Accounts and Subledger webhook events that are described in detail below.

| Event name                                                                     | Description                                                 | Related endpoints                                          |
| ------------------------------------------------------------------------------ | ----------------------------------------------------------- | ---------------------------------------------------------- |
| [Core.Account.Opened](docId\:eAs8aFqW7M97baeZUC8Sr)                            | A new account was opened                                    | [Open account](docId\:abKDIZOKHXLSswzwrbBJ1)               |
| [Core.SubAccount.Opened](docId\:eAs8aFqW7M97baeZUC8Sr)                         | Subledger (subaccount) was opened                           | [Create subledger](docId\:K40F8Ih5SnvtbAbcEJ1MR)           |
| [Core.SubAccount.Title.Changed](docId\:eAs8aFqW7M97baeZUC8Sr)                  | Title on subledger (subaccount) changed                     | [Change subledger title](docId\:vF6EET959sod8TW1orGD8)     |
| [Core.SubAccount.Customer.Changed](docId\:eAs8aFqW7M97baeZUC8Sr)               | Customer related to (associated with the subledger changed  | [Change subledger customer](docId\:wfjZEWfzQXnkXCWxsVcm5)  |
| [Core.SubAccount.Closed](docId\:eAs8aFqW7M97baeZUC8Sr)                         | Subledger (subaccount) was closed                           | [Close subledger](docId\:KKcIiiesDAtwh3dOzrMPW)            |
| [Core.Restriction.Placed](docId\:eAs8aFqW7M97baeZUC8Sr)                        | Restriction was placed on the account                       | [Restrict account](docId\:EIckX6Djcuo3cryRIH8mp)           |
| [Core.Restriction Removed](docId\:eAs8aFqW7M97baeZUC8Sr)                       | Restriction was removed for the account                     | [Remove restriction](docId\:qXDRgzjuPEfeUXz6oKFoB)         |
| [Core.TimeDeposit.Withdrawn](docId\:eAs8aFqW7M97baeZUC8Sr)                     | Funds in a CD (time deposite) account were withdrawn        | [Early funds withdrawal](docId\:bHeqF948uoL69C872O299)     |
| [Core.Transaction.Completed (Interest Payments)](docId\:eAs8aFqW7M97baeZUC8Sr) | Transaction completed successfully for interest payments    | [Payment transactions](docId\:luDEbxnwU8p7Knb_bDM6I)       |
| [Core.Activity.Posted (Internal Transfer)](docId\:eAs8aFqW7M97baeZUC8Sr)       | Activity was posted to the account for an internal transfer | [Payment transactions](docId\:luDEbxnwU8p7Knb_bDM6I)       |

## Event examples

### Core.Account.Opened

:::CodeblockTabs
Sample Event

```curl
{
  "id": "259cdbca-6a89-4af8-a50e-ada3010fb13f",
  "eventName": "Core.Account.Opened",
  "status": "Pending",
  "partnerId": "e6c3824a-377f-44d5-a2f6-a9a600c9b37e",
  "createdAt": "2021-01-26T09:48:10.1011462-05:00",
  "resources": [
    "core/v1/dda/accounts/2235223803"
  ],
  "details": []
}
```
:::

### Core.SubAccount.Opened

:::CodeblockTabs
Sample Event

```curl
{
  "id": "7dffc503-e24b-4fdd-96c3-b2e20129aa6d",
  "eventName": "Core.SubAccount.Opened",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T14:03:46.053+00:00",
  "resources": [
    "core/v1/dda/subaccounts/327631054035"
  ],
  "details": [
    {
      "subAccountNumber": "327631054035",
      "masterAccountNumber": "2254575653",
      "accountType": "Deposit",
      "status": "Active",
      "title": "Robert Jordan's Sub",
      "clientIdentifier": null
    }
  ]
}
```
:::

### Core.SubAccount.Title.Changed

:::CodeblockTabs
Sample event

```json
{
  "id": "9122be8b-cc86-455e-a106-b4820071f7ca",
  "eventName": "Core.SubAccount.Title.Changed",
  "status": "Pending",
  "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
  "createdAt": "2026-07-09T02:54:56.67-04:00",
  "resources": [
    "core/v1/dda/subaccounts/395388745774"
  ],
  "details": [
    {
      "subAccountNumber": "395388745774",
      "masterAccountNumber": "2418494833",
      "titleBefore": "Devra business checking test",
      "titleAfter": "Devra business checking test"
    }
  ]
}
```
:::

### Core.SubAccount.Customer.Changed

:::CodeblockTabs
Sample event

```json
{
    "id": "245baf45-bc49-4aec-bc86-b48c006b85e3",
    "eventName": "Core.SubAccount.Customer.Changed",
    "status": "Pending",
    "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
    "createdAt": "2026-07-19T02:31:28.757-04:00",
    "resources": [
        "core/v1/dda/subaccounts/395388745774"
    ],
    "details": [
        {
            "subAccountNumber": "395388745774",
            "masterAccountNumber": "2418494833",
            "customerIdBefore": "02ac22aa-0ab0-405e-9c41-b3cb00b85866",
            "customerIdAfter": "53c34cf0-4cd2-4768-937b-b30000dffdca"
        }
    ]
}
```
:::

### Core.SubAccount.Closed

:::CodeblockTabs
Sample Event

```curl
{
  "id": "d08ebe9e-c024-44bb-ba3b-b2e2012a371f",
  "eventName": "Core.SubAccount.Closed",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T14:05:46.117+00:00",
  "resources": [
    "core/v1/dda/subaccounts/327631054035"
  ],
  "details": [
    {
      "subAccountNumber": "327631054035",
      "masterAccountNumber": "2254575653",
      "accountType": "Deposit",
      "status": "Closed",
      "title": "Robert Jordan's Sub",
      "clientIdentifier": null
    }
  ]
}
```
:::

### Core.Restriction.Placed

:::CodeblockTabs
Sample Event

```curl
{
  "id": "9ef09f23-f14d-4634-b1b5-b2e201288d95",
  "eventName": "Core.Restriction.Placed",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T13:59:42.99+00:00",
  "resources": [
    "core/v1/dda/accounts/2161759366/restrictions/906ed893-bb6f-4a84-a3ef-b2e2012870b7"
  ],
  "details": [
    {
      "restrictionId": "906ed893-bb6f-4a84-a3ef-b2e2012870b7",
      "subAccountNumber": "2161759366",
      "masterAccountNumber": "2161759366",
      "accountType": "Deposit",
      "status": "Active",
      "amountThreshold": "",
      "currency": "usd",
      "rail": "",
      "transactionCode": null,
      "transactionType": ""
    }
  ]
}
```
:::

### Core.Restriction.Removed

:::CodeblockTabs
Sample Event

```curl
{
  "id": "2c693879-6ce4-48eb-9def-b2e20128d3f1",
  "eventName": "Core.Restriction.Removed",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T14:00:43.027+00:00",
  "resources": [
    "core/v1/dda/accounts/2161759366/restrictions/906ed893-bb6f-4a84-a3ef-b2e2012870b7"
  ],
  "details": [
    {
      "restrictionId": "906ed893-bb6f-4a84-a3ef-b2e2012870b7",
      "subAccountNumber": "2161759366",
      "masterAccountNumber": "2161759366",
      "accountType": "Deposit",
      "status": "Inactive",
      "amountThreshold": "",
      "currency": "usd",
      "rail": "",
      "transactionCode": null,
      "transactionType": ""
    }
  ]
}
```
:::

### Core.TimeDeposit.Withdrawn

:::CodeblockTabs
Sample Event

```curl
{
  "id": "90cef2a8-f3e1-41ff-9394-afbf00f8a406",
  "eventName": "Core.TimeDeposit.Withdrawn",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2023-03-08T10:05:16.423-05:00",
  "resources": [
    "core/v1/dda/accounts/2434508988/time-deposit"
  ],
  "details": [
    {
      "masterAccountNumber": "2434508988",
      "status": "EarlyWithdrawal",
      "depositAmount": "100023362",
      "maturityDate": "3/14/2023",
      "rolloverDate": "3/19/2023",
      "currentRate": "0.0"
    }
  ]
}
```
:::

### Core.Transaction.Completed (Interest Payment)

:::CodeblockTabs
Sample Event

```curl
{
  "id": "6d7da4d8-9ee6-46f9-a218-b22700f56b58",
  "eventName": "Core.Transaction.Completed",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2024-11-13T09:53:32.663-05:00",
  "resources": [
    "core/v1/transactions/a89e9bf2-c3fb-4e28-a20e-b22700ef4ed2"
  ],
  "details": [
    {
      "transactionId": "a89e9bf2-c3fb-4e28-a20e-b22700ef4ed2",
      "transactionCode": "Interest",
      "debitSubAccount": "40050060011",
      "debitMasterAccount": "40050060011",
      "debitResult": "OK",
      "creditSubAccount": "2151546989",
      "creditMasterAccount": "2151546989",
      "creditResult": "OK",
      "rail": "Internal",
      "railId": "3253942f-97b7-4e44-a60b-b22700ef4ed2",
      "amount": "337",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "Interest Payment",
      "proposedAt": "11/13/2024 09:53:16",
      "executedAt": "11/13/2024 09:53:16",
      "schedule": ""
    }
  ]
}
```
:::

### Core.Activity.Posted (Internal Transfer)

:::CodeblockTabs
Sample Event

```curl
{
  "id": "76e7b8a6-bbee-46f5-852a-b1ca00dc96bb",
  "eventName": "Core.Activity.Posted",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-12T09:23:08.35-04:00",
  "resources": [
    "core/v1/dda/accounts/2151546989/activity/d0c3c26d-3816-4c89-850b-b1ca00dc89f7",
    "core/v1/dda/accounts/2207975570/activity/811d94d0-d1b3-4feb-9bdd-b1ca00dc89f7"
  ],
  "details": [
    {
      "activityId": "d0c3c26d-3816-4c89-850b-b1ca00dc89f7",
      "transactionId": "27abd733-7d34-4823-90cc-b1ca00dc89f7",
      "transactionType": "Debit",
      "transactionCode": "Account Transfer",
      "subAccount": "2151546989",
      "masterAccount": "2151546989",
      "rail": "Internal",
      "railId": "0",
      "amount": "213",
      "currency": "usd",
      "postingDate": "8/12/2024",
      "description": "transfer",
      "createdAt": "08/12/2024 09:22:57",
      "executedAt": "08/12/2024 09:22:57",
      "schedule": ""
    },
    {
      "activityId": "811d94d0-d1b3-4feb-9bdd-b1ca00dc89f7",
      "transactionId": "27abd733-7d34-4823-90cc-b1ca00dc89f7",
      "transactionType": "Credit",
      "transactionCode": "Account Transfer",
      "subAccount": "2207975570",
      "masterAccount": "2207975570",
      "rail": "Internal",
      "railId": "0",
      "amount": "213",
      "currency": "usd",
      "postingDate": "8/12/2024",
      "description": "transfer",
      "createdAt": "08/12/2024 09:22:57",
      "executedAt": "08/12/2024 09:22:57",
      "schedule": ""
    }
  ]
}
```
:::


[title] Restrict account
[path] Accounts/Account mgmt APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Core.Restriction.Placed](docId\:eAs8aFqW7M97baeZUC8Sr)

## API reference

Restricts an account from defined transactions.
A restriction is a flexible way to prevent transactions that contain certain criteria from posting to an account. This is useful in scenarios such as freezing an account that has been compromised.

To restrict all subaccounts of a master account, set `appliesTo` to **SubAccounts** and *do not* supply a value for `subAccountNumber`.

To restrict a master account together with all its subaccounts, set `appliesTo` to **All** and *do not* supply a value for `subAccountNumber`.&#x20;

:::hint{type="info"}
**Payments that fail to post to a Cross River account and are returned will not be visible to you.**
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: v1/dda/accounts/{accountNumber}/restrictions",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/restrictions",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "eajf8KuLYBAUE23VI6_Pj",
        "language": "curl",
        "code": "curl --location --globoff 'https://sandbox.crbcos.com/core/v1/dda/accounts/2394312736/restrictions' \\\n--data '{\n  \"transactionCode\": \"Incoming ACH\",\n  \"transactionType\": \"Debit\",\n  \"appliesTo\": \"Account\",\n  \"reason\": \"Account Freeze\"\n}'",
        "customLabel": ""
      },
      {
        "id": "cY8A59lipKdu7Tz5OnRn5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/{accountNumber}/restrictions?accountNumber=2394312736',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"transactionCode\\\": \\\"Incoming ACH\\\",\\r\\n  \\\"transactionType\\\": \\\"Debit\\\",\\r\\n  \\\"appliesTo\\\": \\\"Account\\\",\\r\\n  \\\"reason\\\": \\\"Account Freeze\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "GZfC4RHGEVRbkzsQLFwdV",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"transactionCode\\\": \\\"Incoming ACH\\\",\\r\\n  \\\"transactionType\\\": \\\"Debit\\\",\\r\\n  \\\"appliesTo\\\": \\\"Account\\\",\\r\\n  \\\"reason\\\": \\\"Account Freeze\\\"\\r\\n}\"\nheaders = {}\nconn.request(\"POST\", \"/core/v1/dda/accounts/{accountNumber}/restrictions?accountNumber=2394312736\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "FZaVYcLD2VsA0ushPrkfl",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/restrictions?accountNumber=2394312736\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"transactionCode\\\": \\\"Incoming ACH\\\",\\r\\n  \\\"transactionType\\\": \\\"Debit\\\",\\r\\n  \\\"appliesTo\\\": \\\"Account\\\",\\r\\n  \\\"reason\\\": \\\"Account Freeze\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "JtFd5c4ocb-_vXDQoTk0K",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/restrictions?accountNumber=2394312736\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"transactionCode\": \"Incoming ACH\",`+\"\n\"+`\n  \"transactionType\": \"Debit\",`+\"\n\"+`\n  \"appliesTo\": \"Account\",`+\"\n\"+`\n  \"reason\": \"Account Freeze\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "eajf8KuLYBAUE23VI6_Pj"
  },
  "results": {
    "languages": [
      {
        "id": "92J7Q9aihp7T6Q1Bc5jTC",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"51d73b46-ef2a-4a52-b174-b32f00949088\",\n    \"masterAccountNumber\": \"2394312736\",\n    \"subAccountNumber\": \"2394312736\",\n    \"restrictionType\": \"Internal\",\n    \"appliesTo\": \"Account\",\n    \"status\": \"Active\",\n    \"transactionType\": \"Debit\",\n    \"transactionCode\": \"Incoming ACH\",\n    \"reason\": \"Account Freeze\",\n    \"createdAt\": \"2025-08-04T05:00:54.4238173-04:00\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-08-04T05:00:54.4238173-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "92J7Q9aihp7T6Q1Bc5jTC"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the customer's master account to be restricted, even if you are restricting a subaccount",
        "": "Number of the customer's master account to be restricted, even if you are restricting a subaccount"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "subAccountNumber",
        "kind": "optional",
        "type": "string",
        "description": "If restricting a specific subaccount, that account number",
        "": "If restricting a specific subaccount, that account number"
      },
      {
        "name": "appliesTo",
        "kind": "required",
        "type": "string",
        "description": "Depending on the restriction you apply:\n- All (applies to both a master account and the subaccounts under it)\n- Account\n- SubAccounts",
        "": "Depending on the restriction you apply:\n- All (applies to both a master account and the subaccounts under it)\n- Account\n- SubAccounts"
      },
      {
        "name": "rail",
        "kind": "optional",
        "type": "string",
        "description": "Indicates if the restriction should apply to a specific rail. The most commonly used values are 'Ach', 'Wires', and 'Rtp'.\n- Ach\n- Wires\n- CreditCard\n- DebitCard\n- StoredValue\n- Checks\n- XPay\n- Rtp\n- Crypto\n- CardManagement\n- International\n- CardPayments\n- Internal",
        "": "Indicates if the restriction should apply to a specific rail. The most commonly used values are 'Ach', 'Wires', and 'Rtp'.\n- Ach\n- Wires\n- CreditCard\n- DebitCard\n- StoredValue\n- Checks\n- XPay\n- Rtp\n- Crypto\n- CardManagement\n- International\n- CardPayments\n- Internal"
      },
      {
        "name": "transactionType",
        "kind": "optional",
        "type": "string",
        "description": "Type of transaction to be restricted:\n- Debit\n- Credit",
        "": "Type of transaction to be restricted:\n- Debit\n- Credit"
      },
      {
        "name": "otherAccountType",
        "kind": "optional",
        "type": "string",
        "description": "Do not use.",
        "": "Do not use."
      },
      {
        "name": "amountThreshold",
        "kind": "optional",
        "type": "integer",
        "description": "Specifies an amount threshold. The restriction applies to any transaction amount that is equal to or greater than the amount entered.\nThis value is in integral cents, meaning the number includes cents, with no decimal point. For example, 100 USD appears as 10000.",
        "": "Specifies an amount threshold. The restriction applies to any transaction amount that is equal to or greater than the amount entered.\nThis value is in integral cents, meaning the number includes cents, with no decimal point. For example, 100 USD appears as 10000."
      },
      {
        "name": "currency",
        "kind": "optional",
        "type": "string",
        "description": "Currency used in the transaction",
        "": "Currency used in the transaction"
      },
      {
        "name": "transactionCode",
        "kind": "optional",
        "type": "string",
        "description": "Indicates a specific transaction code, such as ‘Incoming ACH’",
        "": "Indicates a specific transaction code, such as ‘Incoming ACH’"
      },
      {
        "name": "effectiveStartTimeHour",
        "kind": "optional",
        "type": "integer",
        "description": "Indicates the approximate start hour of the restriction. Use a 24-hour clock.",
        "": "Indicates the approximate start hour of the restriction. Use a 24-hour clock."
      },
      {
        "name": "effectiveStartTimeMinute",
        "kind": "optional",
        "type": "integer",
        "description": "Indicates the approximate start minute of the restriction",
        "": "Indicates the approximate start minute of the restriction"
      },
      {
        "name": "effectiveEndTimeHour",
        "kind": "optional",
        "type": "integer",
        "description": "Indicates the approximate end hour of the restriction. Use a 24-hour clock.",
        "": "Indicates the approximate end hour of the restriction. Use a 24-hour clock."
      },
      {
        "name": "effectiveEndTimeMinute",
        "kind": "optional",
        "type": "integer",
        "description": "Indicates the approximate end minute of the restriction",
        "": "Indicates the approximate end minute of the restriction"
      },
      {
        "name": "reason",
        "kind": "required",
        "type": "string",
        "description": "Justification for applying the restriction",
        "": "Justification for applying the restriction"
      },
      {
        "name": "notes",
        "kind": "optional",
        "type": "string",
        "description": "Any other information about the restriction. Generally not used.",
        "": "Any other information about the restriction. Generally not used."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID ID identifying this restriction"
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the customer master account to be restricted, even if the restriction is only on a subaccount or subaccounts",
      "children": []
    },
    {
      "name": "subAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "If restricting a specific subaccount, that account number",
      "children": []
    },
    {
      "name": "restrictionType",
      "kind": "optional",
      "type": "string",
      "description": "Who applied the restriction:\n- Partner\n- Internal",
      "children": []
    },
    {
      "name": "appliesTo",
      "kind": "optional",
      "type": "string",
      "description": "Depending on the restriction you apply:\n- All\n- Account\n- SubAccounts",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the restriction:\n- Inactive\n- Active",
      "children": []
    },
    {
      "name": "rail",
      "kind": "optional",
      "type": "string",
      "description": "Type of restriction applied:\n- Ach\n- Wires\n- CreditCard\n- DebitCard\n- StoredValue\n- Checks\n- XPay\n- Rtp\n- Crypto\n- CardManagement\n- International\n- CardPayments\n- Internal",
      "children": []
    },
    {
      "name": "transactionType",
      "kind": "optional",
      "type": "string",
      "description": "Type of transaction restricted:\n- Debit\n- Credit",
      "children": []
    },
    {
      "name": "otherAccountType",
      "kind": "optional",
      "type": "string",
      "description": "Not used",
      "children": []
    },
    {
      "name": "transactionCode",
      "kind": "optional",
      "type": "string",
      "description": "Indicates a specific transaction code, such as ‘Incoming ACH’",
      "children": []
    },
    {
      "name": "amountThreshold",
      "kind": "optional",
      "type": "integer",
      "description": "Specifies an amount threshold. The restriction applies to any transaction amount that is equal to or greater than the amount entered.\nThis value is in integral cents, meaning the number includes cents, with no decimal point. For example, 100 USD appears as 10000.",
      "children": []
    },
    {
      "name": "effectiveStartTimeHour",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates the approximate start hour of the restriction. Use a 24-hour clock.",
      "children": []
    },
    {
      "name": "effectiveStartTimeMinute",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates the approximate start minute of the restriction",
      "children": []
    },
    {
      "name": "effectiveEndTimeHour",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates the approximate end hour of the restriction. Use a 24-hour clock.",
      "children": []
    },
    {
      "name": "effectiveEndTimeMinute",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates the approximate end minute of the restriction",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "reason",
      "kind": "optional",
      "type": "string",
      "description": "Justification for applying the restriction",
      "children": []
    },
    {
      "name": "notes",
      "kind": "optional",
      "type": "string",
      "description": "Any other information about the restriction. Generally not used.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Restriction created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "removedAt",
      "kind": "optional",
      "type": "string",
      "description": "Restriction removed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-v1ddaaccountsaccountnumberrestrictions",
  "legacyHash": "4EJX_o4m9uphRTWozRkwe"
}
```
:::


[title] Add beneficial owner
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:&#x20;

- [Core.Customer.BeneficialOwner.Added](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;

## API reference

:::hint{type="info"}
If you are a Cross River partner using  [partner-managed issuing](docId\:n-sV1g5OiDbnWae2xWnSj) to provide commercial card services, use this endpoint to associate each individual cardholder's customer record with their employer's business customer record.&#x20;

This association is required for commercial card programs and is separate from identifying or adding beneficial owners.
:::

A beneficial owner is a person who owns 25% or more of a business. For regulatory reasons, you need to create a Beneficial Owner resource in a *Business customer record* for each beneficial owner of that business. Each beneficial owner will have a personal customer record that includes a unique customer ID. The `ownerCustomerId` attribute in the call described here references the Personal customer ID for each beneficial owner. You usually add beneficial owner resources to the business customer record immediately after onboarding a business.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{customerId}/beneficial-owners",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/beneficial-owners",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "b2QWb9wn1DTrmAGdjZkxC",
        "language": "curl",
        "code": "curl --location --globoff 'https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/beneficial-owners?customerId=' \\\n--data '{\n    \"ownerCustomerId\": \"\",\n    \"ownerTitle\": \"CEO\",\n    \"ownershipPercentage\": \"26\"\n}'",
        "customLabel": ""
      },
      {
        "id": "ZpBCOCvuCGz5KITvrNnzR",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/{customerId}/beneficial-owners?customerId=',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n    \\\"ownerCustomerId\\\": \\\"\\\",\\r\\n    \\\"ownerTitle\\\": \\\"CEO\\\",\\r\\n    \\\"ownershipPercentage\\\": \\\"26\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "Va41mtJBVqpgPtIiLeS_C",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/beneficial-owners?customerId=\"\n\npayload = \"{\\r\\n    \\\"ownerCustomerId\\\": \\\"\\\",\\r\\n    \\\"ownerTitle\\\": \\\"CEO\\\",\\r\\n    \\\"ownershipPercentage\\\": \\\"26\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "GMVW0UWNlhlK2CWJDCLM8",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/beneficial-owners?customerId=\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n    \\\"ownerCustomerId\\\": \\\"\\\",\\r\\n    \\\"ownerTitle\\\": \\\"CEO\\\",\\r\\n    \\\"ownershipPercentage\\\": \\\"26\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "hAV1d17EyU_xo6d7K3v0h",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/beneficial-owners?customerId=\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"ownerCustomerId\": \"\",`+\"\n\"+`\n    \"ownerTitle\": \"CEO\",`+\"\n\"+`\n    \"ownershipPercentage\": \"26\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "b2QWb9wn1DTrmAGdjZkxC"
  },
  "results": {
    "languages": [
      {
        "id": "AtM1q1Y7kG6k2_cQ0iWb6",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"bf3fe246-626e-4960-8e2b-b300008b44e1\",\n    \"customerId\": \"554fa0db-ee28-4671-8d02-b300008abb4a\",\n    \"ownerCustomerId\": \"bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887\",\n    \"status\": \"Active\",\n    \"ownerTitle\": \"CEO\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"createdAt\": \"2025-06-18T04:27:03.7887551-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T04:27:03.7887551-04:00\",\n    \"ownershipPercentage\": 26\n}"
      },
      {
        "id": "hHCNoqPXig0PAtEobVm_6",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2214,\n            \"message\": \"Entity customer must be a business\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "AtM1q1Y7kG6k2_cQ0iWb6"
  },
  "request": {
    "pathParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The customer ID of the customer record to update",
        "": "The customer ID of the customer record to update"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "ownerCustomerId",
        "kind": "required",
        "type": "string",
        "description": "Beneficial owner Cross River customer ID (provided when the beneficial owner was onboarded to COS)",
        "": "Beneficial owner Cross River customer ID (provided when the beneficial owner was onboarded to COS)"
      },
      {
        "name": "ownerTitle",
        "kind": "required",
        "type": "string",
        "description": "Title or role of the beneficial owner",
        "": "required"
      },
      {
        "name": "ownershipPercentage",
        "kind": "optional",
        "type": "number",
        "description": "Percentage of the business this beneficial owner controls. Enter the percentage in real numbers. For example, if you enter 0.20 it means 0.20%. If you enter 20, it means 20%.",
        "": "Percentage of the business this beneficial owner controls. Enter the percentage in real numbers. For example, if you enter 0.20 it means 0.20%. If you enter 20, it means 20%."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "COS ID for the record, in GUID format"
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The customerId of the customer record being updated",
      "children": []
    },
    {
      "name": "ownerCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Beneficial owner Cross River customer ID (provided when the beneficial owner was onboarded to COS)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "boolean",
      "description": "Status of the customer record - can be 'Inactive' or 'Active'",
      "children": []
    },
    {
      "name": "ownerTitle",
      "kind": "optional",
      "type": "string",
      "description": "Title or role of the beneficial owner",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "ownershipPercentage",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the business this beneficial owner controls. Enter the percentage in real numbers. For example, if you enter 0.20 it means 0.20%. If you enter 20, it means 20%.",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomerscustomeridbeneficial-own",
  "legacyHash": "jsA4N-mBEpymRcWiGu1lK"
}
```
:::


[title] Suspend card
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Suspended](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

Suspend a card

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/suspend",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/suspend",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff --request POST 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/suspend?id=1c243431-23b8-407c-afa4-b30000abbe0d' \\\n--header 'Idempotency-key: a5b1b129-421e-441b-9661-ec1c0396965e' \\\n--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTM1Mjg4MSwiaWF0IjoxNzUxMzUyODgxLCJleHAiOjE3NTEzNTY0ODEsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjU0OUNBOTA3QzhGNjBDMjZDNkVDQjRBNkFENzM3NDVFIn0.owCcroz99S3DaoFFC4oPbLtZ9R7KMS-zJMSPEy-lpL7g3yRuQYApaKNqO5gx4PgNIKHB727D5Bz4PhHiqPZVorvt1ztlWMgi3CyXqOEpw_RIivj4upont1yWY_FfhqaSmYMzeOBUCehLsen4GNUkkxj9EcI62f0baaT1wVH7rm4ZVhLAD19SkY3wbC5-mf6sl6ZqM2wNg2WXdQ6lYrfw4AcbRFfQTXLwQpRmhorYjR9E9dLGstzI5ChHH3nzYPUk0UQpVugWs6Jj6uUTR_LRTciaNDBkkGAgzPVZ7PcOE2yr--Y-kEBqbpSrAFVsdMg8bbTWr2J6FrYxAm1pQy_bkg' \\\n--data ''{}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}/suspend?id=1c243431-23b8-407c-afa4-b30000abbe0d',\n  'headers': {\n    'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e',\n    'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTM1Mjg4MSwiaWF0IjoxNzUxMzUyODgxLCJleHAiOjE3NTEzNTY0ODEsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjU0OUNBOTA3QzhGNjBDMjZDNkVDQjRBNkFENzM3NDVFIn0.owCcroz99S3DaoFFC4oPbLtZ9R7KMS-zJMSPEy-lpL7g3yRuQYApaKNqO5gx4PgNIKHB727D5Bz4PhHiqPZVorvt1ztlWMgi3CyXqOEpw_RIivj4upont1yWY_FfhqaSmYMzeOBUCehLsen4GNUkkxj9EcI62f0baaT1wVH7rm4ZVhLAD19SkY3wbC5-mf6sl6ZqM2wNg2WXdQ6lYrfw4AcbRFfQTXLwQpRmhorYjR9E9dLGstzI5ChHH3nzYPUk0UQpVugWs6Jj6uUTR_LRTciaNDBkkGAgzPVZ7PcOE2yr--Y-kEBqbpSrAFVsdMg8bbTWr2J6FrYxAm1pQy_bkg'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/suspend?id=1c243431-23b8-407c-afa4-b30000abbe0d\"\n\npayload = \"\"\nheaders = {\n  'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTM1Mjg4MSwiaWF0IjoxNzUxMzUyODgxLCJleHAiOjE3NTEzNTY0ODEsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjU0OUNBOTA3QzhGNjBDMjZDNkVDQjRBNkFENzM3NDVFIn0.owCcroz99S3DaoFFC4oPbLtZ9R7KMS-zJMSPEy-lpL7g3yRuQYApaKNqO5gx4PgNIKHB727D5Bz4PhHiqPZVorvt1ztlWMgi3CyXqOEpw_RIivj4upont1yWY_FfhqaSmYMzeOBUCehLsen4GNUkkxj9EcI62f0baaT1wVH7rm4ZVhLAD19SkY3wbC5-mf6sl6ZqM2wNg2WXdQ6lYrfw4AcbRFfQTXLwQpRmhorYjR9E9dLGstzI5ChHH3nzYPUk0UQpVugWs6Jj6uUTR_LRTciaNDBkkGAgzPVZ7PcOE2yr--Y-kEBqbpSrAFVsdMg8bbTWr2J6FrYxAm1pQy_bkg'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/suspend?id=1c243431-23b8-407c-afa4-b30000abbe0d\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"a5b1b129-421e-441b-9661-ec1c0396965e\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTM1Mjg4MSwiaWF0IjoxNzUxMzUyODgxLCJleHAiOjE3NTEzNTY0ODEsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjU0OUNBOTA3QzhGNjBDMjZDNkVDQjRBNkFENzM3NDVFIn0.owCcroz99S3DaoFFC4oPbLtZ9R7KMS-zJMSPEy-lpL7g3yRuQYApaKNqO5gx4PgNIKHB727D5Bz4PhHiqPZVorvt1ztlWMgi3CyXqOEpw_RIivj4upont1yWY_FfhqaSmYMzeOBUCehLsen4GNUkkxj9EcI62f0baaT1wVH7rm4ZVhLAD19SkY3wbC5-mf6sl6ZqM2wNg2WXdQ6lYrfw4AcbRFfQTXLwQpRmhorYjR9E9dLGstzI5ChHH3nzYPUk0UQpVugWs6Jj6uUTR_LRTciaNDBkkGAgzPVZ7PcOE2yr--Y-kEBqbpSrAFVsdMg8bbTWr2J6FrYxAm1pQy_bkg\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/suspend?id=1c243431-23b8-407c-afa4-b30000abbe0d\"\n  method := \"POST\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"a5b1b129-421e-441b-9661-ec1c0396965e\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTM1Mjg4MSwiaWF0IjoxNzUxMzUyODgxLCJleHAiOjE3NTEzNTY0ODEsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjU0OUNBOTA3QzhGNjBDMjZDNkVDQjRBNkFENzM3NDVFIn0.owCcroz99S3DaoFFC4oPbLtZ9R7KMS-zJMSPEy-lpL7g3yRuQYApaKNqO5gx4PgNIKHB727D5Bz4PhHiqPZVorvt1ztlWMgi3CyXqOEpw_RIivj4upont1yWY_FfhqaSmYMzeOBUCehLsen4GNUkkxj9EcI62f0baaT1wVH7rm4ZVhLAD19SkY3wbC5-mf6sl6ZqM2wNg2WXdQ6lYrfw4AcbRFfQTXLwQpRmhorYjR9E9dLGstzI5ChHH3nzYPUk0UQpVugWs6Jj6uUTR_LRTciaNDBkkGAgzPVZ7PcOE2yr--Y-kEBqbpSrAFVsdMg8bbTWr2J6FrYxAm1pQy_bkg\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"1c243431-23b8-407c-afa4-b30000abbe0d\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"processorCardId\": \"827277613081398\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Suspended\",\n    \"statusReasonCode\": \"NotSet\",\n    \"processorCardStatus\": \"I\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Daly Khol\",\n    \"panLastFour\": \"4558\",\n    \"previousCardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n    \"isPinSet\": true,\n    \"expirationDate\": \"2028-06-18\",\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"Completed\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"processorCustomerId\": \"X5R364GI9VXUUK24QH1D\",\n    \"createdAt\": \"2025-06-18T06:25:17.697-04:00\",\n    \"suspendedAt\": \"2025-07-01T02:56:19.0296632-04:00\",\n    \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n    \"activatedAt\": \"2025-06-18T06:40:46.287-04:00\",\n    \"lastModifiedAt\": \"2025-07-01T02:56:19.0296632-04:00\"\n}",
        "customLabel": ""
      },
      {
        "id": "VA8oPuVqT8_RnWmtl0WfR",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2011,\n            \"message\": \"Card is closed\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      },
      {
        "name": "notes",
        "kind": "optional",
        "type": "string",
        "description": "For null must write:  {}\nMaximum 60 characters",
        "": "For null must write:  {}\nMaximum 60 characters"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format. See also here.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- FraudBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's Unique ID for the cardholder",
      "children": []
    },
    {
      "name": "cardDesignId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier associated to the card design to use when overriding a program's default card design",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidsuspend",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Close subledger
[path] Accounts/Subledgers APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.SubAccount.Closed](docId\:eAs8aFqW7M97baeZUC8Sr)&#x20;

## API reference

Closes a specific subledger (subaccount).

:::hint{type="info"}
The subaccount's current and available balance must be 0 to be eligible for closing
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/subaccounts/{accountNumber}",
  "method": "DELETE",
  "url": "    https://sandbox.crbcos.com/core/v1/dda/subaccounts/{accountNumber}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "P9idftSfTSKm5GwLRp3lQ",
        "language": "curl",
        "code": "curl --location --request DELETE 'https://sandbox.crbcos.com/core/v1/dda/subaccounts/341748805478' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '\n'",
        "customLabel": ""
      },
      {
        "id": "sjZ6ScuddiYhUaZx4C86K",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'DELETE',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/subaccounts/341748805478',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"\\n\";\n\nreq.setHeader('Content-Length', postData.length);\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "gDB_P0O6T95GP_EHqfwx2",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"\\n\"\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"DELETE\", \"/core/v1/dda/subaccounts/341748805478\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "FXvCnwdEDvWGa2RUa43LJ",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/subaccounts/341748805478\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Delete.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = \"\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "U9BrpgYsCj1siiLdweM6D",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/subaccounts/341748805478\"\n  method := \"DELETE\"\n\n  payload := strings.NewReader(`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "P9idftSfTSKm5GwLRp3lQ"
  },
  "results": {
    "languages": [
      {
        "id": "vjutubmVyYLoLEjt5Wkle",
        "language": "200",
        "code": "{\n    \"accountNumber\": \"341748805478\",\n    \"accountType\": \"Deposit\",\n    \"status\": \"Closed\",\n    \"ledgerType\": \"Passthrough\",\n    \"productType\": \"Checking\",\n    \"title\": \"Jerry Penn\",\n    \"currentBalance\": 0,\n    \"availableBalance\": 0,\n    \"holdAmount\": 0,\n    \"transactionCount\": 0,\n    \"creditLimit\": 0,\n    \"currency\": \"usd\",\n    \"openedAt\": \"2025-09-16T07:18:04.42-04:00\",\n    \"closedAt\": \"2025-12-08T07:02:27.3614282-05:00\",\n    \"masterAccountNumber\": \"2819503463\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"classification\": \"Personal\",\n    \"beneficiary\": {\n        \"firstName\": \"Brandon\",\n        \"lastName\": \"Sanderson\",\n        \"streetAddress1\": \"5 Broadway\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10036\",\n        \"countryCode\": \"US\"\n    },\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastMaintenanceAt\": \"2025-09-16T07:24:23.443-04:00\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"lastModifiedAt\": \"2025-12-08T07:02:27.3614282-05:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "vjutubmVyYLoLEjt5Wkle"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number for the subaccount (subledger) you want to close",
        "": "Account number for the subaccount (subledger) you want to close"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The subledger account number"
    },
    {
      "name": "accountType",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account type:\n- GeneralLedger\n- Deposit\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Subledger account status:\n- Closed\n- Active",
      "children": []
    },
    {
      "name": "ledgerType",
      "kind": "optional",
      "type": "string",
      "description": "Ledger type:\n- Passthrough\n- Direct",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "The name on the account. Usually this is the account holder name, but not always.",
      "children": []
    },
    {
      "name": "currentBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Current balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "availableBalance",
      "kind": "optional",
      "type": "Integer",
      "description": "Available amount of the balance. A negative amount means a debit and a positive amount means a credit.",
      "children": []
    },
    {
      "name": "holdAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount of the hold (if any) placed on the account",
      "children": []
    },
    {
      "name": "transactionCount",
      "kind": "optional",
      "type": "Integer",
      "description": "Total number of transactions posted to the account",
      "children": []
    },
    {
      "name": "creditLimit",
      "kind": "optional",
      "type": "integer",
      "description": "Credit limit of the account customer",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the deposit account was opened. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time that the account was closed.  The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Master account the subledger was opened under",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "Can be one of two types of beneficiaries:\n- Personal\n- Business",
      "children": []
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "Object",
      "description": "Beneficiary profile for this subledger",
      "children": [
        {
          "name": "referenceId",
          "kind": "optional",
          "type": "string",
          "description": "Your organization's reference identifier for the beneficiary of this subaccount"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "The first name of the beneficiary"
        },
        {
          "name": "middleName",
          "kind": "optional",
          "type": "string",
          "description": "The middle name of the beneficiary"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "The last name of the beneficiary"
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "If the beneficiary is a business or organization enter its name. If the beneficiary is an individual enter their full name."
        },
        {
          "name": "streetAddress1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
        },
        {
          "name": "streetAddress2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State name. We recommend you enter the 2-character state code."
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "The beneficiary phone number"
        },
        {
          "name": "emailAddress",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary email address. 255 character limit."
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "General notes about the beneficiary"
        },
        {
          "name": "taxIdType",
          "kind": "optional",
          "type": "string",
          "description": "Tax ID type for the beneficiary:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary tax ID number"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary birthdate in the format YYYY-MM-DD"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date the subledger was formed, in the format YYYY-MM-DD"
        }
      ]
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastMaintenanceAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the account last had maintenance performed on it. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastTransactedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "balances",
      "kind": "optional",
      "type": "object",
      "description": "There can be multiple account balances listed",
      "children": [
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Number of the account this information describes"
        },
        {
          "name": "isSubAccount",
          "kind": "optional",
          "type": "boolean",
          "description": "If the account balance presented is for a subledger, true. Otherwise false."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency held in the account"
        },
        {
          "name": "currentBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance including all transactions even if they have not yet settled"
        },
        {
          "name": "availableBalance",
          "kind": "optional",
          "type": "integer",
          "description": "Balance available to the account holder"
        },
        {
          "name": "holdAmount",
          "kind": "optional",
          "type": "integer",
          "description": "Amount of funds that cannot yet be accessed because the funds are on hold"
        },
        {
          "name": "transactionCount",
          "kind": "optional",
          "type": "integer",
          "description": "Number of transactions in the last period"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastTransactedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time a transaction last took place on the account. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddasubaccountsaccountnumber",
  "legacyHash": "ACf5kZIDXMSIHxQOJw3vm"
}
```
:::


[title] Remove restriction
[path] Accounts/Account mgmt APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Core.Restriction.Removed](docId\:eAs8aFqW7M97baeZUC8Sr)

## API reference

Removes a restriction applied to a specific account.

:::ApiMethodV2
```json
{
  "name": "Endpoint: v1/dda/accounts/{accountNumber}/restrictions/{id}",
  "method": "DELETE",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/restrictions/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "eajf8KuLYBAUE23VI6_Pj",
        "language": "curl",
        "code": "curl --location --globoff --request DELETE 'https://sandbox.crbcos.com/core/v1/dda/accounts/2394312736/restrictions/51d73b46-ef2a-4a52-b174-b32f00949088' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "cY8A59lipKdu7Tz5OnRn5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'DELETE',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/2394312736/restrictions/51d73b46-ef2a-4a52-b174-b32f00949088',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "GZfC4RHGEVRbkzsQLFwdV",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"DELETE\", \"/core/v1/dda/accounts/2394312736/restrictions/51d73b46-ef2a-4a52-b174-b32f00949088\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "FZaVYcLD2VsA0ushPrkfl",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/2394312736/restrictions/51d73b46-ef2a-4a52-b174-b32f00949088\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "JtFd5c4ocb-_vXDQoTk0K",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/2394312736/restrictions/51d73b46-ef2a-4a52-b174-b32f00949088\"\n  method := \"DELETE\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "eajf8KuLYBAUE23VI6_Pj"
  },
  "results": {
    "languages": [
      {
        "id": "92J7Q9aihp7T6Q1Bc5jTC",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"51d73b46-ef2a-4a52-b174-b32f00949088\",\n    \"masterAccountNumber\": \"2394312736\",\n    \"subAccountNumber\": \"2394312736\",\n    \"restrictionType\": \"Internal\",\n    \"appliesTo\": \"Account\",\n    \"status\": \"Inactive\",\n    \"transactionType\": \"Debit\",\n    \"transactionCode\": \"Incoming ACH\",\n    \"reason\": \"Account Freeze\",\n    \"createdAt\": \"2025-08-04T05:00:54.423-04:00\",\n    \"removedAt\": \"2025-08-12T06:50:03.4276575-04:00\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-08-04T05:00:54.4238173-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "92J7Q9aihp7T6Q1Bc5jTC"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the customer's master account that was restricted, even if the restriction is only on a subaccount or accounts",
        "": "Number of the customer's master account that was restricted, even if the restriction is only on a subaccount or accounts"
      },
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The ID identifying this restriction. You get this GUID in the \"id\" attribute of the response to the Restrict account call.",
        "": "The ID identifying this restriction. You get this GUID in the \"id\" attribute of the response to the Restrict account call."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID ID identifying this restriction"
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the restricted customer account",
      "children": []
    },
    {
      "name": "subAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "If the restrictions was on a specific subaccount, that account number",
      "children": []
    },
    {
      "name": "restrictionType",
      "kind": "optional",
      "type": "string",
      "description": "Who applied the restriction:\n- Partner\n- Internal",
      "children": []
    },
    {
      "name": "appliesTo",
      "kind": "optional",
      "type": "string",
      "description": "Restriction coverage:\n- All\n- Account\n- SubAccounts",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the restriction:\n- Inactive\n- Active\nWhen the restriction is removed, this should be Inactive.",
      "children": []
    },
    {
      "name": "rail",
      "kind": "optional",
      "type": "string",
      "description": "Type of restriction applied:\n- Ach\n- Wires\n- CreditCard\n- DebitCard\n- StoredValue\n- Checks\n- XPay\n- Rtp\n- Crypto\n- CardManagement\n- International\n- CardPayments\n- Internal",
      "children": []
    },
    {
      "name": "transactionType",
      "kind": "optional",
      "type": "string",
      "description": "Type of transaction restricted:\n- Debit\n- Credit",
      "children": []
    },
    {
      "name": "otherAccountType",
      "kind": "optional",
      "type": "string",
      "description": "Not used",
      "children": []
    },
    {
      "name": "transactionCode",
      "kind": "optional",
      "type": "string",
      "description": "Indicates a specific transaction code, such as ‘Incoming ACH’",
      "children": []
    },
    {
      "name": "amountThreshold",
      "kind": "optional",
      "type": "integer",
      "description": "Specifies an amount threshold. The restriction applies to any transaction amount that is equal to or greater than the amount entered.\nThis value is in integral cents, meaning the number includes cents, with no decimal point. For example, 100 USD appears as 10000.",
      "children": []
    },
    {
      "name": "effectiveStartTimeHour",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates the approximate start hour of the restriction. Use a 24-hour clock.",
      "children": []
    },
    {
      "name": "effectiveStartTimeMinute",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates the approximate start minute of the restriction",
      "children": []
    },
    {
      "name": "effectiveEndTimeHour",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates the approximate end hour of the restriction. Use a 24-hour clock.",
      "children": []
    },
    {
      "name": "effectiveEndTimeMinute",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates the approximate end minute of the restriction",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency held in the account",
      "children": []
    },
    {
      "name": "reason",
      "kind": "optional",
      "type": "string",
      "description": "Justification for applying the restriction",
      "children": []
    },
    {
      "name": "notes",
      "kind": "optional",
      "type": "string",
      "description": "Any other information about the restriction. Generally not used.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Restriction created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "removedAt",
      "kind": "optional",
      "type": "string",
      "description": "Restriction removed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-v1ddaaccountsaccountnumberrestrictionsid",
  "legacyHash": "1xailvZJGbt6F-ua85FDZ"
}
```
:::


[title] APIs
[path] Cards/


[title] 
[path] Cards/APIs/


[title] Update beneficial owner
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:&#x20;

- [Core.Customer.BeneficialOwner.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;

## API reference

Update the beneficial owner details, including the owner title and the percentage owned. See also [Add beneficial owner](docId\:EOH9pzYARQnyhe9mh979u).&#x20;

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{customerId}/beneficial-owners/{id}",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/beneficial-owners/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "b2QWb9wn1DTrmAGdjZkxC",
        "language": "curl",
        "code": "curl --location --request PUT 'https://sandbox.crbcos.com/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c' \\\n--data '{\n  \"ownerTitle\": \"CEO\",\n  \"ownershipPercentage\": 90\n}'",
        "customLabel": ""
      },
      {
        "id": "ZpBCOCvuCGz5KITvrNnzR",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"ownerTitle\\\": \\\"CEO\\\",\\r\\n  \\\"ownershipPercentage\\\": 90\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "Va41mtJBVqpgPtIiLeS_C",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"ownerTitle\\\": \\\"CEO\\\",\\r\\n  \\\"ownershipPercentage\\\": 90\\r\\n}\"\nheaders = {}\nconn.request(\"PUT\", \"/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "GMVW0UWNlhlK2CWJDCLM8",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n  \\\"ownerTitle\\\": \\\"CEO\\\",\\r\\n  \\\"ownershipPercentage\\\": 90\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "hAV1d17EyU_xo6d7K3v0h",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/b73cf966-7886-40a0-88c5-af5b0138fc8c/beneficial-owners/7c6c3667-ad62-4a7f-992e-b3ae00bbf93c\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"ownerTitle\": \"CEO\",`+\"\n\"+`\n  \"ownershipPercentage\": 90`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hAV1d17EyU_xo6d7K3v0h"
  },
  "results": {
    "languages": [
      {
        "id": "AtM1q1Y7kG6k2_cQ0iWb6",
        "language": "200",
        "code": "{\n    \"id\": \"7c6c3667-ad62-4a7f-992e-b3ae00bbf93c\",\n    \"customerId\": \"b73cf966-7886-40a0-88c5-af5b0138fc8c\",\n    \"ownerCustomerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"status\": \"Active\",\n    \"ownerTitle\": \"CEO\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"createdAt\": \"2025-12-09T06:24:23.45-05:00\",\n    \"lastModifiedAt\": \"2025-12-09T06:34:37.3375696-05:00\",\n    \"ownershipPercentage\": 90\n}",
        "customLabel": ""
      },
      {
        "id": "hHCNoqPXig0PAtEobVm_6",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2214,\n            \"message\": \"Entity customer must be a business\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "AtM1q1Y7kG6k2_cQ0iWb6"
  },
  "request": {
    "pathParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The customer ID of the customer record to update",
        "": "The customer ID of the customer record to update"
      },
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The ID returned in the response when the beneficial owner was added. This is in GUID format.",
        "": "The ID returned in the response when the beneficial owner was added. This is in GUID format."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "ownerTitle",
        "kind": "required",
        "type": "string",
        "description": "Title or role of the beneficial owner",
        "": "required"
      },
      {
        "name": "ownershipPercentage",
        "kind": "optional",
        "type": "number",
        "description": "Percentage of the business this beneficial owner controls. Enter the percentage in real numbers. For example, if you enter 0.20 it means 0.20%. If you enter 20, it means 20%.",
        "": "Percentage of the business this beneficial owner controls. Enter the percentage in real numbers. For example, if you enter 0.20 it means 0.20%. If you enter 20, it means 20%."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "COS ID for the beneficial owner record, in GUID format (also returned when the beneficial owner is added)"
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The customerId of the customer record being updated",
      "children": []
    },
    {
      "name": "ownerCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Beneficial owner Cross River customer ID (provided when the beneficial owner was onboarded to COS)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "boolean",
      "description": "Status of the customer record - can be 'Inactive' or 'Active'",
      "children": []
    },
    {
      "name": "ownerTitle",
      "kind": "optional",
      "type": "string",
      "description": "Title or role of the beneficial owner",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "ownershipPercentage",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the business this beneficial owner controls. Enter the percentage in real numbers. For example, if you enter 0.20 it means 0.20%. If you enter 20, it means 20%.",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomerscustomeridbeneficial-own",
  "legacyHash": "jsA4N-mBEpymRcWiGu1lK"
}
```
:::


[title] Card details by ID
[path] Cards/APIs/Card Issuing APIs/

## API reference

Returns the details of a specific debit card based on its ID.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}?id=1c243431-23b8-407c-afa4-b30000abbe0d' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "x2rGLYmAOBnnV9nFSpgTf",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}?id=1c243431-23b8-407c-afa4-b30000abbe0d',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "gTuyK-aBDJpAdrDtyc0qv",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}?id=1c243431-23b8-407c-afa4-b30000abbe0d\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "FiVszS6F5wEPw5mC8NEY0",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}?id=1c243431-23b8-407c-afa4-b30000abbe0d\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "R3WquWwzvnzc5-d4D_pi_",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}?id=1c243431-23b8-407c-afa4-b30000abbe0d\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"1c243431-23b8-407c-afa4-b30000abbe0d\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"processorCardId\": \"827277613081398\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Unactivated\",\n    \"statusReasonCode\": \"NotSet\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Daly Khol\",\n    \"panLastFour\": \"4558\",\n    \"previousCardId\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n    \"isPinSet\": false,\n    \"expirationDate\": \"2028-06-18\",\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"Completed\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"processorCustomerId\": \"X5R364GI9VXUUK24QH1D\",\n    \"createdAt\": \"2025-06-18T06:25:17.697-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T06:25:19.3129682-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's unique ID for the cardholder",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsid",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] 
[path] Cards/APIs/


[title] Update token status
[path] Cards/APIs/Wallet Tokenization APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- Cards.Token.ProvisioningReceived
- Cards.Token.ActivationReceived
- Cards.Token.CompletionReceived

## API reference

Update token status (suspend, resume, delete).

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{cardId}/tokens/{tokenId}",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/tokens/{tokenId}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --request PUT 'https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7' \\\n--data '{\n  \"tokenAction\": \"Activate\",\n  \"reason\": \"It'\\''s time\"\n}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'PUT',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7',\n  'headers': {\n  },\n  body: '{\\r\\n  \"tokenAction\": \"Activate\",\\r\\n  \"reason\": \"It\\'s time\"\\r\\n}'\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7\"\n\npayload = \"{\\r\\n  \\\"tokenAction\\\": \\\"Activate\\\",\\r\\n  \\\"reason\\\": \\\"It's time\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n  \\\"tokenAction\\\": \\\"Activate\\\",\\r\\n  \\\"reason\\\": \\\"It's time\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"tokenAction\": \"Activate\",`+\"\n\"+`\n  \"reason\": \"It's time\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"tokenId\": \"c25cabee-2533-4a46-a52b-c74991559bd7\",\n    \"status\": \"ACTIVE\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "cardId"
      },
      {
        "name": "tokenId",
        "kind": "required",
        "type": "string",
        "description": "The unique identifier of the token to update. Must be a valid GUID.",
        "": "The unique identifier of the token to update. Must be a valid GUID."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "request",
        "kind": "required",
        "type": "object",
        "description": "Request action on the token",
        "": "Request action on the token",
        "children": [
          {
            "name": "tokenAction",
            "kind": "required",
            "type": "string",
            "description": "- Activate\n- Suspend\n- Delete"
          },
          {
            "name": "reason",
            "kind": "optional",
            "type": "string",
            "description": "Describe the reason for the request"
          }
        ],
        "schema": [
          {
            "name": "tokenAction",
            "kind": "required",
            "type": "string",
            "description": "- Activate\n- Suspend\n- Delete"
          },
          {
            "name": "reason",
            "kind": "optional",
            "type": "string",
            "description": "Describe the reason for the request"
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "tokenId",
      "kind": "optional",
      "type": "string",
      "description": ""
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "- ACTIVE\n- INACTIVE\n- SUSPENDED\n- DELETED",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardscardidtokenstokenid",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Delete by ID
[path] Webhooks intro/COS webhooks/Webhook management: COS/

:::ApiMethodV2
```json
{
  "name": "Endpoint: /webhooks/v1/registrations/{id}",
  "method": "DELETE",
  "url": "https://sandbox.crbcos.com/webhooks/v1/registrations/{id}",
  "description": "Deletes a webhook registration by ID",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "LP2318Uc2K4VicXRU2fEv",
        "language": "curl",
        "code": "curl --location --globoff --request DELETE 'https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "0vBO2msBQUCYhDKHwSeeR",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'DELETE',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "MdmahJMVk6AugJz8mqwUd",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"DELETE\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "lkxBmSX2n2q7rbCVt5MqM",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "86OQPdFUn4HyN9OkStmjh",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/webhooks/v1/registrations/{id}?id=8d6115c0-2a88-4a58-b731-b306002e8bc2\"\n  method := \"DELETE\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "LP2318Uc2K4VicXRU2fEv"
  },
  "results": {
    "languages": [
      {
        "id": "bJqfoFLZMvr1H-jvaL2PM",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"8d6115c0-2a88-4a58-b731-b306002e8bc2\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"eventName\": \"Cards.Card.Activated\",\n    \"callbackUrl\": \"https://webhook.site/27b9814b-16eb-4099--32594aee5e04\",\n    \"consecutiveErrors\": 0,\n    \"status\": \"Active\",\n    \"type\": \"Push\",\n    \"format\": \"Extended\"\n}"
      }
    ],
    "selectedLanguageId": "bJqfoFLZMvr1H-jvaL2PM"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format.",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "ID of theThe webhook registration ID. You receive this ID in the response when you register a webhook event. This ID is in GUID format."
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "eventName",
      "kind": "optional",
      "type": "string",
      "description": "Webhook event being reported",
      "children": []
    },
    {
      "name": "callbackURL",
      "kind": "optional",
      "type": "string",
      "description": "The value is a URL. Webhooks are reported to this URL as a result of a triggered action. Make sure the callback URL is added to Cross River's allowlist. SSL required.",
      "children": []
    },
    {
      "name": "authUsername",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication username to include in header of event",
      "children": []
    },
    {
      "name": "authPassword",
      "kind": "optional",
      "type": "string",
      "description": "Basic authentication password to include in event header",
      "children": []
    },
    {
      "name": "consecutiveErrors",
      "kind": "optional",
      "type": "Integer",
      "description": "The number of consecutive errors",
      "children": []
    },
    {
      "name": "last error",
      "kind": "optional",
      "type": "string",
      "description": "Description of the last error",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of registration:\n- Active\n- Suspended\n- Restarting",
      "children": []
    },
    {
      "name": "type",
      "kind": "optional",
      "type": "string",
      "description": "Type of registration:\n- Push\n- Poll\n- File",
      "children": []
    },
    {
      "name": "format",
      "kind": "optional",
      "type": "string",
      "description": "Event format:\n- Basic\n- Extended",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-webhooksv1registrationsid",
  "legacyHash": "EEIQjh8PrPYeutXOrMNEI"
}
```
:::

#


[title] Event formats: COS
[path] Webhooks intro/COS webhooks/

## Basic and extended formats

An event payload is delivered in a standard format and contains the resources it's reporting on. Our system supports basic and extended formats.

The table below shows the different fields included in the event together with descriptions and explanations of the information they represent.

| Column          | Description                                                                                                                                                                                                                                                                                                               |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id              | The unique ID for the event. In GUID format.                                                                                                                                                                                                                                                                              |
| eventName       | The name of the event                                                                                                                                                                                                                                                                                                     |
| status          | This column shows the event status, which could be:<br />* **Pending**: The event has been created, but no attempt to send it has been made yet
* **Success**: The event was successfully sent to the registered URL (internal only)
* **Failed**: The event could not be delivered to the registered URL (internal only) |
| createdAt       | The date and time the event was created                                                                                                                                                                                                                                                                                   |
| lastAttemptedAt | The date and time the event was last sent                                                                                                                                                                                                                                                                                 |
| partnerId       | The unique Cross River identification number for the partner resource                                                                                                                                                                                                                                                     |
| resources       | Refers to the resource relating to the event. For example, an account that was opened. It contains the API URI that triggered the event.                                                                                                                                                                                  |
| details         | Contains information related to the API call. These details are only displayed in an extended webhook.                                                                                                                                                                                                                    |

## Basic format

Basic events have a small payload, excluding additional details.&#x20;

They can deliver up to 50k resources at once.

The ID in the resources object (in this example 73da01c7-b85b-4a58-9395-b04900de43cf) corresponds to the `id` field returned in the `POST /v1/payments` response body. This payment `id` is used to track the payment.

:::CodeblockTabs
Basic

```json
{
  "id": "51d2e4e8-5fee-4ad8-8b03-b1c6012a8459",
  "eventName": "Ach.Payment.Sent",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:06:52.013-04:00",
  "resources": [
    "ach/v1/payments/55f641cf-102b-4920-83fd-b1c6012a3d2d"
  ],
}
```
:::

## Extended format

This format returns all the information included in the basic format and a `details` object. The `details `object includes information relevant to the event type.&#x20;

They can deliver up to 1k resources at once.

We recommend using extended webhooks for all `xxx.xxx.Received` events.

**Example**

`ACH.Payment.Sent` webhook event in the extended webhook format.

- The first part of the webhook event payload provides information about the webhook event itself.
- The `resources` object of the webhook event shows information about the ACH payment.
- The `details` object gives specific information.

:::CodeblockTabs
Extended

```json
{
  "id": "51d2e4e8-5fee-4ad8-8b03-b1c6012a8459",
  "eventName": "Ach.Payment.Sent",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:06:52.013-04:00",
  "resources": [
    "ach/v1/payments/55f641cf-102b-4920-83fd-b1c6012a3d2d"
  ],
  "details": [
    {
      "paymentId": "55f641cf-102b-4920-83fd-b1c6012a3d2d",
      "coreTransactionId": "fddea7f7-556e-4c93-acc4-b1c6012a6bf3",
      "memoPostId": "fddea7f7-556e-4c93-acc4-b1c6012a6bf3",
      "clientBatchId": null,
      "clientBatchSequence": null,
      "accountNumber": "2151546989",
      "postingCode": null,
      "clientIdentifier": null,
      "purpose": null,
      "fedBatchId": "29f4b78f-f056-4ac5-9a4e-b1c6012a60d2",
      "fedBatchSequence": null
    }
  ]
}
```
:::




[title] Error codes: customer management
[path] Customer management/

## Overview

This page provides comprehensive error code information for the Customer Management API, including error codes, descriptions, and resolution guidance based on actual codebase analysis.

## Error response format

```json
{
    "errors": [
        {
            "code": 1213,
            "message": "EntityName not allowed for classification"
        }
    ]
}
```

## Error codes by category

### Customer classification validation (1200-1225)

Validation errors related to customer profile and classification requirements.

| Code     | Description                                             | Resolution                                                                                   |
| -------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| **1200** | DateFormed required                                     | Include DateFormed field in the request for business entities                                |
| **1201** | DateFormed cannot be in the future                      | Provide a DateFormed date that is today or in the past                                       |
| **1202** | BirthDate required                                      | Include BirthDate field in the request for individual customers                              |
| **1203** | BirthDate cannot be in the future                       | Provide a BirthDate that is today or in the past                                             |
| **1204** | EntityName required                                     | Include EntityName field for business customers                                              |
| **1205** | FirstName not allowed for classification                | Remove FirstName field; not applicable to this customer classification                       |
| **1206** | MiddleName not allowed for classification               | Remove MiddleName field; not applicable to this customer classification                      |
| **1207** | LastName not allowed for classification                 | Remove LastName field; not applicable to this customer classification                        |
| **1208** | Prefix not allowed for classification                   | Remove Prefix field; not applicable to this customer classification                          |
| **1209** | Suffix not allowed for classification                   | Remove Suffix field; not applicable to this customer classification                          |
| **1210** | PreferredName not allowed for classification            | Remove PreferredName field; not applicable to this customer classification                   |
| **1211** | FirstName required                                      | Include FirstName field in the request for individual customers                              |
| **1212** | LastName required                                       | Include LastName field in the request for individual customers                               |
| **1213** | EntityName not allowed for classification               | Remove EntityName field; only applicable to business customers                               |
| **1214** | Name required                                           | Include customer name information (FirstName/LastName or EntityName based on classification) |
| **1215** | PoliticallyExposedPerson required                       | Include PoliticallyExposedPerson field for individual customers                              |
| **1216** | PoliticallyExposedPerson not allowed for classification | Remove PoliticallyExposedPerson field; only applicable to individual customers               |
| **1217** | BirthDate not allowed for classification                | Remove BirthDate field; only applicable to individual customers                              |
| **1218** | DateFormed not allowed for classification               | Remove DateFormed field; only applicable to business entities                                |
| **1219** | RegO required                                           | Include RegO (Regulation O) status for applicable customers                                  |
| **1220** | RegO not allowed for classification                     | Remove RegO field; not applicable to this customer classification                            |
| **1221** | PrimaryOwnerCustomerId required                         | Include PrimaryOwnerCustomerId for entity customers                                          |
| **1222** | PrimaryOwnerCustomerId not allowed for classification   | Remove PrimaryOwnerCustomerId; only applicable to entity customers                           |
| **1223** | EntityType not allowed for classification               | Remove EntityType field; not applicable to this customer classification                      |
| **1224** | OwnershipType not allowed for classification            | Remove OwnershipType field; not applicable to this customer classification                   |
| **1225** | TaxIdType not allowed for classification                | Remove TaxIdType field; not applicable to this customer classification                       |

### Customers (2200-2226)

Errors related to customer profile management and relationships.

| Code     | Description                                                              | Resolution                                                                                                               |
| -------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| **2200** | Customer not found                                                       | Verify the customer ID is correct; check if customer exists using [ GET /customers/\{id}](docId\:x36Ga61oFeFCQBnmUG0sS)  |
| **2201** | Customer not active                                                      | Customer must be in active status for this operation                                                                     |
| **2202** | Entity not active                                                        | Entity customer must be active for this operation                                                                        |
| **2203** | Address not active                                                       | Address must be in active status; verify address status                                                                  |
| **2204** | Cannot remove primary address                                            | Mark a different address as primary before removing this address                                                         |
| **2205** | DateFormed required                                                      | Include DateFormed field for business entities                                                                           |
| **2206** | DateFormed cannot be in the future                                       | Provide a DateFormed date that is today or in the past                                                                   |
| **2207** | BirthDate required                                                       | Include BirthDate field for individual customers                                                                         |
| **2208** | BirthDate cannot be in the future                                        | Provide a BirthDate that is today or in the past                                                                         |
| **2209** | Primary owner customer not found                                         | Verify primary owner customer ID is correct and customer exists                                                          |
| **2210** | Primary owner customer not active                                        | Primary owner customer must be active                                                                                    |
| **2211** | Primary owner customer must be a person                                  | Primary owner must be an individual customer, not a business entity                                                      |
| **2212** | Entity and primary owner must be under same partner                      | Ensure entity and primary owner are both associated with the same partner                                                |
| **2213** | Entity and primary owner must be different customers                     | Primary owner cannot be the same as the entity customer                                                                  |
| **2214** | Entity customer must be a business                                       | Entity classification requires business customer type                                                                    |
| **2215** | Owner customer not found                                                 | Verify owner customer ID is correct and customer exists                                                                  |
| **2216** | Owner customer not active                                                | Owner customer must be active                                                                                            |
| **2217** | Owner customer must be a person                                          | Owner must be an individual customer, not a business entity                                                              |
| **2218** | Entity and owner customers must be under same partner                    | Ensure entity and owner are both associated with the same partner                                                        |
| **2219** | Entity and owner must be different customers                             | Owner cannot be the same as the entity customer                                                                          |
| **2220** | Owner relationship already exists for entity customer                    | This owner relationship already exists; cannot create duplicate                                                          |
| **2221** | Unable to deactivate customer due to established account relationship(s) | Remove or deactivate all account relationships before deactivating customer                                              |
| **2222** | Partner not found or is inactive                                         | Verify partner ID is correct and partner is active                                                                       |
| **2223** | An active customer with this tax ID already exists for partner           | Active customer with this tax ID already exists; use existing customer or provide different tax ID                       |
| **2224** | Cannot remove primary identification                                     | Mark a different identification as primary before removing this one                                                      |
| **2225** | Cannot remove primary phone                                              | Mark a different phone number as primary before removing this one                                                        |
| **2226** | Invalid customer entity type                                             | Provide a valid customer entity type                                                                                     |

### Relationships (2525-2534)

Errors related to customer-account relationship management.

| Error Code | Description                                                      | Resolution                                                              |
| ---------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------- |
| **2525**   | Relationship not found                                           | Verify the relationship ID is correct; check if relationship exists     |
| **2526**   | Relationship not active                                          | Relationship must be active for this operation                          |
| **2527**   | Primary relationship cannot be removed                           | Mark a different relationship as primary before removing this one       |
| **2528**   | Relationship not allowed for account type                        | This relationship type is not permitted for this account type           |
| **2529**   | RelationshipType not allowed for account classification          | This relationship type is not permitted for this account classification |
| **2530**   | IsTaxReportingOwner cannot be enabled for relationship type      | Tax reporting owner flag is not supported for this relationship type    |
| **2531**   | Customer must be classified as a person                          | This operation requires an individual customer, not a business entity   |
| **2532**   | Customer relationship already exists                             | Relationship between this customer and account already exists           |
| **2533**   | Customer must be under same partner as account                   | Ensure customer and account belong to the same partner                  |
| **2534**   | Customer must be cleared for OFAC prior to creating relationship | Complete OFAC screening before creating account relationship            |


[title] Admin block
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Suspended](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

An administrative block means that the card is both suspended and has been blocked using this endpoint. Only an admin can remove this block. Status returned is suspended.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/admin-block",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/admin-block",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/admin-block?id=a19c944b-ef09-4bea-a222-b300006209cb' \\\n--header 'Idempotency-key: a5b1b129-421e-441b-9661-ec1c0396965e' \\\n--data '{\n  \"notes\": \"blocked pending review\"\n}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}/admin-block?id=a19c944b-ef09-4bea-a222-b300006209cb',\n  'headers': {\n    'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"notes\\\": \\\"blocked pending review\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/admin-block?id=a19c944b-ef09-4bea-a222-b300006209cb\"\n\npayload = \"{\\r\\n  \\\"notes\\\": \\\"blocked pending review\\\"\\r\\n}\"\nheaders = {\n  'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/admin-block?id=a19c944b-ef09-4bea-a222-b300006209cb\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"a5b1b129-421e-441b-9661-ec1c0396965e\"\nrequest.body = \"{\\r\\n  \\\"notes\\\": \\\"blocked pending review\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/admin-block?id=a19c944b-ef09-4bea-a222-b300006209cb\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"notes\": \"blocked pending review\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"a5b1b129-421e-441b-9661-ec1c0396965e\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"a19c944b-ef09-4bea-a222-b300006209cb\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"processorCardId\": \"749973740723710\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Suspended\",\n    \"statusReasonCode\": \"NotSet\",\n    \"processorCardStatus\": \"I\",\n    \"firstName\": \"Dal\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Dal Khol\",\n    \"panLastFour\": \"7093\",\n    \"isPinSet\": false,\n    \"expirationDate\": \"2028-06-18\",\n    \"adminBlocked\": true,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"Completed\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"processorCustomerId\": \"J3J23765HM5580AMR4Z4\",\n    \"createdAt\": \"2025-06-18T01:56:57.643-04:00\",\n    \"suspendedAt\": \"2025-07-01T08:08:25.2830573-04:00\",\n    \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n    \"activatedAt\": \"2025-06-18T01:58:04.033-04:00\",\n    \"lastModifiedAt\": \"2025-07-01T08:08:25.2830573-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "notes",
        "kind": "required",
        "type": "string",
        "description": "Maximum length is 60 characters",
        "": "required"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format. See also here.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- FraudBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's Unique ID for the cardholder",
      "children": []
    },
    {
      "name": "cardDesignId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier associated to the card design to use when overriding a program's default card design",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidadmin-block",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Set PIN
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Pin.Set](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

Set an initial debit card Personal Identification Number (PIN) for withdrawing funds from an ATM and other uses. To initially set a card PIN, the card must be created, but does not need to be activated. The card's `isPinSet` has a value of `false`. Once the PIN has been created, this API can also be called to update the PIN.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/pin",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/pin",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff --request PUT 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/pin?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a' \\\n--data '{\n  \"pin\": \"1534\"\n}",
        "customLabel": ""
      },
      {
        "id": "x_MG1v6sKtmoDOR0tOu8n",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}/pin?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"pin\\\": \\\"1534\\\"\\r\\n}\\r\\n\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "BjNj18w3ge1Dp8xYETFNQ",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/pin?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n\npayload = \"{\\r\\n  \\\"pin\\\": \\\"1534\\\"\\r\\n}\\r\\n\\r\\n\"\nheaders = {\n\n}\n\nresponse = requests.request(\"PUT\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "7vCzq4QiptwpYN3fJ5pbc",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/pin?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest.body = \"{\\r\\n  \\\"pin\\\": \\\"1534\\\"\\r\\n}\\r\\n\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "r8rtjGLzdnx9k067fg8SY",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/pin?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"pin\": \"1534\"`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"processorCardId\": \"827277613081398\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Active\",\n    \"statusReasonCode\": \"NotSet\",\n    \"processorCardStatus\": \"B\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Daly Khol\",\n    \"panLastFour\": \"4558\",\n    \"isPinSet\": true,\n    \"expirationDate\": \"2028-06-18\",\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"Completed\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"processorCustomerId\": \"0CIF7L2973U98WT4E652\",\n    \"createdAt\": \"2025-06-18T02:26:49.617-04:00\",\n    \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n    \"activatedAt\": \"2025-06-18T02:27:58.813-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T06:18:02.7043417-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "pin",
        "kind": "required",
        "type": "string",
        "description": "4-digit personal identification number associated with the card for verification purposes during purchase or cash withdrawal transactions.",
        "": "pin"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's Unique ID for the cardholder",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidpin",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Add business customer
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Core.Customer.Onboarded](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;
- [Core.Customer.Ofac.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;
- [Core.Customer.PepScan.Changed](docId\:rl8xMrOEgISTYbmE-Y98D)

## API reference

Creates a new customer record. The customer record contains information about the customer, including the business (entity) name and tax information. The record might also contain any due dilligence data, contact information and a customer identification document.

A customer record is either personal or business. The *business* customer record call is described below. A [personal](docId\:isgkj7NIS9jHmyu3UPUBk) customer record includes slightly different information.

Once the customer record exists, the customer can be associated with one or more [accounts](docId\:ZQyAf4oeI1rEzpBOI78MJ).

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "xK0mDfrnuxTC3HLNjR8-M",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/cm/customers' \\\n--header  \\\n--data-raw '\n\n\n{\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"name\": {\n        \"entityName\": \"Bodek Business Technologies Corp\"\n    },\n    \"classification\": \"Business\",\n    \"profile\": {\n        \"citizenshipCountryCode\": \"US\",\n        \"enableBackupWithholding\": false,\n        \"backupWithholdingPercent\": 0,\n        \"taxIdType\": \"Ein\",\n        \"taxId\": \"999000004\",\n        \"dateFormed\": \"1981-06-25\",\n        \"entityType\": \"Corporation\",\n        \"riskRating\": \"Low\",\n        \"ownershipType\": \"LegalEntity\",\n        \"primaryOwnerCustomerId\": \"02ac22aa-0ab0-405e-9c41-b3cb00b85866\"\n    },\n    \"businessDueDiligence\": {\n        \"natureOfBusiness\": \"Technology\",\n        \"naics\": \"541512\",\n        \"merchantCategoryCode\": \"4816\",\n        \"businessUrl\": \"www.bodekbustech.com\",\n        \"relationshipFormationDate\": \"1982-06-27\"\n  },\n  \"primaryAddress\": {\n    \"addressType\": \"Work\",\n    \"classification\": \"Business\",\n    \"isPrimary\": true,\n    \"street1\": \"500 Test St\",\n    \"street2\": \"Suite 1\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10036\",\n    \"countryCode\": \"US\"\n  },\n  \"primaryPhone\": {\n    \"isPrimary\": true,\n    \"phoneType\": \"Work\",\n    \"phoneNumber\": \"2015557001\"\n  },\n  \"primaryEmail\": {\n    \"isPrimary\": true,\n    \"emailType\": \"Work\",\n    \"emailAddress\": \"info@bodekbustech.com\"\n  }\n}\n\n\n\n\n'",
        "customLabel": ""
      },
      {
        "id": "Sfds9Hmx9Sui1_6GJyU5q",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"\\n\\n\\r\\n{\\r\\n    \\\"partnerId\\\": \\\"cd9c12f4-7691-424a-b38b-af5b0134c611\\\",\\r\\n    \\\"name\\\": {\\r\\n        \\\"entityName\\\": \\\"Bodek Business Technologies Corp\\\"\\r\\n    },\\r\\n    \\\"classification\\\": \\\"Business\\\",\\r\\n    \\\"profile\\\": {\\r\\n        \\\"citizenshipCountryCode\\\": \\\"US\\\",\\r\\n        \\\"enableBackupWithholding\\\": false,\\r\\n        \\\"backupWithholdingPercent\\\": 0,\\r\\n        \\\"taxIdType\\\": \\\"Ein\\\",\\r\\n        \\\"taxId\\\": \\\"999000004\\\",\\r\\n        \\\"dateFormed\\\": \\\"1981-06-25\\\",\\r\\n        \\\"entityType\\\": \\\"Corporation\\\",\\r\\n        \\\"riskRating\\\": \\\"Low\\\",\\r\\n        \\\"ownershipType\\\": \\\"LegalEntity\\\",\\r\\n        \\\"primaryOwnerCustomerId\\\": \\\"02ac22aa-0ab0-405e-9c41-b3cb00b85866\\\"\\r\\n    },\\r\\n    \\\"businessDueDiligence\\\": {\\r\\n        \\\"natureOfBusiness\\\": \\\"Technology\\\",\\r\\n        \\\"naics\\\": \\\"541512\\\",\\r\\n        \\\"merchantCategoryCode\\\": \\\"4816\\\",\\r\\n        \\\"businessUrl\\\": \\\"www.bodekbustech.com\\\",\\r\\n        \\\"relationshipFormationDate\\\": \\\"1982-06-27\\\"\\r\\n  },\\r\\n   \\\"clientIdentifier\\\": \\\"ee5239ff-24v8-43f3-9823-1546233d32bf\\\",\\r\\n  \\\"primaryAddress\\\": {\\r\\n    \\\"addressType\\\": \\\"Work\\\",\\r\\n    \\\"classification\\\": \\\"Business\\\",\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"street1\\\": \\\"500 Test St\\\",\\r\\n    \\\"street2\\\": \\\"Suite 1\\\",\\r\\n    \\\"city\\\": \\\"New York\\\",\\r\\n    \\\"state\\\": \\\"NY\\\",\\r\\n    \\\"postalCode\\\": \\\"10036\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\"\\r\\n  },\\r\\n  \\\"primaryPhone\\\": {\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"phoneType\\\": \\\"Work\\\",\\r\\n    \\\"phoneNumber\\\": \\\"2015557001\\\"\\r\\n  },\\r\\n  \\\"primaryEmail\\\": {\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"emailType\\\": \\\"Work\\\",\\r\\n    \\\"emailAddress\\\": \\\"info@bodekbustech.com\\\"\\r\\n  }\\r\\n}\\r\\n\\r\\n\\n\\n\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "p2mgpAw9ZbaTwt2iiYMG-",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"\\n\\n\\r\\n{\\r\\n    \\\"partnerId\\\": \\\"cd9c12f4-7691-424a-b38b-af5b0134c611\\\",\\r\\n    \\\"name\\\": {\\r\\n        \\\"entityName\\\": \\\"Bodek Business Technologies Corp\\\"\\r\\n    },\\r\\n    \\\"classification\\\": \\\"Business\\\",\\r\\n    \\\"profile\\\": {\\r\\n        \\\"citizenshipCountryCode\\\": \\\"US\\\",\\r\\n        \\\"enableBackupWithholding\\\": false,\\r\\n        \\\"backupWithholdingPercent\\\": 0,\\r\\n        \\\"taxIdType\\\": \\\"Ein\\\",\\r\\n        \\\"taxId\\\": \\\"999000004\\\",\\r\\n        \\\"dateFormed\\\": \\\"1981-06-25\\\",\\r\\n        \\\"entityType\\\": \\\"Corporation\\\",\\r\\n        \\\"riskRating\\\": \\\"Low\\\",\\r\\n        \\\"ownershipType\\\": \\\"LegalEntity\\\",\\r\\n        \\\"primaryOwnerCustomerId\\\": \\\"02ac22aa-0ab0-405e-9c41-b3cb00b85866\\\"\\r\\n    },\\r\\n    \\\"businessDueDiligence\\\": {\\r\\n        \\\"natureOfBusiness\\\": \\\"Technology\\\",\\r\\n        \\\"naics\\\": \\\"541512\\\",\\r\\n        \\\"merchantCategoryCode\\\": \\\"4816\\\",\\r\\n        \\\"businessUrl\\\": \\\"www.bodekbustech.com\\\",\\r\\n        \\\"relationshipFormationDate\\\": \\\"1982-06-27\\\"\\r\\n  },\\r\\n   \\\"clientIdentifier\\\": \\\"ee5239ff-24v8-43f3-9823-1546233d32bf\\\",\\r\\n  \\\"primaryAddress\\\": {\\r\\n    \\\"addressType\\\": \\\"Work\\\",\\r\\n    \\\"classification\\\": \\\"Business\\\",\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"street1\\\": \\\"500 Test St\\\",\\r\\n    \\\"street2\\\": \\\"Suite 1\\\",\\r\\n    \\\"city\\\": \\\"New York\\\",\\r\\n    \\\"state\\\": \\\"NY\\\",\\r\\n    \\\"postalCode\\\": \\\"10036\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\"\\r\\n  },\\r\\n  \\\"primaryPhone\\\": {\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"phoneType\\\": \\\"Work\\\",\\r\\n    \\\"phoneNumber\\\": \\\"2015557001\\\"\\r\\n  },\\r\\n  \\\"primaryEmail\\\": {\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"emailType\\\": \\\"Work\\\",\\r\\n    \\\"emailAddress\\\": \\\"info@bodekbustech.com\\\"\\r\\n  }\\r\\n}\\r\\n\\r\\n\\n\\n\\n\"\nheaders = {\n  }\nconn.request(\"POST\", \"/core/v1/cm/customers\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "yQQFbZ14K1Svsw-c2e440",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest\nrequest.body = \"\\n\\n\\r\\n{\\r\\n    \\\"partnerId\\\": \\\"cd9c12f4-7691-424a-b38b-af5b0134c611\\\",\\r\\n    \\\"name\\\": {\\r\\n        \\\"entityName\\\": \\\"Bodek Business Technologies Corp\\\"\\r\\n    },\\r\\n    \\\"classification\\\": \\\"Business\\\",\\r\\n    \\\"profile\\\": {\\r\\n        \\\"citizenshipCountryCode\\\": \\\"US\\\",\\r\\n        \\\"enableBackupWithholding\\\": false,\\r\\n        \\\"backupWithholdingPercent\\\": 0,\\r\\n        \\\"taxIdType\\\": \\\"Ein\\\",\\r\\n        \\\"taxId\\\": \\\"999000004\\\",\\r\\n        \\\"dateFormed\\\": \\\"1981-06-25\\\",\\r\\n        \\\"entityType\\\": \\\"Corporation\\\",\\r\\n        \\\"riskRating\\\": \\\"Low\\\",\\r\\n        \\\"ownershipType\\\": \\\"LegalEntity\\\",\\r\\n        \\\"primaryOwnerCustomerId\\\": \\\"02ac22aa-0ab0-405e-9c41-b3cb00b85866\\\"\\r\\n    },\\r\\n    \\\"businessDueDiligence\\\": {\\r\\n        \\\"natureOfBusiness\\\": \\\"Technology\\\",\\r\\n        \\\"naics\\\": \\\"541512\\\",\\r\\n        \\\"merchantCategoryCode\\\": \\\"4816\\\",\\r\\n        \\\"businessUrl\\\": \\\"www.bodekbustech.com\\\",\\r\\n        \\\"relationshipFormationDate\\\": \\\"1982-06-27\\\"\\r\\n  },\\r\\n   \\\"clientIdentifier\\\": \\\"ee5239ff-24v8-43f3-9823-1546233d32bf\\\",\\r\\n  \\\"primaryAddress\\\": {\\r\\n    \\\"addressType\\\": \\\"Work\\\",\\r\\n    \\\"classification\\\": \\\"Business\\\",\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"street1\\\": \\\"500 Test St\\\",\\r\\n    \\\"street2\\\": \\\"Suite 1\\\",\\r\\n    \\\"city\\\": \\\"New York\\\",\\r\\n    \\\"state\\\": \\\"NY\\\",\\r\\n    \\\"postalCode\\\": \\\"10036\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\"\\r\\n  },\\r\\n  \\\"primaryPhone\\\": {\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"phoneType\\\": \\\"Work\\\",\\r\\n    \\\"phoneNumber\\\": \\\"2015557001\\\"\\r\\n  },\\r\\n  \\\"primaryEmail\\\": {\\r\\n    \\\"isPrimary\\\": true,\\r\\n    \\\"emailType\\\": \\\"Work\\\",\\r\\n    \\\"emailAddress\\\": \\\"info@bodekbustech.com\\\"\\r\\n  }\\r\\n}\\r\\n\\r\\n\\n\\n\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "SNQlzFgb-VGSFcRmwkzV3",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`\n\n`+\"\n\"+`\n{`+\"\n\"+`\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",`+\"\n\"+`\n    \"name\": {`+\"\n\"+`\n        \"entityName\": \"Bodek Business Technologies Corp\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"classification\": \"Business\",`+\"\n\"+`\n    \"profile\": {`+\"\n\"+`\n        \"citizenshipCountryCode\": \"US\",`+\"\n\"+`\n        \"enableBackupWithholding\": false,`+\"\n\"+`\n        \"backupWithholdingPercent\": 0,`+\"\n\"+`\n        \"taxIdType\": \"Ein\",`+\"\n\"+`\n        \"taxId\": \"999000004\",`+\"\n\"+`\n        \"dateFormed\": \"1981-06-25\",`+\"\n\"+`\n        \"entityType\": \"Corporation\",`+\"\n\"+`\n        \"riskRating\": \"Low\",`+\"\n\"+`\n        \"ownershipType\": \"LegalEntity\",`+\"\n\"+`\n        \"primaryOwnerCustomerId\": \"02ac22aa-0ab0-405e-9c41-b3cb00b85866\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"businessDueDiligence\": {`+\"\n\"+`\n        \"natureOfBusiness\": \"Technology\",`+\"\n\"+`\n        \"naics\": \"541512\",`+\"\n\"+`\n        \"merchantCategoryCode\": \"4816\",`+\"\n\"+`\n        \"businessUrl\": \"www.bodekbustech.com\",`+\"\n\"+`\n        \"relationshipFormationDate\": \"1982-06-27\"`+\"\n\"+`\n  },`+\"\n\"+`\n   \"clientIdentifier\": \"ee5239ff-24v8-43f3-9823-1546233d32bf\",`+\"\n\"+`\n  \"primaryAddress\": {`+\"\n\"+`\n    \"addressType\": \"Work\",`+\"\n\"+`\n    \"classification\": \"Business\",`+\"\n\"+`\n    \"isPrimary\": true,`+\"\n\"+`\n    \"street1\": \"500 Test St\",`+\"\n\"+`\n    \"street2\": \"Suite 1\",`+\"\n\"+`\n    \"city\": \"New York\",`+\"\n\"+`\n    \"state\": \"NY\",`+\"\n\"+`\n    \"postalCode\": \"10036\",`+\"\n\"+`\n    \"countryCode\": \"US\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"primaryPhone\": {`+\"\n\"+`\n    \"isPrimary\": true,`+\"\n\"+`\n    \"phoneType\": \"Work\",`+\"\n\"+`\n    \"phoneNumber\": \"2015557001\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"primaryEmail\": {`+\"\n\"+`\n    \"isPrimary\": true,`+\"\n\"+`\n    \"emailType\": \"Work\",`+\"\n\"+`\n    \"emailAddress\": \"info@bodekbustech.com\"`+\"\n\"+`\n  }`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n\n\n\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"<key>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xK0mDfrnuxTC3HLNjR8-M"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "code": "{\n    \"id\": \"a25e49f4-ccbf-4195-8a56-b3cc0089553a\",\n    \"cifNumber\": \"371266240593\",\n    \"classification\": \"Business\",\n    \"status\": \"Active\",\n    \"ofac\": \"Pending\",\n    \"pepScan\": \"Pending\",\n    \"internalList\": \"Pending\",\n    \"name\": {\n        \"entityName\": \"Bodek Business Technologies Corp\",\n        \"fullName\": \"Bodek Business Technologies Corp\"\n    },\n    \"profile\": {\n        \"citizenshipCountryCode\": \"US\",\n        \"enableBackupWithholding\": false,\n        \"backupWithholdingPercent\": 0,\n        \"taxIdType\": \"Ein\",\n        \"taxId\": \"999000004\",\n        \"dateFormed\": \"1981-06-25\",\n        \"entityType\": \"Corporation\",\n        \"riskRating\": \"Low\",\n        \"ownershipType\": \"LegalEntity\",\n        \"primaryOwnerCustomerId\": \"02ac22aa-0ab0-405e-9c41-b3cb00b85866\"\n    },\n    \"createdAt\": \"2026-01-08T03:20:00.8328677-05:00\",\n    \"lastModifiedAt\": \"2026-01-08T03:20:00.8328677-05:00\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"businessDueDiligence\": {\n        \"natureOfBusiness\": \"Technology\",\n        \"naics\": \"541512\",\n        \"merchantCategoryCode\": \"4816\",\n        \"businessUrl\": \"www.bodekbustech.com\",\n        \"relationshipFormationDate\": \"1982-06-27\"\n    },\n    \"clientIdentifier\": \"ee5239ff-24v8-43f3-9823-1546233d32bf\",\n    \"primaryAddress\": {\n        \"id\": \"5c439cc7-533c-499c-82dd-b3cc0089553a\",\n        \"customerId\": \"a25e49f4-ccbf-4195-8a56-b3cc0089553a\",\n        \"isPrimary\": true,\n        \"status\": \"Active\",\n        \"classification\": \"Business\",\n        \"addressType\": \"Work\",\n        \"street1\": \"500 Test St\",\n        \"street2\": \"Suite 1\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10036\",\n        \"countryCode\": \"US\",\n        \"createdAt\": \"2026-01-08T03:20:00.8328677-05:00\",\n        \"lastModifiedAt\": \"2026-01-08T03:20:00.8328677-05:00\",\n        \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\"\n    },\n    \"primaryEmail\": {\n        \"id\": \"5775efd6-4e02-4883-9087-b3cc0089553a\",\n        \"customerId\": \"a25e49f4-ccbf-4195-8a56-b3cc0089553a\",\n        \"isPrimary\": true,\n        \"status\": \"Active\",\n        \"emailType\": \"Work\",\n        \"emailAddress\": \"info@bodekbustech.com\",\n        \"createdAt\": \"2026-01-08T03:20:00.8328677-05:00\",\n        \"lastModifiedAt\": \"2026-01-08T03:20:00.8328677-05:00\",\n        \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\"\n    },\n    \"primaryPhone\": {\n        \"id\": \"191d7fec-afc5-4dd3-89fc-b3cc0089553a\",\n        \"customerId\": \"a25e49f4-ccbf-4195-8a56-b3cc0089553a\",\n        \"status\": \"Active\",\n        \"phoneType\": \"Work\",\n        \"isPrimary\": true,\n        \"phoneNumber\": \"2015557001\",\n        \"createdAt\": \"2026-01-08T03:20:00.8328677-05:00\",\n        \"lastModifiedAt\": \"2026-01-08T03:20:00.8328677-05:00\",\n        \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\"\n    }\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zuoamZSUzJOVAnQseRBuz"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "partnerId",
        "kind": "required",
        "type": "string",
        "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
        "": "Your unique ID in the Cross River system. This ID is in GUID format."
      },
      {
        "name": "name",
        "kind": "required",
        "type": "object",
        "description": "Customer name in detail",
        "": "required",
        "children": [
          {
            "name": "entityName",
            "kind": "required",
            "type": "string",
            "description": "Legal name of the business. 255 characters maximum."
          }
        ],
        "schema": [
          {
            "name": "entityName",
            "kind": "required",
            "type": "string",
            "description": "Legal name of the business. 255 characters maximum."
          }
        ]
      },
      {
        "name": "classification",
        "kind": "required",
        "type": "string",
        "description": "The classification type of the customer:\nUse \"Business\" (meaning a customer record for a legal entity)",
        "": "The classification type of the customer:\nUse \"Business\" (meaning a customer record for a legal entity)"
      },
      {
        "name": "profile",
        "kind": "required",
        "type": "object",
        "description": "Customer banking-relevant information",
        "": "Customer banking-relevant information",
        "children": [
          {
            "name": "taxIdType",
            "kind": "required",
            "type": "string",
            "description": "Tax ID type for the customer:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
          },
          {
            "name": "taxId",
            "kind": "required",
            "type": "string",
            "description": "Tax ID number. 9 character minimum for SSN, EIN, or ITIN; 5 character minimum for VAT or Foreign. 20 character maximum."
          },
          {
            "name": "riskRating",
            "kind": "required",
            "type": "string",
            "description": "Customer risk rating:\n- Low\n- Medium\n- High"
          },
          {
            "name": "citizenshipCountryCode",
            "kind": "optional",
            "type": "string",
            "description": "Country of citizenship (2 character ISO code)"
          },
          {
            "name": "enableBackupWithholding",
            "kind": "optional",
            "type": "boolean",
            "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false."
          },
          {
            "name": "backupWithholdingPercent",
            "kind": "optional",
            "type": "number",
            "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
          },
          {
            "name": "dateFormed",
            "kind": "required",
            "type": "string",
            "description": "Date when legal entity was formed. In the format \"yyyy-mm-dd\""
          },
          {
            "name": "entityType",
            "kind": "optional",
            "type": "string",
            "description": "Business entity legal classification. Also called Customer entity type."
          },
          {
            "name": "ownershipType",
            "kind": "optional",
            "type": "string",
            "description": "- Exempt\n- Excluded\n- NonProfit\n- LegalEntity"
          },
          {
            "name": "primaryOwnerCustomerId",
            "kind": "optional",
            "type": "string",
            "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format."
          },
          {
            "name": "parentEntityId",
            "kind": "optional",
            "type": "string",
            "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format."
          },
          {
            "name": "privacyOptOut",
            "kind": "optional",
            "type": "boolean",
            "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
          }
        ],
        "schema": [
          {
            "name": "taxIdType",
            "kind": "required",
            "type": "string",
            "description": "Tax ID type for the customer:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
          },
          {
            "name": "taxId",
            "kind": "required",
            "type": "string",
            "description": "Tax ID number. 9 character minimum for SSN, EIN, or ITIN; 5 character minimum for VAT or Foreign. 20 character maximum."
          },
          {
            "name": "riskRating",
            "kind": "required",
            "type": "string",
            "description": "Customer risk rating:\n- Low\n- Medium\n- High"
          },
          {
            "name": "citizenshipCountryCode",
            "kind": "optional",
            "type": "string",
            "description": "Country of citizenship (2 character ISO code)"
          },
          {
            "name": "enableBackupWithholding",
            "kind": "optional",
            "type": "boolean",
            "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false."
          },
          {
            "name": "backupWithholdingPercent",
            "kind": "optional",
            "type": "number",
            "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
          },
          {
            "name": "dateFormed",
            "kind": "required",
            "type": "string",
            "description": "Date when legal entity was formed. In the format \"yyyy-mm-dd\""
          },
          {
            "name": "entityType",
            "kind": "optional",
            "type": "string",
            "description": "Business entity legal classification. Also called Customer entity type."
          },
          {
            "name": "ownershipType",
            "kind": "optional",
            "type": "string",
            "description": "- Exempt\n- Excluded\n- NonProfit\n- LegalEntity"
          },
          {
            "name": "primaryOwnerCustomerId",
            "kind": "optional",
            "type": "string",
            "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format."
          },
          {
            "name": "parentEntityId",
            "kind": "optional",
            "type": "string",
            "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format."
          },
          {
            "name": "privacyOptOut",
            "kind": "optional",
            "type": "boolean",
            "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
          }
        ]
      },
      {
        "name": "businessDueDiligence",
        "kind": "optional",
        "type": "object",
        "description": "Details for due diligence compliance for a business entity. Speak to your compliance liaison to find out any requirements for business due diligence fields.",
        "": "Details for due diligence compliance for a business entity. Speak to your compliance liaison to find out any requirements for business due diligence fields.",
        "children": [
          {
            "name": "natureOfBusiness",
            "kind": "optional",
            "type": "string",
            "description": "Nature of the business"
          },
          {
            "name": "naics",
            "kind": "optional",
            "type": "string",
            "description": "Business's North American Industry Classification System code\n"
          },
          {
            "name": "merchantCategoryCode",
            "kind": "optional",
            "type": "string",
            "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide"
          },
          {
            "name": "businessUrl",
            "kind": "optional",
            "type": "string",
            "description": "URL of the business"
          },
          {
            "name": "relationshipFormationDate",
            "kind": "optional",
            "type": "string",
            "description": " The date the relationship was formed"
          }
        ],
        "schema": [
          {
            "name": "natureOfBusiness",
            "kind": "optional",
            "type": "string",
            "description": "Nature of the business"
          },
          {
            "name": "naics",
            "kind": "optional",
            "type": "string",
            "description": "Business's North American Industry Classification System code\n"
          },
          {
            "name": "merchantCategoryCode",
            "kind": "optional",
            "type": "string",
            "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide"
          },
          {
            "name": "businessUrl",
            "kind": "optional",
            "type": "string",
            "description": "URL of the business"
          },
          {
            "name": "relationshipFormationDate",
            "kind": "optional",
            "type": "string",
            "description": " The date the relationship was formed"
          }
        ]
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum.",
        "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum."
      },
      {
        "name": "primaryAddress",
        "kind": "optional",
        "type": "object",
        "description": "Main address for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "": "Main address for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "children": [
          {
            "name": "addressType",
            "kind": "required",
            "type": "string",
            "description": "What this is the address of:\n- Home\n- Work\n- Other"
          },
          {
            "name": "classification",
            "kind": "required",
            "type": "string",
            "description": "What kind of address this is:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other"
          },
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary address record for this customer. Otherwise, false."
          },
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of customer, for instance, street name, house/building number,  or PO box. 255 character maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 255 character maximum."
          },
          {
            "name": "street3",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 255 character maximum."
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 50 character maximum."
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "2-letter abbreviation for the state"
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal code, also known as ZIP code. 10 character maximum."
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code"
          }
        ],
        "schema": [
          {
            "name": "addressType",
            "kind": "required",
            "type": "string",
            "description": "What this is the address of:\n- Home\n- Work\n- Other"
          },
          {
            "name": "classification",
            "kind": "required",
            "type": "string",
            "description": "What kind of address this is:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other"
          },
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary address record for this customer. Otherwise, false."
          },
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of customer, for instance, street name, house/building number,  or PO box. 255 character maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 255 character maximum."
          },
          {
            "name": "street3",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 255 character maximum."
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 50 character maximum."
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "2-letter abbreviation for the state"
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal code, also known as ZIP code. 10 character maximum."
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code"
          }
        ]
      },
      {
        "name": "primaryPhone",
        "kind": "optional",
        "type": "object",
        "description": "Main phone number for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "": "Main phone number for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "children": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary phone number record for this customer. Otherwise, false."
          },
          {
            "name": "phoneType",
            "kind": "required",
            "type": "string",
            "description": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax"
          },
          {
            "name": "phoneNumber",
            "kind": "required",
            "type": "string",
            "description": "Phone number with no spaces or other characters. Minimum 10, maximum 20"
          },
          {
            "name": "extension",
            "kind": "optional",
            "type": "string",
            "description": "If the phone rings a switchboard, the entity's direct extension. 20 character maximum."
          },
          {
            "name": "notes",
            "kind": "optional",
            "type": "string",
            "description": "Additional phone information. 255 character maximum."
          }
        ],
        "schema": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary phone number record for this customer. Otherwise, false."
          },
          {
            "name": "phoneType",
            "kind": "required",
            "type": "string",
            "description": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax"
          },
          {
            "name": "phoneNumber",
            "kind": "required",
            "type": "string",
            "description": "Phone number with no spaces or other characters. Minimum 10, maximum 20"
          },
          {
            "name": "extension",
            "kind": "optional",
            "type": "string",
            "description": "If the phone rings a switchboard, the entity's direct extension. 20 character maximum."
          },
          {
            "name": "notes",
            "kind": "optional",
            "type": "string",
            "description": "Additional phone information. 255 character maximum."
          }
        ]
      },
      {
        "name": "primaryEmail",
        "kind": "optional",
        "type": "object",
        "description": "Main email address for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "": "Main email address for the customer. This can be added later. When you use this object, some attributes are required (as indicated).",
        "children": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary email address record for this customer. Otherwise, false."
          },
          {
            "name": "emailType",
            "kind": "required",
            "type": "string",
            "description": "Email address type is:\n- Personal\n- Work\n- Other"
          },
          {
            "name": "emailAddress",
            "kind": "required",
            "type": "string",
            "description": "Customer's primary email address. This must be a minimum of 6 characters, and a maximum of 255."
          }
        ],
        "schema": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary email address record for this customer. Otherwise, false."
          },
          {
            "name": "emailType",
            "kind": "required",
            "type": "string",
            "description": "Email address type is:\n- Personal\n- Work\n- Other"
          },
          {
            "name": "emailAddress",
            "kind": "required",
            "type": "string",
            "description": "Customer's primary email address. This must be a minimum of 6 characters, and a maximum of 255."
          }
        ]
      },
      {
        "name": "primaryIdentification",
        "kind": "optional",
        "type": "object",
        "description": "Identification metadata of customer-identifying documents, such as a driver's license or passport. You must provide some form of primary identification for a customer, however you can add it to the customer record later using the POST Add ID details endpoint. When you use this object, some attributes are required (as indicated).",
        "": "Identification metadata of customer-identifying documents, such as a driver's license or passport. You must provide some form of primary identification for a customer, however you can add it to the customer record later using the POST Add ID details endpoint. When you use this object, some attributes are required (as indicated).",
        "children": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary identification record for this customer. Otherwise, false."
          },
          {
            "name": "idNumber",
            "kind": "required",
            "type": "string",
            "description": "The identification number being added. 50 character maximum."
          },
          {
            "name": "idType",
            "kind": "required",
            "type": "string",
            "description": "The kind of ID:\n- DriversLicense\n- Passport\n- IdCard\n- SocialSecurity\n- Other"
          },
          {
            "name": "issuedDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID was issued, in the format yyyy-mm-dd"
          },
          {
            "name": "expDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID expires, in the format yyyy-mm-dd"
          },
          {
            "name": "verifiedDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID was last verified, in the format yyyy-mm-dd"
          },
          {
            "name": "issuingAuthority",
            "kind": "required",
            "type": "string",
            "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles. 255 character maximum."
          },
          {
            "name": "issuingStateOrProvince",
            "kind": "optional",
            "type": "string",
            "description": "State or province where the ID was issued. 50 character maximum."
          },
          {
            "name": "issuingCountryCode",
            "kind": "required",
            "type": "string",
            "description": "Country where the ID was issued expressed as a 2-character ISO country code"
          }
        ],
        "schema": [
          {
            "name": "isPrimary",
            "kind": "required",
            "type": "boolean",
            "description": "True if this is the primary identification record for this customer. Otherwise, false."
          },
          {
            "name": "idNumber",
            "kind": "required",
            "type": "string",
            "description": "The identification number being added. 50 character maximum."
          },
          {
            "name": "idType",
            "kind": "required",
            "type": "string",
            "description": "The kind of ID:\n- DriversLicense\n- Passport\n- IdCard\n- SocialSecurity\n- Other"
          },
          {
            "name": "issuedDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID was issued, in the format yyyy-mm-dd"
          },
          {
            "name": "expDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID expires, in the format yyyy-mm-dd"
          },
          {
            "name": "verifiedDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the ID was last verified, in the format yyyy-mm-dd"
          },
          {
            "name": "issuingAuthority",
            "kind": "required",
            "type": "string",
            "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles. 255 character maximum."
          },
          {
            "name": "issuingStateOrProvince",
            "kind": "optional",
            "type": "string",
            "description": "State or province where the ID was issued. 50 character maximum."
          },
          {
            "name": "issuingCountryCode",
            "kind": "required",
            "type": "string",
            "description": "Country where the ID was issued expressed as a 2-character ISO country code"
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The unique customer ID for the onboarded customer"
    },
    {
      "name": "cifNumber",
      "kind": "optional",
      "type": "string",
      "description": "The Customer Identification File (CIF) number is internal to Cross River, used to identify customers uniquely for compliance purposes",
      "children": []
    },
    {
      "name": "classification",
      "kind": "optional",
      "type": "string",
      "description": "The classification type of the customer:\nPersonal (an individual)\nBusiness (a legal entity)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "- Inactive\n- Active",
      "children": []
    },
    {
      "name": "Ofac",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "pepScan",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "internalList",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Clear\n- Failed\n- Positive\n- Reviewing\n- NotScanned",
      "children": []
    },
    {
      "name": "name",
      "kind": "optional",
      "type": "object",
      "description": "Customer name in detail",
      "children": [
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "Legal name of the business"
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Full customer name. For a business customer this is identical to the entityName."
        }
      ]
    },
    {
      "name": "profile",
      "kind": "required",
      "type": "object",
      "description": "Customer banking-relevant information",
      "": "Customer banking-relevant information",
      "children": [
        {
          "name": "taxIdType",
          "kind": "required",
          "type": "string",
          "description": "Tax ID type for the customer:\n- Ssn (Social security number)\n- Ein (Employer identification number)\n- Itin (Individual tax ID number)\n- Vat (International VAT number)\n- Foreign (non-US domestic)"
        },
        {
          "name": "taxId",
          "kind": "required",
          "type": "string",
          "description": "Tax ID number"
        },
        {
          "name": "riskRating",
          "kind": "required",
          "type": "string",
          "description": "Customer risk rating:\n- Low\n- Medium\n- High"
        },
        {
          "name": "citizenshipCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country of citizenship (2 character ISO code)"
        },
        {
          "name": "enableBackupWithholding",
          "kind": "optional",
          "type": "boolean",
          "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false."
        },
        {
          "name": "backupWithholdingPercent",
          "kind": "optional",
          "type": "number",
          "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date when legal entity was formed. In the format \"yyyy-mm-dd\"."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Business entity legal classification. Also called Customer entity type."
        },
        {
          "name": "ownershipType",
          "kind": "optional",
          "type": "string",
          "description": "Exempt, Excluded, NonProfit, LegalEntity"
        },
        {
          "name": "primaryOwnerCustomerId",
          "kind": "optional",
          "type": "string",
          "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format."
        },
        {
          "name": "parentEntityId",
          "kind": "optional",
          "type": "string",
          "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format."
        }
      ],
      "schema": [
        {
          "name": "taxIdType",
          "kind": "required",
          "type": "string",
          "description": "Tax ID type for the entity:\nSSN, EIN, ITIN, VAT, Foreign"
        },
        {
          "name": "taxId",
          "kind": "required",
          "type": "string",
          "description": "Tax ID number. 9 character minimum. 20 character maximum."
        },
        {
          "name": "riskRating",
          "kind": "required",
          "type": "string",
          "description": "Customer risk rating:\nLow, Medium, High"
        },
        {
          "name": "regO",
          "kind": "optional",
          "type": "boolean",
          "description": "Pertains to loans issued to executive officers, directors, and principal shareholders of member banks. True if the customer is one of them. Otherwise false. \nThis attribute is not relevant for a business entity"
        },
        {
          "name": "citizenshipCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country of citizenship (2 characters)"
        },
        {
          "name": "politicallyExposedPerson",
          "kind": "optional",
          "type": "boolean",
          "description": "Politically exposed person (PEP). True if PEP, otherwise false.\nThis attribute is not relevant for a business entity"
        },
        {
          "name": "enableBackupWithholding",
          "kind": "optional",
          "type": "boolean",
          "description": "Enable to allow withholding taxes on interest earned. True when enabled, otherwise false"
        },
        {
          "name": "backupWithholdingPercent",
          "kind": "optional",
          "type": "integer",
          "description": "If Backup Withholding is enabled, the percentage to withhold taxes on interest earned"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of birth in the format \"yyyy-mm-dd\".\nThis attribute is not relevant for a business entity"
        },
        {
          "name": "dateFormed",
          "kind": "optional",
          "type": "string",
          "description": "Date when legal entity was  formed. In the format \"yyyy-mm-dd\".\nNot relevant for an individual"
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Business entity legal classification. Also called Customer entity type"
        },
        {
          "name": "Customer entity type",
          "kind": "optional",
          "type": "string",
          "description": "Exempt, Excluded, NonProfit, LegalEntity"
        },
        {
          "name": "primaryOwnerCustomerId",
          "kind": "optional",
          "type": "string",
          "description": "Customer ID of the primary owner of a business account.\nThis ID is in GUID format"
        },
        {
          "name": "parentEntityId",
          "kind": "optional",
          "type": "string",
          "description": "The business customer related to the customer being created. Used when a customer is a sole proprietorship or doing DBA. \nThis ID is in GUID format"
        },
        {
          "name": "dateOfDeath",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the date of a customer's passing, should that occur. In the format \"yyyy-mm-dd\"."
        },
        {
          "name": "privacyOptOut",
          "kind": "optional",
          "type": "boolean",
          "description": "Customer opts out of information sharing. True when the customer opts out, otherwise false."
        }
      ]
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "businessDueDiligence",
      "kind": "optional",
      "type": "object",
      "description": "Details for due diligence compliance for a business entity. To be used when required",
      "": "Details for due diligence compliance for a business entity. To be used when required",
      "children": [
        {
          "name": "natureOfBusiness",
          "kind": "optional",
          "type": "string",
          "description": "Nature of the business"
        },
        {
          "name": "naics",
          "kind": "optional",
          "type": "string",
          "description": "Business's North American Industry Classification System code"
        },
        {
          "name": "merchantCategoryCode",
          "kind": "optional",
          "type": "string",
          "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide."
        },
        {
          "name": "businessUrl",
          "kind": "optional",
          "type": "string",
          "description": "URL of the business"
        },
        {
          "name": "relationshipFormationDate",
          "kind": "optional",
          "type": "string",
          "description": "The date the relationship was formed"
        }
      ],
      "schema": [
        {
          "name": "natureOfBusiness",
          "kind": "optional",
          "type": "string",
          "description": "255 characters maximum"
        },
        {
          "name": "naics",
          "kind": "optional",
          "type": "string",
          "description": "Business's North American Industry Classification System code"
        },
        {
          "name": "merchantCategoryCode",
          "kind": "optional",
          "type": "string",
          "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide. nn characters maximum"
        },
        {
          "name": "businessUrl",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "relationshipFormationDate",
          "kind": "optional",
          "type": "string",
          "description": ""
        }
      ]
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum",
      "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum"
    },
    {
      "name": "primaryAddress",
      "kind": "optional",
      "type": "object",
      "description": "Main address for the customer",
      "": "object",
      "children": [
        {
          "name": "addressType",
          "kind": "optional",
          "type": "string",
          "description": "What this is the address of:\n- Home\n- Work\n- Other"
        },
        {
          "name": "classification",
          "kind": "optional",
          "type": "string",
          "description": "What kind of address this is:\n- Residential\n- Business\n- PoBox\n- Rural\n- Military\n- Other"
        },
        {
          "name": "isPrimary",
          "kind": "optional",
          "type": "boolean",
          "description": "True if this is the primary address record for this customer. Otherwise, false."
        },
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of customer, for instance, street name, house/building number, or PO box."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "street3",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "2-letter abbreviation for the state"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        },
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Database ID of the primary address record for this Customer ID"
        },
        {
          "name": "customerId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID for the customer this address is primary for"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Either Active or Inactive"
        }
      ],
      "schema": [
        {
          "name": "addressType",
          "kind": "optional",
          "type": "string",
          "description": "What this is the address of:\nHome\nWork\nOther"
        },
        {
          "name": "classification",
          "kind": "optional",
          "type": "string",
          "description": "What kind of address this is:\nResidential\nBusiness\nPoBox\nRural\nMilitary\nOther"
        },
        {
          "name": "isPrimary",
          "kind": "optional",
          "type": "boolean",
          "description": "True if this is the primary address record for this customer. Otherwise, false"
        },
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of account holder, for instance, street name, house/building number, PO box"
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "street3",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City full name. 50 character maximum"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State name. 10 character maximum"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal code, also known as ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        }
      ]
    },
    {
      "name": "primaryEmail",
      "kind": "optional",
      "type": "object",
      "description": "Main email address for the customer",
      "": "Main email address for the customer",
      "children": [
        {
          "name": "isPrimary",
          "kind": "required",
          "type": "boolean",
          "description": "True if this is the primary email address record for this customer. Otherwise, false."
        },
        {
          "name": "emailType",
          "kind": "required",
          "type": "string",
          "description": "Email address type is:\n- Personal\n- Work\n- Other"
        },
        {
          "name": "emailAddress",
          "kind": "required",
          "type": "string",
          "description": "Customer's primary email address"
        },
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record."
        },
        {
          "name": "customerId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID for the customer this email address is primary for"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Either Active or Inactive"
        }
      ],
      "schema": [
        {
          "name": "isPrimary",
          "kind": "required",
          "type": "boolean",
          "description": "True if this is the primary email address record for this customer. Otherwise, false"
        },
        {
          "name": "emailType",
          "kind": "required",
          "type": "string",
          "description": "Email address is:\nPersonal\nWork\nOther"
        },
        {
          "name": "emailAddress",
          "kind": "required",
          "type": "string",
          "description": "Customer's primary email address. This must be a minimum of 6 characters"
        }
      ]
    },
    {
      "name": "primaryIdentification",
      "kind": "optional",
      "type": "object",
      "description": "Identification metadata of customer-identifying documents, such as a driver's license or passport",
      "": "Identification metadata of customer-identifying documents, such as a driver's license or passport",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "COS ID for the identification record, in GUID format"
        },
        {
          "name": "customerId",
          "kind": "optional",
          "type": "string",
          "description": "Unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record."
        },
        {
          "name": "isPrimary",
          "kind": "optional",
          "type": "boolean",
          "description": "True if this is the primary identification record for this customer. Otherwise, false."
        },
        {
          "name": "idNumber",
          "kind": "optional",
          "type": "string",
          "description": "The identification number being added"
        },
        {
          "name": "idType",
          "kind": "optional",
          "type": "string",
          "description": "The kind of ID:\n- DriversLicense\n- Passport\n- IdCard\n- SocialSecurity\n- Other"
        },
        {
          "name": "issuedDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID was issued"
        },
        {
          "name": "expDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID expires"
        },
        {
          "name": "verifiedDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID was last verified"
        },
        {
          "name": "issuingAuthority",
          "kind": "optional",
          "type": "string",
          "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles."
        },
        {
          "name": "issuingStateOrProvince",
          "kind": "optional",
          "type": "string",
          "description": "State or province where the ID was issued"
        },
        {
          "name": "issuingCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country where the ID was issued expressed as a 2-character code"
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Either Active or Inactive"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        }
      ],
      "schema": [
        {
          "name": "isPrimary",
          "kind": "optional",
          "type": "boolean",
          "description": "True if this is the primary identification record for this customer. Otherwise, false"
        },
        {
          "name": "idNumber",
          "kind": "optional",
          "type": "string",
          "description": "The identification number being added"
        },
        {
          "name": "idType",
          "kind": "optional",
          "type": "string",
          "description": "The kind of ID:\nDriversLicense\nPassport\nIdCard\nSocialSecurity\nOther"
        },
        {
          "name": "issuedDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID was issues"
        },
        {
          "name": "expDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID expires"
        },
        {
          "name": "verifiedDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the ID was verified"
        },
        {
          "name": "issuingAuthority",
          "kind": "optional",
          "type": "string",
          "description": "The official authority that issued the ID. For example, the Department of Motor Vehicles"
        },
        {
          "name": "issuingStateOrProvince",
          "kind": "optional",
          "type": "string",
          "description": "State or province where the ID was issued"
        },
        {
          "name": "issuingCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Country where the ID was issued expressed as a 2-character code"
        }
      ]
    },
    {
      "name": "primaryPhone",
      "kind": "optional",
      "type": "object",
      "description": "Main phone number for the customer",
      "": "Main phone number for the customer",
      "children": [
        {
          "name": "isPrimary",
          "kind": "required",
          "type": "boolean",
          "description": "True if this is the primary phone number record for this customer. Otherwise, false."
        },
        {
          "name": "phoneType",
          "kind": "required",
          "type": "string",
          "description": "The phone number calls a:\n- Home\n- Mobile\n- Work\n- Fax"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Phone number with no spaces or other characters. Minimum 10, maximum 20"
        },
        {
          "name": "extension",
          "kind": "optional",
          "type": "string",
          "description": "If the phone rings a switchboard, the entity's direct extension"
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "Additional phone information. 255 character maximum"
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Either Inactive or Active"
        },
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "COS ID for the phone number record, in GUID format"
        },
        {
          "name": "customerId",
          "kind": "optional",
          "type": "string",
          "description": "Unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record."
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        }
      ],
      "schema": [
        {
          "name": "isPrimary",
          "kind": "required",
          "type": "boolean",
          "description": "True if this is the primary phone number record for this customer. Otherwise, false"
        },
        {
          "name": "phoneType",
          "kind": "required",
          "type": "string",
          "description": "The phone number calls a:\nHome\nMobile\nWork\nFax"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Phone number with no spaces or other characters. Minimum 10, maximum 20"
        },
        {
          "name": "extension",
          "kind": "optional",
          "type": "string",
          "description": "If the phone rings a switchboard, the entity's direct extension"
        },
        {
          "name": "notes",
          "kind": "optional",
          "type": "string",
          "description": "Additional phone information. 255 character maximum"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomers",
  "legacyHash": "eP_4FP7YdE669ic4Karxe"
}
```
:::


[title] CD activity
[path] Accounts/Time deposit (CD) APIs/

## API reference

Returns information about the account activity of a specific time deposit account.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/accounts/{accountNumber}/time-deposit",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/time-deposit",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "q0_pOKrlLi1qibbxm5Etl",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit'",
        "customLabel": ""
      },
      {
        "id": "L6p37tZ9OUVNEb_N76XWY",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/190432130358/time-deposit',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "SdQrzpqIyoMnlsWqF82V8",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"GET\", \"/core/v1/dda/accounts/190432130358/time-deposit\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "xrrTDLyUzeYHw-jjToF0A",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "FRXUHZhjFRa5Tpsd8ojg_",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "q0_pOKrlLi1qibbxm5Etl"
  },
  "results": {
    "languages": [
      {
        "id": "bFD_epqH3NkyFUMXyexqq",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"masterAccountNumber\": \"190432130358\",\n    \"status\": \"EarlyWithdrawal\",\n    \"minFundingAmount\": 50000,\n    \"maxFundingAmount\": 5000000,\n    \"autoClose\": false,\n    \"allowBumpUp\": false,\n    \"waivePenaltyFee\": true,\n    \"fundingDays\": 3,\n    \"gracePeriodDays\": 6,\n    \"currentRate\": 0.00000,\n    \"maturityMonths\": 12,\n    \"rates\": [\n        {\n            \"months\": 3,\n            \"rate\": 4.00000\n        },\n        {\n            \"months\": 3,\n            \"rate\": 6.00000\n        },\n        {\n            \"months\": 3,\n            \"rate\": 8.00000\n        },\n        {\n            \"months\": 3,\n            \"rate\": 10.00000\n        }\n    ],\n    \"penalties\": [\n        {\n            \"months\": 6,\n            \"feeDays\": 3\n        },\n        {\n            \"months\": 6,\n            \"feeDays\": 3\n        }\n    ],\n    \"fundingExpDate\": \"2025-07-03T00:00:00-04:00\",\n    \"fundingDate\": \"2025-07-01T00:00:00-04:00\",\n    \"startDate\": \"2025-07-01T00:00:00-04:00\",\n    \"depositAmount\": 1000000,\n    \"depositCurrency\": \"usd\",\n    \"maturityDate\": \"2026-06-30T00:00:00-04:00\",\n    \"earlyWithdrawnAt\": \"2025-07-02T03:21:07.33-04:00\",\n    \"rolloverDate\": \"2026-07-03T00:00:00-04:00\",\n    \"createdAt\": \"2025-06-30T03:57:49.4-04:00\",\n    \"productId\": \"be8300b4-1206-4cf9-8800-b30100b7a867\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-07-02T03:21:07.3293384-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "bFD_epqH3NkyFUMXyexqq"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of the time deposit account",
        "": "Account number of the time deposit account"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number of the time deposit account"
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the account:\n- Funding\n- Active\n- Matured\n- EarlyWithdrawal\n- Inactive",
      "children": []
    },
    {
      "name": "minFundingAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Minimum dollar amount allowed for the time deposit. If the deposit amount is less than this value the deposit will be rejected.",
      "children": []
    },
    {
      "name": "maxFundingAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Maximum dollar amount allowed for the time deposit. If the deposit amount is more than this value the deposit will be rejected.",
      "children": []
    },
    {
      "name": "autoClose",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the time deposit account automatically closes if not sufficiently funded by the funding expiration date. Otherwise, false.",
      "children": []
    },
    {
      "name": "allowBumpUp",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the Interest Rates Period tier(s) are enabled, where applicable. Otherwise, false.",
      "children": []
    },
    {
      "name": "waivePenaltyFee",
      "kind": "optional",
      "type": "Boolean",
      "description": "If true, a request for early withdrawal will be processed without a penalty fee. Otherwise, false.",
      "children": []
    },
    {
      "name": "fundingDays",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of days the time deposit will remain active once opened but not yet funded",
      "children": []
    },
    {
      "name": "gracePeriodDays",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of days the customer has to withdraw the time deposit once it reaches maturity. If no action is taken during this time then the time deposit will automatically renew for the same term at the rate currently being offered for the term.",
      "children": []
    },
    {
      "name": "currentRate",
      "kind": "optional",
      "type": "Number",
      "description": "The current rate of interest being earned by the account",
      "children": []
    },
    {
      "name": "maturityMonths",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of months until the time deposit reaches maturity",
      "children": []
    },
    {
      "name": "rates",
      "kind": "optional",
      "type": "Object",
      "description": "Interest rate details",
      "children": [
        {
          "name": "months",
          "kind": "optional",
          "type": "Integer",
          "description": "Defines the number of months the given rate is valid"
        },
        {
          "name": "rate",
          "kind": "optional",
          "type": "number",
          "description": "Interest rate of the CD"
        }
      ]
    },
    {
      "name": "penalties",
      "kind": "optional",
      "type": "Object",
      "description": "Details of the penalty your customer pays for early withdrawal",
      "children": [
        {
          "name": "months",
          "kind": "optional",
          "type": "Integer",
          "description": "Early withdrawal within this number of months results in a penalty. Cross River works with you to configure this number for the CD product."
        },
        {
          "name": "feeDays",
          "kind": "optional",
          "type": "Integer",
          "description": "How many days of simple interest to assess"
        }
      ]
    },
    {
      "name": "fundingExpDate",
      "kind": "optional",
      "type": "string",
      "description": "Based on the product configuration, the date by which the account must be funded. if it isn't funded, it's deactivated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "fundingDate",
      "kind": "optional",
      "type": "string",
      "description": "Date account is funded. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "startDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the account starts accruing interest. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "depositAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount deposited to fund the account",
      "children": []
    },
    {
      "name": "depositCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency used for the deposit",
      "children": []
    },
    {
      "name": "maturityDate",
      "kind": "optional",
      "type": "string",
      "description": "Calendar date when the account can be withdrawn. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "earlyWithdrawnAt",
      "kind": "optional",
      "type": "string",
      "description": "Date of early withdrawal. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rolloverDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the time deposit account rolls over (and withdrawal without penalty no longer possible). In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Account created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.\n\nIn this case, your configured time deposit product.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddaaccountsaccountnumbertime-deposi",
  "legacyHash": "HLEs2uAKK1-Yjt72G5leV"
}
```
:::


[title] Create embed session
[path] Cards/APIs/Card Issuing APIs/

## API reference

This is the single endpoint a partner backend calls to mint the short-lived, opaque embed session that the cardholder's browser then loads as a P1-hosted iframe. It carries no card data.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/embed-session",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/embed-session",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl -X POST \\\n  \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/embed-session\" \\\n  -H \"Authorization: Bearer <JWT>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"targetOrigin\": \"https://app.acmepay.io\" }'",
        "customLabel": ""
      },
      {
        "id": "gc3m0KXIIjS1zdDieG_Bg",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'POST',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/cards/[insert value here]/embed-session',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkYyRmI1Y1JqdmZycE5kNWttc25pNmtSWWhIbyIsIng1dCI6IkYyRmI1Y1JqdmZycE5kNWttc25pNmtSWWhIbyIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc4ODcwMDI4MiwiaWF0IjoxNzg4NzAwMjgyLCJleHAiOjE3ODg3MDM4ODIsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjFFMUFFRDVDQjM5Q0E2MjY5OTA5Q0YzNzE4NUNFNDFEIn0.snXoLBJH7Y8C6ZczL-FepeOObysQMNJpD31FoRTvg7G6Xsp31DXRgjlwaFJHlNxvWCmOmXdoYuQ_SFvxzzC15wgnD3nJnQ20UUGvwRI1XyqsXLVcvwwo2WzNj0RngXmUkPx0macwY5OJc_Hlr-GQkmWxAfYax9nJijJg-CEchJoQtEFsqOWeE0VfhDbFzDD9VpBF8Yg6sOnwziWELd6fyWngod1j7-qjYx7--UDZ25TcjbtDcyyB8ChXIf5Q9cbOlKCtD38pUHnAMMcCxuKbwStdxL7khiD97j_z8gecGvOq_Tj5Yy1P6yLhfMbBMtRrPwKi12HwYgY9GkmXJ68YYg'\n  },\n  body: 'curl -X POST \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/embed-session\" \\\\\\r\\n  -H \"Authorization: Bearer <JWT>\" \\\\\\r\\n  -H \"Content-Type: application/json\" \\\\\\r\\n  -d \\'{\\r\\n    \"targetOrigin\": \"[insert target origin here]\"\\r\\n  }\\''\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n"
      },
      {
        "id": "8X5HO88iuDUAXfGW62YuX",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/[insert value here]/embed-session\"\n\npayload = \"curl -X POST \\\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/embed-session\\\" \\\\\\r\\n  -H \\\"Authorization: Bearer <JWT>\\\" \\\\\\r\\n  -H \\\"Content-Type: application/json\\\" \\\\\\r\\n  -d '{\\r\\n    \\\"targetOrigin\\\": \\\"[insert target origin here]\\\"\\r\\n  }'\"\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkYyRmI1Y1JqdmZycE5kNWttc25pNmtSWWhIbyIsIng1dCI6IkYyRmI1Y1JqdmZycE5kNWttc25pNmtSWWhIbyIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc4ODcwMDI4MiwiaWF0IjoxNzg4NzAwMjgyLCJleHAiOjE3ODg3MDM4ODIsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjFFMUFFRDVDQjM5Q0E2MjY5OTA5Q0YzNzE4NUNFNDFEIn0.snXoLBJH7Y8C6ZczL-FepeOObysQMNJpD31FoRTvg7G6Xsp31DXRgjlwaFJHlNxvWCmOmXdoYuQ_SFvxzzC15wgnD3nJnQ20UUGvwRI1XyqsXLVcvwwo2WzNj0RngXmUkPx0macwY5OJc_Hlr-GQkmWxAfYax9nJijJg-CEchJoQtEFsqOWeE0VfhDbFzDD9VpBF8Yg6sOnwziWELd6fyWngod1j7-qjYx7--UDZ25TcjbtDcyyB8ChXIf5Q9cbOlKCtD38pUHnAMMcCxuKbwStdxL7khiD97j_z8gecGvOq_Tj5Yy1P6yLhfMbBMtRrPwKi12HwYgY9GkmXJ68YYg'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
      },
      {
        "id": "04nG7OK8nMCgS35caD-Es",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/[insert value here]/embed-session\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkYyRmI1Y1JqdmZycE5kNWttc25pNmtSWWhIbyIsIng1dCI6IkYyRmI1Y1JqdmZycE5kNWttc25pNmtSWWhIbyIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc4ODcwMDI4MiwiaWF0IjoxNzg4NzAwMjgyLCJleHAiOjE3ODg3MDM4ODIsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjFFMUFFRDVDQjM5Q0E2MjY5OTA5Q0YzNzE4NUNFNDFEIn0.snXoLBJH7Y8C6ZczL-FepeOObysQMNJpD31FoRTvg7G6Xsp31DXRgjlwaFJHlNxvWCmOmXdoYuQ_SFvxzzC15wgnD3nJnQ20UUGvwRI1XyqsXLVcvwwo2WzNj0RngXmUkPx0macwY5OJc_Hlr-GQkmWxAfYax9nJijJg-CEchJoQtEFsqOWeE0VfhDbFzDD9VpBF8Yg6sOnwziWELd6fyWngod1j7-qjYx7--UDZ25TcjbtDcyyB8ChXIf5Q9cbOlKCtD38pUHnAMMcCxuKbwStdxL7khiD97j_z8gecGvOq_Tj5Yy1P6yLhfMbBMtRrPwKi12HwYgY9GkmXJ68YYg\"\nrequest.body = \"curl -X POST \\\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/embed-session\\\" \\\\\\r\\n  -H \\\"Authorization: Bearer <JWT>\\\" \\\\\\r\\n  -H \\\"Content-Type: application/json\\\" \\\\\\r\\n  -d '{\\r\\n    \\\"targetOrigin\\\": \\\"[insert target origin here]\\\"\\r\\n  }'\"\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "tGlm784C5f1rHbKPWVx9j",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/[insert value here]/embed-session\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`curl -X POST \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{cardId}/embed-session\" \\`+\"\n\"+`\n  -H \"Authorization: Bearer <JWT>\" \\`+\"\n\"+`\n  -H \"Content-Type: application/json\" \\`+\"\n\"+`\n  -d '{`+\"\n\"+`\n    \"targetOrigin\": \"[insert target origin here]\"`+\"\n\"+`\n  }'`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkYyRmI1Y1JqdmZycE5kNWttc25pNmtSWWhIbyIsIng1dCI6IkYyRmI1Y1JqdmZycE5kNWttc25pNmtSWWhIbyIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc4ODcwMDI4MiwiaWF0IjoxNzg4NzAwMjgyLCJleHAiOjE3ODg3MDM4ODIsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjFFMUFFRDVDQjM5Q0E2MjY5OTA5Q0YzNzE4NUNFNDFEIn0.snXoLBJH7Y8C6ZczL-FepeOObysQMNJpD31FoRTvg7G6Xsp31DXRgjlwaFJHlNxvWCmOmXdoYuQ_SFvxzzC15wgnD3nJnQ20UUGvwRI1XyqsXLVcvwwo2WzNj0RngXmUkPx0macwY5OJc_Hlr-GQkmWxAfYax9nJijJg-CEchJoQtEFsqOWeE0VfhDbFzDD9VpBF8Yg6sOnwziWELd6fyWngod1j7-qjYx7--UDZ25TcjbtDcyyB8ChXIf5Q9cbOlKCtD38pUHnAMMcCxuKbwStdxL7khiD97j_z8gecGvOq_Tj5Yy1P6yLhfMbBMtRrPwKi12HwYgY9GkmXJ68YYg\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n  \"token\": \"string\",\n  \"embedUrl\": \"https://api.hubucsandbox.aws.crbcloud.com/v2/embed?token=string\"\n}",
        "customLabel": ""
      },
      {
        "id": "8-J2_BEMSk6V7Akg5Z7Uv",
        "language": "400",
        "code": "{\n  \"errors\": [\n    { \"code\": 2028, \"message\": \"...\" }\n  ]\n}"
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "targetOrigin",
        "kind": "required",
        "type": "string",
        "description": "The exact web origin allowed to frame the returned embedUrl (scheme + host, e.g. https://app.acmepay.io). P1 binds this value into the session and returns it as the Content-Security-Policy: frame-ancestors of the iframe document, so the browser only renders the card/keypad when framed by this origin.",
        "": "The exact web origin allowed to frame the returned embedUrl (scheme + host, e.g. https://app.acmepay.io). P1 binds this value into the session and returns it as the Content-Security-Policy: frame-ancestors of the iframe document, so the browser only renders the card/keypad when framed by this origin."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "token",
      "kind": "optional",
      "type": "string",
      "description": "Short-lived, opaque, single use embed session token. Contains no card data."
    },
    {
      "name": "embedUrl",
      "kind": "optional",
      "type": "string",
      "description": "The P1-hosted URL to load in the iframe (src). The token is already embedded as a query parameter.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidembed-session",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Webhooks intro
[path] /

## Webhooks

Webhooks are an important component of any integration with Cross River. While APIs let you request data on demand, webhooks push real-time updates directly to your system eliminating the need for constant polling and reducing latency.  In many cases, webhooks are more efficient and reliable than APIs alone, ensuring your application stays in sync with critical events like account changes, transaction updates, and processing outcomes.&#x20;

A webhook is triggered when a specific event occurs, like a transaction posting, a payment settling, or an account status changing.

Once the registered event fires, a notification is sent to a partner’s designated callback URL, carrying JSON structured data that describes exactly what happened. This event-driven flow lets partners react in real time, update their internal systems, and automate follow-up actions without relying on constant polling or manual checks.

:::hint{type="warning"}
Use webhooks within the Cross River systems to notify you when different events occur. The event returns a resource object that contains relevant details about the subject of each event. The full event details are included and sent to your system.
:::

Webhooks report to your system with real-time notifications when an event happens.&#x20;

You must register via API to use webhooks:

- [Register for COS events](docId\:BN5XtgkJogBe-CtwomCbS)&#x20;
- [Register for Lending events](docId\:jXGfRbtNHOshrZJYHYKTo)




[title] Create new card
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Created](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

To create a card, you must supply a valid deposit account number along with other card-specific information. The initial card status of a newly submitted card is unactivated. When the card is successfully created the order status is OrderPending.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/cards' \\\n--header 'Idempotency-key: b06ab5cc-553a-4fe4-ad78-751b5ff81f0e' \\\n--data-raw '{\n    \"accountNumber\": \"158560897007\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"nameOnCard\": \"Daly Khol\",\n    \"shippingType\": \"Normal\",\n   \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\"\n}",
        "customLabel": ""
      },
      {
        "id": "ncHn8PaSF2mjxBfwkB0y4",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n \nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards',\n  'headers': {\n    'Idempotency-key': 'b06ab5cc-553a-4fe4-ad78-751b5ff81f0e'\n  },\n  'maxRedirects': 20\n};\n \nvar req = https.request(options, function (res) {\n  var chunks = [];\n \n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n \n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n \n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n \nvar postData =  \"{\\r\\n    \\\"accountNumber\\\": \\\"158560897007\\\",\\r\\n    \\\"customerId\\\": \\\"e2599a17-d1e2-476c-9672-b2ff008fa575\\\",\\r\\n    \\\"configurationId\\\": \\\"b2251a28-c218-4e2e-a787-b2f700ef0ecd\\\",\\r\\n    \\\"firstName\\\": \\\"Daly\\\",\\r\\n    \\\"lastName\\\": \\\"Khol\\\",\\r\\n    \\\"phone\\\": {\\r\\n        \\\"phoneType\\\": \\\"Home\\\",\\r\\n        \\\"phoneNumber\\\": \\\"7185551234\\\"\\r\\n    },\\r\\n    \\\"emailAddress\\\": \\\"dkhol@gmail.com\\\",\\r\\n    \\\"shippingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"billingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"nameOnCard\\\": \\\"Daly Khol\\\",\\r\\n    \\\"shippingType\\\": \\\"Normal\\\",\\r\\n   \\\"clientIdentifier\\\": \\\"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\\\"\\r\\n}\\r\\n\\r\\n\";\n \nreq.write(postData);\n \nreq.end();",
        "customLabel": ""
      },
      {
        "id": "3rq2taY2mRME1s3OYIro8",
        "language": "python",
        "code": "import requests\n \nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards\"\n \npayload = \"{\\r\\n    \\\"accountNumber\\\": \\\"158560897007\\\",\\r\\n    \\\"customerId\\\": \\\"e2599a17-d1e2-476c-9672-b2ff008fa575\\\",\\r\\n    \\\"configurationId\\\": \\\"b2251a28-c218-4e2e-a787-b2f700ef0ecd\\\",\\r\\n    \\\"firstName\\\": \\\"Daly\\\",\\r\\n    \\\"lastName\\\": \\\"Khol\\\",\\r\\n    \\\"phone\\\": {\\r\\n        \\\"phoneType\\\": \\\"Home\\\",\\r\\n        \\\"phoneNumber\\\": \\\"7185551234\\\"\\r\\n    },\\r\\n    \\\"emailAddress\\\": \\\"dkhol@gmail.com\\\",\\r\\n    \\\"shippingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"billingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"nameOnCard\\\": \\\"Daly Khol\\\",\\r\\n    \\\"shippingType\\\": \\\"Normal\\\",\\r\\n   \\\"clientIdentifier\\\": \\\"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\\\"\\r\\n}\\r\\n\\r\\n\"\nheaders = {\n  'Idempotency-key': 'b06ab5cc-553a-4fe4-ad78-751b5ff81f0e'\n}\n \nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n \nprint(response.text)",
        "customLabel": ""
      },
      {
        "id": "MDax0C0lKbRiPliyDWfkE",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n \nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards\")\n \nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n \nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"b06ab5cc-553a-4fe4-ad78-751b5ff81f0e\"\nrequest.body = \"{\\r\\n    \\\"accountNumber\\\": \\\"158560897007\\\",\\r\\n    \\\"customerId\\\": \\\"e2599a17-d1e2-476c-9672-b2ff008fa575\\\",\\r\\n    \\\"configurationId\\\": \\\"b2251a28-c218-4e2e-a787-b2f700ef0ecd\\\",\\r\\n    \\\"firstName\\\": \\\"Daly\\\",\\r\\n    \\\"lastName\\\": \\\"Khol\\\",\\r\\n    \\\"phone\\\": {\\r\\n        \\\"phoneType\\\": \\\"Home\\\",\\r\\n        \\\"phoneNumber\\\": \\\"7185551234\\\"\\r\\n    },\\r\\n    \\\"emailAddress\\\": \\\"dkhol@gmail.com\\\",\\r\\n    \\\"shippingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"billingAddress\\\": {\\r\\n        \\\"street1\\\": \\\"1 Roshar Ave\\\",\\r\\n        \\\"city\\\": \\\"Roshar\\\",\\r\\n        \\\"state\\\": \\\"NY\\\",\\r\\n        \\\"postalCode\\\": \\\"10001\\\",\\r\\n        \\\"countryCode\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"nameOnCard\\\": \\\"Daly Khol\\\",\\r\\n    \\\"shippingType\\\": \\\"Normal\\\",\\r\\n   \\\"clientIdentifier\\\": \\\"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\\\"\\r\\n}\\r\\n\\r\\n\"\n \nresponse = https.request(request)\nputs response.read_body",
        "customLabel": ""
      },
      {
        "id": "K_QJEgNQWF13Ivu2jxIgC",
        "language": "go",
        "code": "package main\n \nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n \nfunc main() {\n \n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards\"\n  method := \"POST\"\n \n  payload := strings.NewReader(`{`+\" \"+`\n    \"accountNumber\": \"158560897007\",`+\" \"+`\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",`+\" \"+`\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",`+\" \"+`\n    \"firstName\": \"Daly\",`+\" \"+`\n    \"lastName\": \"Khol\",`+\" \"+`\n    \"phone\": {`+\" \"+`\n        \"phoneType\": \"Home\",`+\" \"+`\n        \"phoneNumber\": \"7185551234\"`+\" \"+`\n    },`+\" \"+`\n    \"emailAddress\": \"dkhol@gmail.com\",`+\" \"+`\n    \"shippingAddress\": {`+\" \"+`\n        \"street1\": \"1 Roshar Ave\",`+\" \"+`\n        \"city\": \"Roshar\",`+\" \"+`\n        \"state\": \"NY\",`+\" \"+`\n        \"postalCode\": \"10001\",`+\" \"+`\n        \"countryCode\": \"US\"`+\" \"+`\n    },`+\" \"+`\n    \"billingAddress\": {`+\" \"+`\n        \"street1\": \"1 Roshar Ave\",`+\" \"+`\n        \"city\": \"Roshar\",`+\" \"+`\n        \"state\": \"NY\",`+\" \"+`\n        \"postalCode\": \"10001\",`+\" \"+`\n        \"countryCode\": \"US\"`+\" \"+`\n    },`+\" \"+`\n    \"nameOnCard\": \"Daly Khol\",`+\" \"+`\n    \"shippingType\": \"Normal\",`+\" \"+`\n   \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\"`+\" \"+`\n}`+\" \"+`\n`+\" \"+`\n`)\n \n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n \n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"b06ab5cc-553a-4fe4-ad78-751b5ff81f0e\")\n \n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n \n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Unactivated\",\n    \"statusReasonCode\": \"NotSet\",\n    \"processorCardStatus\": \"I\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Daly Khol\",\n    \"isPinSet\": false,\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"OrderPending\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"createdAt\": \"2025-06-18T02:26:49.6169047-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T02:26:49.6169047-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Cardholder's deposit account number",
        "": "Cardholder's deposit account number"
      },
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format.",
        "": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format."
      },
      {
        "name": "configurationId",
        "kind": "required",
        "type": "string",
        "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
        "": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format."
      },
      {
        "name": "firstName",
        "kind": "required",
        "type": "string",
        "description": "Cardholder first name.\n60 characters maximum.",
        "": "Cardholder first name.\n60 characters maximum."
      },
      {
        "name": "middleName",
        "kind": "optional",
        "type": "string",
        "description": "Cardholder middle name.\n60 characters maximum.",
        "": "Cardholder middle name.\n60 characters maximum."
      },
      {
        "name": "lastName",
        "kind": "required",
        "type": "string",
        "description": "Cardholder last name.\n60 characters maximum.",
        "": "Cardholder last name.\n60 characters maximum."
      },
      {
        "name": "suffix",
        "kind": "optional",
        "type": "string",
        "description": "Cardholder name suffix.\n60 characters maximum.",
        "": "Cardholder name suffix.\n60 characters maximum."
      },
      {
        "name": "phone",
        "kind": "optional",
        "type": "Object",
        "description": "Details of the cardholder phone contact information",
        "children": [
          {
            "name": "phoneType",
            "kind": "required",
            "type": "string",
            "description": "Phone number is for:\n- Home\n- Mobile\n- Work"
          },
          {
            "name": "phoneNumber",
            "kind": "required",
            "type": "string",
            "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
          }
        ]
      },
      {
        "name": "emailAddress",
        "kind": "optional",
        "type": "string",
        "description": "Cardholder email address.\n60 characters maximum.",
        "": "Cardholder email address.\n60 characters maximum."
      },
      {
        "name": "shippingAddress",
        "kind": "required",
        "type": "Object",
        "description": "Address to which a physical card is shipped",
        "children": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional field for address information.\n60 characters maximum"
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Name of the cardholder's city.\n60 characters maximum."
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "Cardholder's 2-character state code"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder's US postal (ZIP) code.\n10 characters maximum."
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character ISO country code"
          }
        ],
        "schema": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional field for address information.\n60 characters maximum"
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Name of the cardholder's city.\n60 characters maximum."
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "Cardholder's 2-character state code"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder's US postal (ZIP) code.\n10 characters maximum."
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character ISO country code"
          }
        ]
      },
      {
        "name": "billingAddress",
        "kind": "required",
        "type": "Object",
        "description": "Address to send credit card bills",
        "children": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation.\n60 characters maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional field for address information\n\n60 characters maximum"
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Name of the cardholder's city\n\n60 characters maximum"
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "Cardholder's 2-character state code"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder's US postal (ZIP) code"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character ISO country code"
          }
        ],
        "schema": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation.\n60 characters maximum."
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Additional field for address information\n\n60 characters maximum"
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Name of the cardholder's city\n\n60 characters maximum"
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "Cardholder's 2-character state code"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder's US postal (ZIP) code"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "Cardholder 2-character ISO country code"
          }
        ]
      },
      {
        "name": "nameOnCard",
        "kind": "required",
        "type": "string",
        "description": "Cardholder name as it appears on the card.\n23 characters maximum.",
        "": "Cardholder name as it appears on the card.\n23 characters maximum."
      },
      {
        "name": "companyNameOnCard",
        "kind": "optional",
        "type": "string",
        "description": "If the card is connected to a business account, the cardholder company name.\n23 characters maximum.",
        "": "If the card is connected to a business account, the cardholder company name.\n23 characters maximum."
      },
      {
        "name": "shippingType",
        "kind": "required",
        "type": "string",
        "description": "How the card is shipped:\n- Normal\n- Expedited",
        "children": []
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum.",
        "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum."
      },
      {
        "name": "cardDesignId",
        "kind": "optional",
        "type": "string",
        "description": "Identifier associated to the card design to use when overriding a program's default card design",
        "": "Identifier associated to the card design to use when overriding a program's default card design"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format. See also here.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross RiverID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n50 characters maximum.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's Unique ID for the cardholder",
      "children": []
    },
    {
      "name": "cardDesignId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier associated to the card design to use when overriding a program's default card design",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cards",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Activate card by ID
[path] Cards/APIs/Card Issuing APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Cards.Card.Activated](docId\:paDKAtuyIo5w0YsAexxwl)&#x20;

## API reference

Cards can only be used once they are activated. After creation, the card status is Unactivated. Once you are ready to activate the card for use, call the Activate Card ID endpoint. This is the preferred way to activate a card.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/cards/{id}/activate",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/activate",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location --globoff --request POST 'https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/activate?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a' \\\n--header 'Idempotency-key: a5b1b129-421e-441b-9661-ec1c0396965e' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/cards/{id}/activate?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a',\n  'headers': {\n    'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/activate?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n\npayload = \"\"\nheaders = {\n  'Idempotency-key': 'a5b1b129-421e-441b-9661-ec1c0396965e'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/activate?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"a5b1b129-421e-441b-9661-ec1c0396965e\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/cards/{id}/activate?id=8c6a53e0-83ad-4b76-b446-b300006a3e6a\"\n  method := \"POST\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"a5b1b129-421e-441b-9661-ec1c0396965e\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"8c6a53e0-83ad-4b76-b446-b300006a3e6a\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"processorCardId\": \"827277613081398\",\n    \"accountNumber\": \"158560897007\",\n    \"status\": \"Active\",\n    \"statusReasonCode\": \"NotSet\",\n    \"processorCardStatus\": \"B\",\n    \"firstName\": \"Daly\",\n    \"lastName\": \"Khol\",\n    \"shippingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"billingAddress\": {\n        \"street1\": \"1 Roshar Ave\",\n        \"city\": \"Roshar\",\n        \"state\": \"NY\",\n        \"postalCode\": \"10001\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": {\n        \"phoneType\": \"Home\",\n        \"phoneNumber\": \"7185551234\"\n    },\n    \"emailAddress\": \"dkhol@gmail.com\",\n    \"nameOnCard\": \"Daly Khol\",\n    \"panLastFour\": \"4558\",\n    \"isPinSet\": false,\n    \"expirationDate\": \"2028-06-18\",\n    \"adminBlocked\": false,\n    \"fraudSuspect\": false,\n    \"configurationId\": \"b2251a28-c218-4e2e-a787-b2f700ef0ecd\",\n    \"category\": \"Debit\",\n    \"paymentInstrument\": \"PhysicalCombo\",\n    \"processor\": \"P1\",\n    \"shippingType\": \"Normal\",\n    \"orderStatus\": \"Completed\",\n    \"replacementStatus\": \"NotApplicable\",\n    \"customerId\": \"e2599a17-d1e2-476c-9672-b2ff008fa575\",\n    \"clientIdentifier\": \"b06ab5cc-553a-4fe4-ad78-751b5ff81f00\",\n    \"processorCustomerId\": \"0CIF7L2973U98WT4E652\",\n    \"createdAt\": \"2025-06-18T02:26:49.617-04:00\",\n    \"initialActivation\": \"2025-06-18T00:00:00-04:00\",\n    \"activatedAt\": \"2025-06-18T02:27:58.8133927-04:00\",\n    \"lastModifiedAt\": \"2025-06-18T02:27:58.8133927-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "Product ID of the cardholder deposit account. This ID is in the GUID format. See also here.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "processorCardId",
      "kind": "optional",
      "type": "string",
      "description": "Card processor's unique identifier",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Deposit account number associated with the card",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Card activation status:\n\n- Unactivated\n- Active\n- Suspended\n- Closed",
      "children": []
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the card status:\n\n- NotSet\n- Damaged\n- Expired\n- Lost\n- FraudCompromised\n- Return\n- NewEnrollment\n- Stolen\n- AdminBlocked\n- FraudBlocked",
      "children": []
    },
    {
      "name": "processorCardStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card in the processor's system",
      "children": []
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder first name",
      "children": []
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder middle name",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder last name",
      "children": []
    },
    {
      "name": "suffix",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder name suffix",
      "children": []
    },
    {
      "name": "birthDate",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder birthdate",
      "children": []
    },
    {
      "name": "shippingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where a physical card is sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city ",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "billingAddress",
      "kind": "optional",
      "type": "Object",
      "description": "Address where the credit card bills are sent",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Primary location details of cardholder. This needs to be a street name and house or building number. Do not enter a PO box. Do not use any punctuation. 60 characters maximum."
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Additional field for address information"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the cardholder's city"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's 2-character state code"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder's US postal (ZIP) code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder 2-character ISO country code"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the cardholder's phone (type and number)",
      "children": [
        {
          "name": "phoneType",
          "kind": "optional",
          "type": "string",
          "description": "Phone number is for:\n\n- Home\n- Mobile\n- Work"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "Cardholder phone number. 10-15 digits, no spaces or other characters."
        }
      ]
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder email address",
      "children": []
    },
    {
      "name": "nameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "Full cardholder name as written on card",
      "children": []
    },
    {
      "name": "companyNameOnCard",
      "kind": "optional",
      "type": "string",
      "description": "If defined, the name of the cardholder company",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of the PAN, the primary account number, which appears on the physical card",
      "children": []
    },
    {
      "name": "previousCardId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the previous card if the current card is a replacement",
      "children": []
    },
    {
      "name": "isPinSet",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the PIN number is set for the card, otherwise false.",
      "children": []
    },
    {
      "name": "expirationDate",
      "kind": "optional",
      "type": "string",
      "description": "Card expiration date. Format: YYYY-MM-DD",
      "children": []
    },
    {
      "name": "adminBlocked",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the card has been blocked by the administrator, otherwise false. This block cannot be removed.",
      "children": []
    },
    {
      "name": "fraudSuspect",
      "kind": "optional",
      "type": "Boolean",
      "description": "True, if the card was blocked by the processor due to potential fraud, otherwise false.",
      "children": []
    },
    {
      "name": "configurationId",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the card configuration profile the card is based on. You get this ID from Cross River. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "category",
      "kind": "optional",
      "type": "string",
      "description": "Type of card:\n\n- Debit\n- Credit\n- Prepaid",
      "children": []
    },
    {
      "name": "paymentInstrument",
      "kind": "optional",
      "type": "string",
      "description": "Card payment instrument type:\n\n- PhysicalMSR\n- PhysicalICC\n- PhysicalContactless\n- PhysicalCombo\n- VirtualPan",
      "children": []
    },
    {
      "name": "processor",
      "kind": "optional",
      "type": "string",
      "description": "The name of the card processor:\n\n- i2c\n- P1",
      "children": []
    },
    {
      "name": "shippingType",
      "kind": "optional",
      "type": "string",
      "description": "How the card is shipped:\n\n- Normal\n- Expedited",
      "children": []
    },
    {
      "name": "orderStatus",
      "kind": "optional",
      "type": "string",
      "description": "Status of the card order:\n\n- OrderPending (0)\n- Completed (1)\n- Failed (2)\n- Authorizing (3)\n- AuthorizationFailed (4)\n- AuthorizationCompleted (5)",
      "children": []
    },
    {
      "name": "replacementStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the card is a replacement card and the status of the replacement:\n\n- NotApplicable\n- Pending\n- Completed\n- Failed",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique Cross River ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "processorCustomerId",
      "kind": "optional",
      "type": "string",
      "description": "Processor's Unique ID for the cardholder",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "suspendedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time when the card was suspended. If not suspended, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "closedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the card was closed. If not closed, null. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "initialActivation",
      "kind": "optional",
      "type": "string",
      "description": "Date the card was activated. The time is set to midnight at the start of that day.",
      "children": []
    },
    {
      "name": "activatedAt",
      "kind": "optional",
      "type": "string",
      "description": "Exact date and time the card was activated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "openedAt",
      "kind": "optional",
      "type": "string",
      "description": "Null",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1cardsidactivate",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Request and response codes
[path] Webhooks intro/COS webhooks/

## Registration status&#x20;

The following table describes the status field returned in a webhook registration.

| Status     | Description                                                                                                                                          |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| Active     | Everything is OK.                                                                                                                                    |
| Suspended  | Something went wrong. Several attempts to send events to this registration failed. No further attempts will be made until registration is restarted. |
| Restarting | We are attempting to restart this registration. An event must be successfully transmitted before the status will transition back to Active.          |

## Registration types

The following table describes the type of webhook event you want to register for.

| Type | Description                                                                                                                                      |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| Push | Events will be pushed to a partner endpoint. Any 2xx response is expected in order for it to be considered successful (default).                 |
| Poll | Events will be consumed by partner polling the events API periodically and calling acknowledge API method for each event successfully processed. |
| File | Events will be sent to the partner via [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25) in a CSV file once per day                                           |

## Event status

The following table describes the status of the webhook event.

| Status  | Description                                                                                                     |
| ------- | --------------------------------------------------------------------------------------------------------------- |
| Pending | Event has been created, but no attempt to send it has been made yet                                             |
| Success | Event was successfully delivered to the registered URL                                                          |
| Failed  | We could not deliver the event to the registered URL. See the event logs for more detail on the failure reason. |

## Format

The following table describes the amount of detail in the webhook event payload that you request.

| Format   | Description                                                                                                                                                                                                                                                                  |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Basic    | Webhook is delivered with an object containing resource identifiers related to that event                                                                                                                                                                                    |
| Extended | With this format you get everything in a 'Basic' event, in addition you will receive a 'Details' object containing various meta data pertaining to each resource. For example, on the `ACH.Return.Received` event you would receive the Return Code and Original Payment ID. |


[title] Add email
[path] Customer management/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.Customer.Email.Added](docId\:rl8xMrOEgISTYbmE-Y98D)&#x20;

## API reference

Adds an email address to the customer record.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/cm/customers/{customerId}/emails",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/cm/customers/{customerId}/emails",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "xK0mDfrnuxTC3HLNjR8-M",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/emails' ^\n--data-raw '{\n  \"isPrimary\": true,\n  \"emailType\": \"Work\",\n  \"emailAddress\": \"bsanderson2@crossriver.com\"\n}\n\n'",
        "customLabel": ""
      },
      {
        "id": "M8UW6kpZkfUBriicsGKAe",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/emails',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"emailType\\\": \\\"Work\\\",\\r\\n  \\\"emailAddress\\\": \\\"bsanderson2@crossriver.com\\\"\\r\\n}\\r\\n\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "NODX906lIJhvoJponVP4L",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/emails\"\n\npayload = \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"emailType\\\": \\\"Work\\\",\\r\\n  \\\"emailAddress\\\": \\\"bsanderson2@crossriver.com\\\"\\r\\n}\\r\\n\\r\\n\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "UhYAJ4U8DKsESN6jyBmfx",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/emails\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"isPrimary\\\": true,\\r\\n  \\\"emailType\\\": \\\"Work\\\",\\r\\n  \\\"emailAddress\\\": \\\"bsanderson2@crossriver.com\\\"\\r\\n}\\r\\n\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "Fa3Ra4Qu_Jp9UzBxNEP3d",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/cm/customers/bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887/emails\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"isPrimary\": true,`+\"\n\"+`\n  \"emailType\": \"Work\",`+\"\n\"+`\n  \"emailAddress\": \"bsanderson2@crossriver.com\"`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xK0mDfrnuxTC3HLNjR8-M"
  },
  "results": {
    "languages": [
      {
        "id": "zuoamZSUzJOVAnQseRBuz",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"5dbc6a02-f7c8-4eee-9fe3-b30400c236e5\",\n    \"customerId\": \"bbe09f0a-f38b-4daa-a0a2-b2ff00f4e887\",\n    \"isPrimary\": true,\n    \"status\": \"Active\",\n    \"emailType\": \"Work\",\n    \"emailAddress\": \"bsanderson2@crossriver.com\",\n    \"createdAt\": \"2025-06-22T07:47:06.7861023-04:00\",\n    \"lastModifiedAt\": \"2025-06-22T07:47:06.7861023-04:00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\"\n}"
      },
      {
        "id": "xQQCnFiJEX8NYnws8SLeG",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2227,\n            \"message\": \"Email address already exists\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xQQCnFiJEX8NYnws8SLeG"
  },
  "request": {
    "pathParameters": [
      {
        "name": "customerId",
        "kind": "required",
        "type": "string",
        "description": "The customer ID of the customer record to update",
        "": "The customer ID of the customer record to update"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "isPrimary",
        "kind": "required",
        "type": "boolean",
        "description": "True if this is the primary email record for this customer. Otherwise, false.",
        "": "True if this is the primary email record for this customer. Otherwise, false."
      },
      {
        "name": "emailType",
        "kind": "required",
        "type": "string",
        "description": "Email address type is:\n- Personal\n- Work\n- Other",
        "": "Email address type is:\n- Personal\n- Work\n- Other"
      },
      {
        "name": "emailAddress",
        "kind": "required",
        "type": "string",
        "description": "Customer's primary email address. This must be a minimum of 6 characters, and a maximum of 255.",
        "": "required"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "COS ID for the record, in GUID format"
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The customerId of the customer record being updated",
      "children": []
    },
    {
      "name": "isPrimary",
      "kind": "optional",
      "type": "boolean",
      "description": "True if this is the primary email record for this customer. Otherwise, false.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the customer record:\n- Inactive\n- Active",
      "children": []
    },
    {
      "name": "emailType",
      "kind": "optional",
      "type": "string",
      "description": "Email address type is:\n- Personal\n- Work\n- Other",
      "children": []
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Customer's primary email address",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1cmcustomerscustomeridemails",
  "legacyHash": "Z2UswgK_wZ756ERa8KUqx"
}
```
:::


[title] Customer management
[path] /

:::CtaButton{label="Customer onboarding" docId="Nt23Lv6UL3hwB2r5bz4K9" openInNewTab="true"}

:::

## Customer management APIs

Use Cross River APIs to manage your customer information (called a customer record). You need a customer record, for example, to open a deposit account or create a debit card.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ)  to control presentation of your results.

## API calls

| Action                                                     | API                                                               | Description                                                     |
| ---------------------------------------------------------- | ----------------------------------------------------------------- | --------------------------------------------------------------- |
| [Add personal customer](docId\:isgkj7NIS9jHmyu3UPUBk)      | `POST /core/v1/cm/customers`                                      | Create new personal customer record                             |
|   [Add business customer](docId:_txdfNUEc5BUraIyWib5F)     | `POST /core/v1/cm/customers`                                      | Create new business customer record                             |
| [Customer by ID](docId\:x36Ga61oFeFCQBnmUG0sS)             | `GET /core/v1/cm/customers/{id}`                                  | Retrieve a customer record by id                                |
| [Add beneficial owner](docId\:EOH9pzYARQnyhe9mh979u)       | `POST /core/v1/cm/customers/{customerId}/beneficial-owners`       | Add a beneficial owner to a business customer record            |
| [Update beneficial owner](docId\:kR2QhF0-bTklavDAO6GXI)    | `POST /core/v1/cm/customers/{customerId}/beneficial-owners/{id}`  | Update the beneficial owner record                              |
| [Add identification](docId\:QjfGSujVfqoxCpJiqzLfF)         | `POST /core/v1/cm/customers/{customerId}/identifications`         | Add ID details                                                  |
| [Add address](docId\:tWpyIp5zxe-kjEJqEUqfc)                | `POST /core/v1/cm/customers/{customerId}/addresses`               | Update customer address                                         |
| [Add phone](docId:5bNWSnxsqTB_GtuntlnPW)                   | `POST /core/v1/cm/customers/{customerId}/phones`                  | Update customer phone number                                    |
| [Add email](docId\:ghuoBTAsQ0vfLcEaWXPte)                  | `POST /core/v1/cm/customers/{customerId}/email`                   | Update customer email                                           |
| [Update name](docId\:oZgr8jG6O3eBhmieFcOic)                | `PUT /core/v1/cm/customers/{customerId}/name`                     | Update customer name                                            |
| [Update profile](docId:9O3Q5vAMhily1ufwtKENh)              | `PUT /core/v1/cm/customers/{id}/profile`                          | Update the customer record banking profile                      |
| [Update due diligence info](docId\:E6pfz1-BGdTt1VFDx_prh)  | `PUT /core/v1/cm/customer/{id}/due-diligence`                     | Update due diligence information for a personal customer record |
| [Deactivate customer](docId\:TRaekwV-r6EIhodKucu0z)        | `DELETE /core/v1/cm/customers/{id}`                               | Deactivate a customer                                           |

## Tutorials

See our API tutorials to learn how to:

- [Onboard a customer](docId\:iXWQHkcTI4dw4d_LoutGh): Create a basic customer record in our system. Most products and services require a customer record for each of your customers.
- [Add a beneficial owner](docId\:dHPmHjC04E5WUq34V59Iu): Associate a beneficial owner with a business customer record or use the beneficial owner field for BIN sponsorship.
- [Add identification](docId\:Gk2cTwkzVsjNTRDhQ67E5): Add the details of an identification document such as a driver's license or passport to a customer record.


[title] Simulate authentication
[path] Cards/APIs/Authentication APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- Cards.3ds.OtpTransactionReceived
- Cards.3ds.OutOfBandTransactionReceived

## API reference

Simulates a card transaction 3DS authentication with OTP (One-Time Passcode). The OTP will be sent to your chosen webhook URL or OOB (Out-of-band) that interacts with a 3rd party application.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/3ds/authenticate",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/3ds/authenticate",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/3ds/authenticate' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q' \\\n--data '{\n  \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",\n  \"authenticationType\": \"OTPSMS\",\n  \"transactionAmount\": 10,\n  \"transactionCurrency\": \"EUR\",\n  \"merchantDetails\": {\n    \"name\": \"ACME\",\n    \"country\": \"GB\"\n  }\n \n}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'POST',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/3ds/authenticate',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q'\n  },\n  body: JSON.stringify({\n    \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",\n    \"authenticationType\": \"OTPSMS\",\n    \"transactionAmount\": 10,\n    \"transactionCurrency\": \"EUR\",\n    \"merchantDetails\": {\n      \"name\": \"ACME\",\n      \"country\": \"GB\"\n    }\n  })\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/3ds/authenticate\"\n\npayload = json.dumps({\n  \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",\n  \"authenticationType\": \"OTPSMS\",\n  \"transactionAmount\": 10,\n  \"transactionCurrency\": \"EUR\",\n  \"merchantDetails\": {\n    \"name\": \"ACME\",\n    \"country\": \"GB\"\n  }\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/3ds/authenticate\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q\"\nrequest.body = JSON.dump({\n  \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",\n  \"authenticationType\": \"OTPSMS\",\n  \"transactionAmount\": 10,\n  \"transactionCurrency\": \"EUR\",\n  \"merchantDetails\": {\n    \"name\": \"ACME\",\n    \"country\": \"GB\"\n  }\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/3ds/authenticate\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",`+\"\n\"+`\n  \"authenticationType\": \"OTPSMS\",`+\"\n\"+`\n  \"transactionAmount\": 10,`+\"\n\"+`\n  \"transactionCurrency\": \"EUR\",`+\"\n\"+`\n  \"merchantDetails\": {`+\"\n\"+`\n    \"name\": \"ACME\",`+\"\n\"+`\n    \"country\": \"GB\"`+\"\n\"+`\n  }`+\"\n\"+`\n `+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "VODzcJ3eHW5F3IJ_oHYad",
        "language": "202_MESSAGE",
        "code": ""
      },
      {
        "id": "TfGHBr1GsKFBTb4ZwPqHe",
        "language": "202",
        "code": ""
      }
    ],
    "selectedLanguageId": "TfGHBr1GsKFBTb4ZwPqHe"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "required"
      },
      {
        "name": "authenticationType",
        "kind": "optional",
        "type": "string",
        "description": "Select from the following types:\n\nOTPSMS:  The customer receives a one-time password via SMS text message and enters it to authenticate the transaction.\nOTPEMAIL: The customer receives a one-time password via email and enters it to authenticate the transaction.\nOUTOFBANDOTHER: The customer authenticates using an external method (mobile app, phone call, etc.). Authentication must be explicitly validated via API using data from a webhook callback.\n",
        "": "Select from the following types:\n\nOTPSMS:  The customer receives a one-time password via SMS text message and enters it to authenticate the transaction.\nOTPEMAIL: The customer receives a one-time password via email and enters it to authenticate the transaction.\nOUTOFBANDOTHER: The customer authenticates using an external method (mobile app, phone call, etc.). Authentication must be explicitly validated via API using data from a webhook callback.\n"
      },
      {
        "name": "transactionAmount",
        "kind": "optional",
        "type": "number",
        "description": "Funds requested by the cardholder in the local currency of either the acquirer or source location of the transaction, exclusive of the transaction fee amount.",
        "": "Funds requested by the cardholder in the local currency of either the acquirer or source location of the transaction, exclusive of the transaction fee amount."
      },
      {
        "name": "transactionCurrency",
        "kind": "optional",
        "type": "string",
        "description": "3-character ISO currency code (e.g., USD, EUR). Defaults to USD is not specified.",
        "": "3-character ISO currency code (e.g., USD, EUR). Defaults to USD is not specified."
      },
      {
        "name": "merchantDetails",
        "kind": "optional",
        "type": "object",
        "description": "Description of merchant details.",
        "": "Description of merchant details.",
        "children": [
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Name of the merchant."
          },
          {
            "name": "country",
            "kind": "optional",
            "type": "string",
            "description": "Country where merchant is."
          }
        ],
        "schema": [
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Name of the merchant."
          },
          {
            "name": "country",
            "kind": "optional",
            "type": "string",
            "description": "Country where merchant is."
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulate3dsauthenticate",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Send batch
[path] Payments/ACH/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:&#x20;

- Ach.Batch.Imported

## API reference

Submits 2 or more transactions as a batch. Note that each batch payment must be originated from the same Cross River account number. If originating from multiple Cross River accounts, the transactions from each account must be submitted as separate batches. For each transaction, include the request attributes in the `payments` object of the request as shown in the code snippet.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /ach/v1/client-batches",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/ach/v1/client-batches",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "Zy8WzwLQagFjpEg_P79-v",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/client-batches',\n  'headers': {\n    'Idempotency-key': '9edef3ad-8084-45d2-ab71-c0d706cd221a'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"payments\\\": [\\r\\n    {\\r\\n      \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"12345678\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"Peter Griffin\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 115,\\r\\n      \\\"serviceType\\\": \\\"Standard\\\"\\r\\n      },\\r\\n{\\r\\n      \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"65325148\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"Tommy Jones\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 117,\\r\\n      \\\"serviceType\\\": \\\"SameDay\\\"\\r\\n    },\\r\\n{\\r\\n      \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"65325148\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"John Wick\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 119,\\r\\n      \\\"serviceType\\\": \\\"SameDay\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "ZQaCZjWgazd-5vEDBByLb",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/client-batches\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"9edef3ad-8084-45d2-ab71-c0d706cd221a\"\nrequest.body = \"{\\r\\n  \\\"payments\\\": [\\r\\n    {\\r\\n      \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"12345678\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"Peter Griffin\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 115,\\r\\n      \\\"serviceType\\\": \\\"Standard\\\"\\r\\n      },\\r\\n{\\r\\n      \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"65325148\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"Tommy Jones\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 117,\\r\\n      \\\"serviceType\\\": \\\"SameDay\\\"\\r\\n    },\\r\\n{\\r\\n      \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"65325148\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"John Wick\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 119,\\r\\n      \\\"serviceType\\\": \\\"SameDay\\\"\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "Ul2uK7a5o3H3EQjRJUE45",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/client-batches\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"payments\": [`+\"\n\"+`\n    {`+\"\n\"+`\n      \"accountNumber\": \"2151546989\",`+\"\n\"+`\n      \"receiver\": {`+\"\n\"+`\n        \"routingNumber\": \"021000021\",`+\"\n\"+`\n        \"accountNumber\": \"12345678\",`+\"\n\"+`\n        \"accountType\": \"Checking\",`+\"\n\"+`\n        \"name\": \"Peter Griffin\"`+\"\n\"+`\n      },`+\"\n\"+`\n      \"secCode\": \"PPD\",`+\"\n\"+`\n      \"description\": \"string\",`+\"\n\"+`\n      \"transactionType\": \"Push\",`+\"\n\"+`\n      \"amount\": 115,`+\"\n\"+`\n      \"serviceType\": \"Standard\"`+\"\n\"+`\n      },`+\"\n\"+`\n{`+\"\n\"+`\n      \"accountNumber\": \"2151546989\",`+\"\n\"+`\n      \"receiver\": {`+\"\n\"+`\n        \"routingNumber\": \"021000021\",`+\"\n\"+`\n        \"accountNumber\": \"65325148\",`+\"\n\"+`\n        \"accountType\": \"Checking\",`+\"\n\"+`\n        \"name\": \"Tommy Jones\"`+\"\n\"+`\n      },`+\"\n\"+`\n      \"secCode\": \"PPD\",`+\"\n\"+`\n      \"description\": \"string\",`+\"\n\"+`\n      \"transactionType\": \"Push\",`+\"\n\"+`\n      \"amount\": 117,`+\"\n\"+`\n      \"serviceType\": \"SameDay\"`+\"\n\"+`\n    },`+\"\n\"+`\n{`+\"\n\"+`\n      \"accountNumber\": \"2151546989\",`+\"\n\"+`\n      \"receiver\": {`+\"\n\"+`\n        \"routingNumber\": \"021000021\",`+\"\n\"+`\n        \"accountNumber\": \"65325148\",`+\"\n\"+`\n        \"accountType\": \"Checking\",`+\"\n\"+`\n        \"name\": \"John Wick\"`+\"\n\"+`\n      },`+\"\n\"+`\n      \"secCode\": \"PPD\",`+\"\n\"+`\n      \"description\": \"string\",`+\"\n\"+`\n      \"transactionType\": \"Push\",`+\"\n\"+`\n      \"amount\": 119,`+\"\n\"+`\n      \"serviceType\": \"SameDay\"`+\"\n\"+`\n    }`+\"\n\"+`\n  ]`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"9edef3ad-8084-45d2-ab71-c0d706cd221a\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      },
      {
        "id": "KQMpS0evzQF9ahw87-0O8",
        "language": "python",
        "code": ""
      }
    ],
    "selectedLanguageId": "Zy8WzwLQagFjpEg_P79-v"
  },
  "results": {
    "languages": [
      {
        "id": "kuJiqc9DmRfZQAQ91s0Q2",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"c51248db-9e07-4439-ace4-b1d800fd803a\",\n  \"referenceId\": \"CB239TO0YK9IF\",\n  \"status\": \"Processing\",\n  \"accountNumber\": \"2207975570\",\n  \"paymentCount\": 2,\n  \"debitTotal\": 0,\n  \"creditTotal\": 87500,\n  \"importCount\": 0,\n  \"clientIdentifier\": \"3cbc5d4b-7fe5-4c3c-9187-c5c0cd94d811\",\n  \"productId\": \"cc62e17f-5912-483e-9e42-aed30112fbb6\",\n  \"partnerId\": \"1e5d3f04-ae24-4af6-9e30-aecf012b99dd\",\n  \"createdAt\": \"2024-08-26T11:22:58.1078604-04:00\",\n  \"lastModifiedAt\": \"2024-08-26T11:22:58.1078604-04:00\",\n  \"paymentIdentifiers\": [\n    \"993a2f38-3e51-4637-a566-b1d800fd803a\",\n    \"a09f25b3-0f23-4b6e-bb11-b1d800fd803a\"\n  ]\n}"
      }
    ],
    "selectedLanguageId": "kuJiqc9DmRfZQAQ91s0Q2"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n\nUse this field to enter a clientIdentifier for the entire batch. You can also add a separate clientIdentifier for each payment.",
        "": "optional"
      },
      {
        "name": "payments",
        "kind": "optional",
        "type": "object",
        "description": "The information for each payment in the batch.",
        "children": [
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number for payment originator"
          },
          {
            "name": "originator",
            "kind": "optional",
            "type": "object",
            "description": "Details about the entity sending the payment. If the account originating the payment is enabled to provide this information according to the supplied account number, all the values should be null. If these values are supplied in the request they override the originator profile defined for the account.",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of the originator of the transaction. Nacha refers to this as Company Name . 35 character maximum unless the secCode is IAT. In that case the maximum is only 16 characters."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Originator Identification. Nacha refers to this as the Company Identification . 10 character maximum."
              },
              {
                "name": "data",
                "kind": "optional",
                "type": "string",
                "description": "Originator Data. Nacha refers to this as Company Discretionary Data. 20 character maximum."
              }
            ]
          },
          {
            "name": "receiver",
            "kind": "required",
            "type": "object",
            "description": "In the case of Pull payments, this is the account the funds are being pulled from.",
            "children": [
              {
                "name": " routingNumber",
                "kind": "required",
                "type": "string",
                "description": "Federal routing number for the receiver bank"
              },
              {
                "name": "accountNumber",
                "kind": "required",
                "type": "string",
                "description": "Account number for the receiver. Must be 7 digits. For account numbers with 5 or 6 digits, add 0s to the beginning of the account number."
              },
              {
                "name": "accountType",
                "kind": "required",
                "type": "string",
                "description": "Deposit account type: Checking, Savings, GeneralLedger, Loan"
              },
              {
                "name": "name",
                "kind": "optional",
                "type": "string",
                "description": "Receiver name. Maximum 22 characters."
              },
              {
                "name": "identification",
                "kind": "optional",
                "type": "string",
                "description": "Receiver Identification. Nacha refers to this as the Individual Identification Number. 15 character maximum."
              }
            ]
          },
          {
            "name": "secCode",
            "kind": "required",
            "type": "string",
            "description": "Standard Entry Class (SEC) codes required by Nacha for every ACH transaction."
          },
          {
            "name": "description",
            "kind": "required",
            "type": "string",
            "description": "Description of the payment. Maximum 10 characters."
          },
          {
            "name": "transactionType",
            "kind": "required",
            "type": "string",
            "description": "Sending or requesting funds:\n- Push (originator is sending funds—debit)\n- Pull (originator is receiving funds—credit)"
          },
          {
            "name": "amount",
            "kind": "required",
            "type": "integer",
            "description": "Dollar amount of payment in positive integral cents. For example, $1.00 appears as 100."
          },
          {
            "name": " serviceType",
            "kind": "required",
            "type": "string",
            "description": "When the payment completes:\n\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)"
          },
          {
            "name": "fedBatchWindow",
            "kind": "optional",
            "type": "integer",
            "description": ""
          },
          {
            "name": "extendedDetails",
            "kind": "optional",
            "type": "object",
            "description": "ACH-specific details.\n\nIf the transactionType is pull and secCode is WEB you must include a paymentType value in this object.\n\nIf the secCode is POS you must include a cardTransactionType value.\n\nLearn more on the Nacha site.",
            "children": [
              {
                "name": "authCode",
                "kind": "optional",
                "type": "string",
                "description": "Authorization code related to card-based transactions"
              },
              {
                "name": "cardAccountNumber",
                "kind": "optional",
                "type": "string",
                "description": "Card account number used in the transaction"
              },
              {
                "name": "cardExpDate",
                "kind": "optional",
                "type": "string",
                "description": "Expiration date of the card used"
              },
              {
                "name": "cardTransactionType",
                "kind": "optional",
                "type": "string",
                "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
              },
              {
                "name": "checkSerialNumber",
                "kind": "optional",
                "type": "string",
                "description": "Serial number for check-based transactions"
              },
              {
                "name": "docReferenceNumber",
                "kind": "optional",
                "type": "string",
                "description": "Document reference number associated with the transaction"
              },
              {
                "name": "itemType",
                "kind": "optional",
                "type": "string",
                "description": "Type of financial item, for example, Check or Card"
              },
              {
                "name": "networkIdentification",
                "kind": "optional",
                "type": "string",
                "description": "Network through which the transaction was processed"
              },
              {
                "name": "paymentType",
                "kind": "optional",
                "type": "string",
                "description": "Payment types are a single character, and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
              },
              {
                "name": "processControl",
                "kind": "optional",
                "type": "string",
                "description": "Internal Cross River processing control code"
              },
              {
                "name": "reference1",
                "kind": "optional",
                "type": "string",
                "description": "Reference field for reconciliation"
              },
              {
                "name": "reference2",
                "kind": "optional",
                "type": "string",
                "description": "Reference field for reconciliation"
              },
              {
                "name": "researchNumber",
                "kind": "optional",
                "type": "string",
                "description": "Research ID for dispute or trace purposes"
              },
              {
                "name": "terminalIdentification",
                "kind": "optional",
                "type": "string",
                "description": "ID of the terminal where the transaction occurred"
              },
              {
                "name": "terminalLocation",
                "kind": "optional",
                "type": "string",
                "description": "Location descriptor of the terminal"
              },
              {
                "name": "terminalCity",
                "kind": "optional",
                "type": "string",
                "description": "City where the terminal is located"
              },
              {
                "name": "terminalState",
                "kind": "optional",
                "type": "string",
                "description": "State where the terminal is located"
              },
              {
                "name": "transactionDate",
                "kind": "optional",
                "type": "string",
                "description": "Date the transaction happened"
              },
              {
                "name": "transactionDesc",
                "kind": "optional",
                "type": "string",
                "description": "Additional description of the transaction"
              },
              {
                "name": "transactionSerial",
                "kind": "optional",
                "type": "string",
                "description": "Serial number of the transaction"
              },
              {
                "name": "transactionTime",
                "kind": "optional",
                "type": "string",
                "description": "Transaction timestamp"
              }
            ]
          },
          {
            "name": "iatDetails",
            "kind": "optional",
            "type": "object",
            "description": "International ACH details. Required if the secCode is IAT.\nDo not enter values for these attributes for any other secCode.",
            "children": [
              {
                "name": "originator",
                "kind": "optional",
                "type": "object",
                "description": "Payment sender details",
                "children": [
                  {
                    "name": "address",
                    "kind": "required",
                    "type": "string",
                    "description": "Street or post office box address. 35 characters maximum."
                  },
                  {
                    "name": "city",
                    "kind": "required",
                    "type": "string",
                    "description": "City full name. 33 characters maximum."
                  },
                  {
                    "name": "state",
                    "kind": "optional",
                    "type": "string",
                    "description": "State name. 33 characters maximum."
                  },
                  {
                    "name": "postalCode",
                    "kind": "optional",
                    "type": "string",
                    "description": "Postal code. Regular expression. 32 characters maximum."
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "receiver",
                "kind": "required",
                "type": "object",
                "description": "Payment receiver details",
                "children": [
                  {
                    "name": "address",
                    "kind": "required",
                    "type": "string",
                    "description": "Street or post office box address. 35 characters maximum."
                  },
                  {
                    "name": "city",
                    "kind": "required",
                    "type": "string",
                    "description": "City full name. 33 characters maximum."
                  },
                  {
                    "name": "state",
                    "kind": "optional",
                    "type": "string",
                    "description": "State name. 33 characters maximum."
                  },
                  {
                    "name": "postalCode",
                    "kind": "optional",
                    "type": "string",
                    "description": "Postal code. Regular expression. 32 characters maximum."
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "originatingBank",
                "kind": "optional",
                "type": "object",
                "description": "Details of financial institution originating the IAT",
                "children": [
                  {
                    "name": "name",
                    "kind": "required",
                    "type": "string",
                    "description": "Name of financial institution. 35 characters maximum."
                  },
                  {
                    "name": "identification",
                    "kind": "required",
                    "type": "string",
                    "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
                  },
                  {
                    "name": "idQualifier",
                    "kind": "required",
                    "type": "string",
                    "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "receivingBank",
                "kind": "required",
                "type": "object",
                "description": "Details of financial institution receiving the IAT",
                "children": [
                  {
                    "name": "name",
                    "kind": "required",
                    "type": "string",
                    "description": "Name of financial institution. 35 characters maximum."
                  },
                  {
                    "name": "identification",
                    "kind": "required",
                    "type": "string",
                    "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
                  },
                  {
                    "name": "idQualifier",
                    "kind": "required",
                    "type": "string",
                    "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "correspondentBank1",
                "kind": "optional",
                "type": "object",
                "description": "Details of a correspondent (intermediary) bank, if there is one.\n\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5 , each with the same child attributes.",
                "children": [
                  {
                    "name": "name",
                    "kind": "required",
                    "type": "string",
                    "description": "Name of financial institution. 35 characters maximum."
                  },
                  {
                    "name": "identification",
                    "kind": "required",
                    "type": "string",
                    "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
                  },
                  {
                    "name": "idQualifier",
                    "kind": "required",
                    "type": "string",
                    "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "transactionTypeCode",
                "kind": "required",
                "type": "string",
                "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
              },
              {
                "name": "originatingCurrency",
                "kind": "optional",
                "type": "string",
                "description": "An ISO three-character code to identify the originating currency"
              },
              {
                "name": "destinationCurrency",
                "kind": "optional",
                "type": "string",
                "description": "An ISO three-character code to identify the receiving currency"
              },
              {
                "name": "remittanceInfo1",
                "kind": "optional",
                "type": "string",
                "description": "Additional IAT information. 80 characters. A second field is available as remittanceInfo2."
              }
            ]
          },
          {
            "name": "addenda",
            "kind": "optional",
            "type": "string",
            "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as invoice numbers."
          },
          {
            "name": "purpose",
            "kind": "optional",
            "type": "string",
            "description": "Reason for the ACH transfer. For internal use only. The data is not included with the outgoing ACH batch file."
          },
          {
            "name": "clientIdentifier",
            "kind": "optional",
            "type": "string",
            "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes."
          },
          {
            "name": "externalPrefix",
            "kind": "optional",
            "type": "string",
            "description": "Prefix from external system integration"
          },
          {
            "name": "externalAccountNumber",
            "kind": "optional",
            "type": "string",
            "description": "External-facing account reference number"
          }
        ],
        "schema": [
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number for payment originator"
          },
          {
            "name": "originator",
            "kind": "optional",
            "type": "object",
            "description": "Details about the entity sending the payment. If the account originating the payment is enabled to provide this information according to the supplied account number, all the values should be null. If these values are supplied in the request they override the originator profile defined for the account.",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of the originator of the transaction. Nacha refers to this as Company Name . 35 character maximum unless the secCode is IAT. In that case the maximum is only 16 characters."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Originator Identification. Nacha refers to this as the Company Identification . 10 character maximum."
              },
              {
                "name": "data",
                "kind": "optional",
                "type": "string",
                "description": "Originator Data. Nacha refers to this as Company Discretionary Data. 20 character maximum."
              }
            ]
          },
          {
            "name": "receiver",
            "kind": "required",
            "type": "object",
            "description": "In the case of Pull payments, this is the account the funds are being pulled from.",
            "children": [
              {
                "name": " routingNumber",
                "kind": "required",
                "type": "string",
                "description": "Federal routing number for the receiver bank"
              },
              {
                "name": "accountNumber",
                "kind": "required",
                "type": "string",
                "description": "Account number for the receiver. Must be 7 digits. For account numbers with 5 or 6 digits, add 0s to the beginning of the account number."
              },
              {
                "name": "accountType",
                "kind": "required",
                "type": "string",
                "description": "Deposit account type: Checking, Savings, GeneralLedger, Loan"
              },
              {
                "name": "name",
                "kind": "optional",
                "type": "string",
                "description": "Receiver name. Maximum 22 characters."
              },
              {
                "name": "identification",
                "kind": "optional",
                "type": "string",
                "description": "Receiver Identification. Nacha refers to this as the Individual Identification Number. 15 character maximum."
              }
            ]
          },
          {
            "name": "secCode",
            "kind": "required",
            "type": "string",
            "description": "Standard Entry Class (SEC) codes required by Nacha for every ACH transaction."
          },
          {
            "name": "description",
            "kind": "required",
            "type": "string",
            "description": "Description of the payment. Maximum 10 characters."
          },
          {
            "name": "transactionType",
            "kind": "required",
            "type": "string",
            "description": "Sending or requesting funds:\n- Push (originator is sending funds—debit)\n- Pull (originator is receiving funds—credit)"
          },
          {
            "name": "amount",
            "kind": "required",
            "type": "integer",
            "description": "Dollar amount of payment in positive integral cents. For example, $1.00 appears as 100."
          },
          {
            "name": " serviceType",
            "kind": "required",
            "type": "string",
            "description": "When the payment completes:\n\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)"
          },
          {
            "name": "fedBatchWindow",
            "kind": "optional",
            "type": "integer",
            "description": ""
          },
          {
            "name": "extendedDetails",
            "kind": "optional",
            "type": "object",
            "description": "ACH-specific details.\n\nIf the transactionType is pull and secCode is WEB you must include a paymentType value in this object.\n\nIf the secCode is POS you must include a cardTransactionType value.\n\nLearn more on the Nacha site.",
            "children": [
              {
                "name": "authCode",
                "kind": "optional",
                "type": "string",
                "description": "Authorization code related to card-based transactions"
              },
              {
                "name": "cardAccountNumber",
                "kind": "optional",
                "type": "string",
                "description": "Card account number used in the transaction"
              },
              {
                "name": "cardExpDate",
                "kind": "optional",
                "type": "string",
                "description": "Expiration date of the card used"
              },
              {
                "name": "cardTransactionType",
                "kind": "optional",
                "type": "string",
                "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
              },
              {
                "name": "checkSerialNumber",
                "kind": "optional",
                "type": "string",
                "description": "Serial number for check-based transactions"
              },
              {
                "name": "docReferenceNumber",
                "kind": "optional",
                "type": "string",
                "description": "Document reference number associated with the transaction"
              },
              {
                "name": "itemType",
                "kind": "optional",
                "type": "string",
                "description": "Type of financial item, for example, Check or Card"
              },
              {
                "name": "networkIdentification",
                "kind": "optional",
                "type": "string",
                "description": "Network through which the transaction was processed"
              },
              {
                "name": "paymentType",
                "kind": "optional",
                "type": "string",
                "description": "Payment types are a single character, and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
              },
              {
                "name": "processControl",
                "kind": "optional",
                "type": "string",
                "description": "Internal Cross River processing control code"
              },
              {
                "name": "reference1",
                "kind": "optional",
                "type": "string",
                "description": "Reference field for reconciliation"
              },
              {
                "name": "reference2",
                "kind": "optional",
                "type": "string",
                "description": "Reference field for reconciliation"
              },
              {
                "name": "researchNumber",
                "kind": "optional",
                "type": "string",
                "description": "Research ID for dispute or trace purposes"
              },
              {
                "name": "terminalIdentification",
                "kind": "optional",
                "type": "string",
                "description": "ID of the terminal where the transaction occurred"
              },
              {
                "name": "terminalLocation",
                "kind": "optional",
                "type": "string",
                "description": "Location descriptor of the terminal"
              },
              {
                "name": "terminalCity",
                "kind": "optional",
                "type": "string",
                "description": "City where the terminal is located"
              },
              {
                "name": "terminalState",
                "kind": "optional",
                "type": "string",
                "description": "State where the terminal is located"
              },
              {
                "name": "transactionDate",
                "kind": "optional",
                "type": "string",
                "description": "Date the transaction happened"
              },
              {
                "name": "transactionDesc",
                "kind": "optional",
                "type": "string",
                "description": "Additional description of the transaction"
              },
              {
                "name": "transactionSerial",
                "kind": "optional",
                "type": "string",
                "description": "Serial number of the transaction"
              },
              {
                "name": "transactionTime",
                "kind": "optional",
                "type": "string",
                "description": "Transaction timestamp"
              }
            ]
          },
          {
            "name": "iatDetails",
            "kind": "optional",
            "type": "object",
            "description": "International ACH details. Required if the secCode is IAT.\nDo not enter values for these attributes for any other secCode.",
            "children": [
              {
                "name": "originator",
                "kind": "optional",
                "type": "object",
                "description": "Payment sender details",
                "children": [
                  {
                    "name": "address",
                    "kind": "required",
                    "type": "string",
                    "description": "Street or post office box address. 35 characters maximum."
                  },
                  {
                    "name": "city",
                    "kind": "required",
                    "type": "string",
                    "description": "City full name. 33 characters maximum."
                  },
                  {
                    "name": "state",
                    "kind": "optional",
                    "type": "string",
                    "description": "State name. 33 characters maximum."
                  },
                  {
                    "name": "postalCode",
                    "kind": "optional",
                    "type": "string",
                    "description": "Postal code. Regular expression. 32 characters maximum."
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "receiver",
                "kind": "required",
                "type": "object",
                "description": "Payment receiver details",
                "children": [
                  {
                    "name": "address",
                    "kind": "required",
                    "type": "string",
                    "description": "Street or post office box address. 35 characters maximum."
                  },
                  {
                    "name": "city",
                    "kind": "required",
                    "type": "string",
                    "description": "City full name. 33 characters maximum."
                  },
                  {
                    "name": "state",
                    "kind": "optional",
                    "type": "string",
                    "description": "State name. 33 characters maximum."
                  },
                  {
                    "name": "postalCode",
                    "kind": "optional",
                    "type": "string",
                    "description": "Postal code. Regular expression. 32 characters maximum."
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "originatingBank",
                "kind": "optional",
                "type": "object",
                "description": "Details of financial institution originating the IAT",
                "children": [
                  {
                    "name": "name",
                    "kind": "required",
                    "type": "string",
                    "description": "Name of financial institution. 35 characters maximum."
                  },
                  {
                    "name": "identification",
                    "kind": "required",
                    "type": "string",
                    "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
                  },
                  {
                    "name": "idQualifier",
                    "kind": "required",
                    "type": "string",
                    "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "receivingBank",
                "kind": "required",
                "type": "object",
                "description": "Details of financial institution receiving the IAT",
                "children": [
                  {
                    "name": "name",
                    "kind": "required",
                    "type": "string",
                    "description": "Name of financial institution. 35 characters maximum."
                  },
                  {
                    "name": "identification",
                    "kind": "required",
                    "type": "string",
                    "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
                  },
                  {
                    "name": "idQualifier",
                    "kind": "required",
                    "type": "string",
                    "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "correspondentBank1",
                "kind": "optional",
                "type": "object",
                "description": "Details of a correspondent (intermediary) bank, if there is one.\n\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5 , each with the same child attributes.",
                "children": [
                  {
                    "name": "name",
                    "kind": "required",
                    "type": "string",
                    "description": "Name of financial institution. 35 characters maximum."
                  },
                  {
                    "name": "identification",
                    "kind": "required",
                    "type": "string",
                    "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
                  },
                  {
                    "name": "idQualifier",
                    "kind": "required",
                    "type": "string",
                    "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
                  },
                  {
                    "name": "countryCode",
                    "kind": "required",
                    "type": "string",
                    "description": "2-letter ISO country code"
                  }
                ]
              },
              {
                "name": "transactionTypeCode",
                "kind": "required",
                "type": "string",
                "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
              },
              {
                "name": "originatingCurrency",
                "kind": "optional",
                "type": "string",
                "description": "An ISO three-character code to identify the originating currency"
              },
              {
                "name": "destinationCurrency",
                "kind": "optional",
                "type": "string",
                "description": "An ISO three-character code to identify the receiving currency"
              },
              {
                "name": "remittanceInfo1",
                "kind": "optional",
                "type": "string",
                "description": "Additional IAT information. 80 characters. A second field is available as remittanceInfo2."
              }
            ]
          },
          {
            "name": "addenda",
            "kind": "optional",
            "type": "string",
            "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as invoice numbers."
          },
          {
            "name": "purpose",
            "kind": "optional",
            "type": "string",
            "description": "Reason for the ACH transfer. For internal use only. The data is not included with the outgoing ACH batch file."
          },
          {
            "name": "clientIdentifier",
            "kind": "optional",
            "type": "string",
            "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes."
          },
          {
            "name": "externalPrefix",
            "kind": "optional",
            "type": "string",
            "description": "Prefix from external system integration"
          },
          {
            "name": "externalAccountNumber",
            "kind": "optional",
            "type": "string",
            "description": "External-facing account reference number"
          }
        ]
      }
    ]
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the client batch request. This ID is in the GUID format."
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique CR reference ID for the payment. The reference ID always begins with the first letter of the rail. For ACH the reference ID starts with 'A'.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the transaction:\n- Processing\n- Imported\n- Canceling",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The Cross River  account number from which the batch payments originate. Depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "paymentCount",
      "kind": "optional",
      "type": "integer",
      "description": "The number of unique payments in the batch (up to 5000)",
      "children": []
    },
    {
      "name": "debitTotal",
      "kind": "optional",
      "type": "integer",
      "description": "The total amount to be credited to the originator account",
      "children": []
    },
    {
      "name": "creditTotal",
      "kind": "optional",
      "type": "integer",
      "description": "The total amount to be debited from the originator account",
      "children": []
    },
    {
      "name": "importCount",
      "kind": "optional",
      "type": "string",
      "description": "Indicates how many payments have been processed at the time of the response",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by CR. In this case, the CR account involved in the batch payment. See also here.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the client batch was created after the request was received",
      "children": []
    },
    {
      "name": "importedAt",
      "kind": "optional",
      "type": "string",
      "description": "The time when the import count matches the total number of payments in the batch",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]\n",
      "children": []
    },
    {
      "name": "paymentIdentifiers",
      "kind": "optional",
      "type": "array",
      "description": "Unique identifier for each payment in the batch, in GUID format.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-achv1client-batches",
  "legacyHash": "JUlCWeM4viEmM0GfHfUl-"
}
```
:::


[title] APIs
[path] Payments/Instant payments/


[title] 
[path] Payments/Card payments/


[title] Error codes: COS Card payments
[path] Payments/Card payments/

## Overview

This page provides comprehensive error code information for the Card Payments API, including error codes, descriptions, and resolution guidance based on actual codebase analysis.

## Error response format

### Card payments API response format

```json
{
  "error": {
    "code": "2001",
    "message": "Card expired",
  }
}
```

***

## Error codes by category

### Cards (2001-2006)

Errors related to card validation and authorization.

| Code     | Description                                               | Resolution                                                                                |
| -------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| **2001** | Card expired                                              | Card expiration date has passed; use a valid card with future expiration date             |
| **2002** | Card not found                                            | Verify the card ID is correct; check if card exists in the system                         |
| **2003** | Card not authorized                                       | Card is not authorized for this operation; verify card status and permissions             |
| **2004** | Card capabilities not defined                             | Card capabilities must be defined in card configuration                                   |
| **2005** | Card is inactive                                          | Card must be in active status for this operation; activate card before processing payment |
| **2006** | Card account number does not match payment account number | Ensure card account number matches the payment account number                             |

### Payments (2101-2110)

Errors related to payment processing and validation.

| Code     | Description                                                 | Resolution                                                                                     |
| -------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| **2101** | Invalid payment status                                      | Check current payment status; verify the requested operation is valid for the current status   |
| **2102** | Payment not found                                           | Verify the payment ID is correct; check if payment exists using GET /payments/                 |
| **2103** | Preprocessing is required                                   | Payment must be preprocessed before processing; call preprocessing endpoint first              |
| **2104** | Payment information does not match preprocessing request    | Payment data must match the preprocessing request; verify all fields match preprocessed data   |
| **2105** | CVV is required for this payment                            | Include CVV (card verification value) in the payment request                                   |
| **2106** | Payment cannot be finalized unless it's in a cleared status | Wait for payment to reach cleared status before attempting to finalize                         |
| **2107** | Valid OFAC scan could not be found                          | OFAC screening must be completed successfully before processing payment                        |
| **2108** | Payment source not valid for synchronous payments           | Payment source type does not support synchronous processing; use asynchronous processing       |
| **2109** | Domestic payments are not supported for preprocessing       | Preprocessing is only available for international payments; process domestic payments directly |
| **2110** | Payment has OFAC hit                                        | Payment has been flagged by OFAC screening; review and resolve OFAC compliance issue           |

### Configuration (2200-2232)

Errors related to global, account, and product configuration management.

| Code     | Description                                              | Resolution                                                                                                       |
| -------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **2200** | Global profile change not pending                        | Operation requires global profile change to be in pending status                                                 |
| **2201** | Global profile not found or is invalid                   | Verify global profile ID is correct and profile exists                                                           |
| **2202** | Global change not approved                               | Global configuration change must be approved before applying                                                     |
| **2203** | Global config change approval requires dual control      | Have a second authorized user approve the global configuration change                                            |
| **2204** | Global config required                                   | Include global configuration object in the request                                                               |
| **2205** | Global config accounts must be unique                    | Use different account numbers for each global configuration field                                                |
| **2206** | Offset account not found                                 | Verify offset account exists; configure valid account number                                                     |
| **2209** | Account change not approved                              | Account configuration change must be approved before applying                                                    |
| **2210** | Account change not pending                               | Operation requires account change to be in pending status                                                        |
| **2211** | This action requires dual control                        | Have a second authorized user approve the configuration change                                                   |
| **2212** | Account has not been enabled to send credit transfers    | Enable credit transfer send in account configuration                                                             |
| **2213** | Account config change approval requires dual control     | Have a second authorized user approve the account configuration change                                           |
| **2214** | Account configuration not found or is invalid            | Verify account configuration ID is correct and configuration exists                                              |
| **2215** | Product change not pending                               | Operation requires product change to be in pending status                                                        |
| **2216** | Product change not approved                              | Product configuration change must be approved before applying                                                    |
| **2218** | Product config change approval requires dual control     | Have a second authorized user approve the product configuration change                                           |
| **2219** | Account config required                                  | Include account configuration object in the request                                                              |
| **2220** | Product config required                                  | Include product configuration object in the request                                                              |
| **2221** | Product not configured                                   | Product must be configured before processing payments                                                            |
| **2222** | Action not enabled for card brand                        | Card brand (Visa, Mastercard, etc.) does not support this action; verify card brand capabilities                 |
| **2224** | Daily total dollar amount limit exceeded                 | Daily payment amount limit reached; wait until next day or increase limit                                        |
| **2226** | Daily sent payment count limit exceeded                  | Daily payment count limit reached; wait until next day or increase limit                                         |
| **2227** | Payment type not allowed for this card                   | Card does not support this payment type; verify card capabilities and payment type                               |
| **2228** | Card issuer country not authorized for merchant          | Card issuer country is not in merchant's authorized countries list; add country to whitelist                     |
| **2229** | Business type not allowed                                | Business type is not authorized for this merchant; verify merchant business type configuration                   |
| **2230** | CorrespondingEntity information is required              | Include corresponding entity information in the request for regulatory compliance                                |
| **2231** | PurposeOfPayment is required for the card issuer country | Include purpose of payment for cross-border transactions from this card issuer country                           |
| **2232** | Full address is required for the card issuer country     | Include complete address (street, city, state/province, postal code, country) for card issuer country compliance |

### Products (2301)

Errors related to product operations.

| Code     | Description       | Resolution                                                        |
| -------- | ----------------- | ----------------------------------------------------------------- |
| **2301** | Product not found | Verify the product ID is correct and product exists in the system |

### FX rates (2401)

Errors related to foreign exchange rate operations.

| Code     | Description    | Resolution                                                  |
| -------- | -------------- | ----------------------------------------------------------- |
| **2401** | Request failed | FX rate request failed; verify request parameters and retry |

### Holds (2500)

Errors related to payment hold management.

| Code     | Description        | Resolution                                                           |
| -------- | ------------------ | -------------------------------------------------------------------- |
| **2500** | Hold is not active | Hold must be in active status for this operation; verify hold status |

### Security - payments (3001)

Security-related errors for payment operations.

| Code     | Description                                               | Resolution                                                             |
| -------- | --------------------------------------------------------- | ---------------------------------------------------------------------- |
| **3001** | Clearing hold exceeds user permissions for payment amount | Request approval from user with higher dollar limit for hold clearance |

### Security - configuration (3200)

Security-related errors for configuration operations.

| Code     | Description   | Resolution                                                                                      |
| -------- | ------------- | ----------------------------------------------------------------------------------------------- |
| **3200** | Access denied | User lacks permission to access configuration; verify user has appropriate role and permissions |


[title] Request and response codes: Wires
[path] Payments/Wires/

## Wires codes

Business function

Wire payments can be used to send funds or non-value messages to other financial institutions. The type of message is defined by the `businessFunctionCode.`

| Code  | Description                                                |
| ----- | ---------------------------------------------------------- |
| `CTR` | Customer transfer                                          |
| `SVC` | Service message (non-value) between financial institutions |

## ID

In Wires calls, the `idCode` field in `originator`, `beneficiary` and various financial institution objects, specifies the type of value in the `identifier` field that follows it.

| Code | Description                         | Valid For                                                            |
| ---- | ----------------------------------- | -------------------------------------------------------------------- |
| B    | SWIFT Bank Identifier Code (BIC)    | `beneficiary`<br />`Financial Institution Objects`                   |
| D    | Demand Deposit Account (DDA) Number | `originator`<br />`beneficiary`<br />`Financial Institution Objects` |
| F    | Fed Routing Number                  | `Financial Institution Objects`                                      |
| 1    | Passport Number                     | `beneficiary`                                                        |
| 2    | Tax Identification Number           | `beneficiary`                                                        |
| 3    | Driver’s License Number             | `beneficiary`                                                        |
| 4    | Alien Registration Number           | `beneficiary`                                                        |
| 5    | Corporate Identification            | `beneficiary`                                                        |
| 9    | Other Identification                | `beneficiary`                                                        |

## Type

The type code value provides information about the type of wire transfer sent. This value appears in the `typeCode` field in the response to wires payment calls, and is combined with a subtype code (see the subtype code table below).

| Code | Description                                                                                                                                                                          |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 10   | **Fund transfer**<br />A transfer of funds in which the sender and/or receiver may be a bank or a third party, such as a bank customer.                                              |
| 15   | **Foreign transfer**<br />A transfer of funds to or from a foreign central bank or government or international organization with an account at the Federal Reserve Bank of New York. |
| 16   | **Settlement transfer**<br />A transfer of funds between Fedwire Funds Service participants.                                                                                         |

## Subtype

A subtype code value combines with the type code value in the `typeCode` field of Wires payment responses to provide details about the transfer.

| Code | Description                                             |
| ---- | ------------------------------------------------------- |
| 00   | Basic funds transfer                                    |
| 01   | Request for Reversal                                    |
| 02   | Reversal of Transfer                                    |
| 07   | Request for Reversal of a Prior Day Transfer            |
| 08   | Reversal of a Prior Day Transfer                        |
| 31   | Request for Credit (Drawdown)                           |
| 32   | Funds Transfer Honoring a Request for Credit (Drawdown) |
| 33   | Refusal to Honor a Request for Credit (Drawdown)        |
| 90   | Service Message                                         |

## Payment statuses

See the payment status in the `status `field of Wires payment responses.

| Status     | Description                                                                                                                                                                                                                                                                           |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Created    | CR received the payment, but hasn't yet started processing it.<br />In most cases, this status appears only briefly.                                                                                                                                                                  |
| Pending    | The payment is waiting to be batched and sent to the Federal Reserve.                                                                                                                                                                                                                 |
| Hold       | Payment is being held and reviewed by our Ops Team, often as a result of awaiting a response from an OFAC scan. When a hold is placed, funds are removed from the available balance in the account.<br />A hold ensures that any subsequent payment won't cause this payment to fail. |
| Batched    | The payment was batched and is in final review by our Operations Team before we send it in a file to the Federal Reserve.                                                                                                                                                             |
| Processing | For inbound payments, we are posting it to the receiving account.<br />For outbound payments, the payment was sent to the Federal Reserve, but hasn't yet been accepted by them.                                                                                                      |
| Completed  | The outbound payment was posted and accepted by the Federal Reserve.<br />This is a final status.                                                                                                                                                                                     |
| Canceled   | An outbound payment was canceled at partner request. A payment can only be canceled while in the pending or hold statuses. A payment can be canceled after it's pending, only if it hasn't been executed. <br />This is a final status.                                               |
| Rejected   | Our Operations Team wasn't able to process the payment and rejected it. In the case of an inbound payment, the payment was returned to the originating bank. This is a final status.                                                                                                  |
| Reversal   | In some cases, a payment can be reversed after it was executed.                                                                                                                                                                                                                       |


[title] Payments
[path] /

:::hint{type="info"}
Cross River cannot determine how a receiving financial institution displays payment details to its customers. For information on how fields appear in their banking portal or statements, please contact the receiving FI directly.
:::

# Instant payments

Instant payments enable individuals and businesses to transfer funds that clear and settle within seconds between US bank accounts at different US-based financial institutions. Cross River (CR) facilitates instant payments through three networks: CRNow, RTP® via The Clearing House (TCH), and FedNow.

[Instant payments](docId\:dZy2COChKwicpi_0rKK2P)&#x20;

# Card payments

Use Cross River card payment APIs to tokenize a card, activate or deactivate a card, and make payments.

[Card payments](docId\:g7Y21FC4eEZ5GQY_za6Ly)

# International payments

Cross River offers a set of APIs to enable cross border money movement for International Payments.

[International payments](docId\:i-hgHkJ0nATy4LoNeUuLQ)&#x20;

# ACH

The Cross River ACH API allows you to both originate and receive payments through the Federal Reserve ACH network.

[ACH](docId\:uV8uw2VzQX5bzghh2A5KP)&#x20;

# Wires

Use wire transfers for both domestic and international payments. You or your customer can transfer money electronically to a recipient and a recipient can access the money, typically the same day.

[Wires](docId\:Mm_yqgvcWNtsGDLnNX-og)&#x20;

# Book transfer

Book transfers allow users to post transactions between two of their own accounts by simply selecting the debit and credit accounts as well as the amount.

[Book transfer](docId\:B8Djj8OY_SyerGPU3D1vU)&#x20;

# Checks

Manage both deposit and withdrawal checking for your customers using Cross River APIs.

[Checks](docId\:ERUfX-HaUeS7MVMzJYBxq)&#x20;

[title] APIs
[path] Payments/ACH/


[title] APIs
[path] Payments/Wires/


[title] Request and response codes: Book transfer
[path] Payments/Untitled/

## Transaction codes

These are the valid values for the `transaction code` field in the transaction endpoint.

| Code                          |
| ----------------------------- |
| Incoming ACH                  |
| Incoming ACH Return           |
| Incoming ACH NOC              |
| Incoming ACH On-Us            |
| Outgoing ACH                  |
| Outgoing ACH Return           |
| Outgoing ACH NOC              |
| Account Transfer              |
| Fee                           |
| Fee Refund                    |
| Deposit                       |
| Withdrawal                    |
| Interest                      |
| Interest Reversal             |
| Misc Credit                   |
| Misc Debit                    |
| Incoming Wire                 |
| Outgoing Wire                 |
| Check                         |
| Cash                          |
| Reversal                      |
| Adjustment                    |
| Sale                          |
| Card Auth                     |
| Payment                       |
| Refund                        |
| ATM Transaction               |
| RTP Debit                     |
| RTP Credit                    |
| xPay Debit                    |
| xPay Credit                   |
| Withholding                   |
| Sweep Interest                |
| Chargeback                    |
| Bonus                         |
| Reward                        |
| Card Pull                     |
| Card Push                     |
| Card Settlement               |
| Crypto Purchase               |
| Crypto Sale                   |
| Crypto Outgoing               |
| Crypto Incoming               |
| Crypto Transfer               |
| Crypto Return                 |
| INTL (International) Outgoing |
| INTL (International) Return   |
| Interchange                   |

## Rejection codes﻿

| Code | Description                  |
| ---- | ---------------------------- |
| ERR  | General Error                |
| RES  | Account Restriction          |
| NSF  | Insufficient Funds           |
| ANF  | Account Not Found            |
| CLS  | Account Closed               |
| INA  | Account Inactive             |
| DRM  | Account Dormant              |
| ESC  | Account in escheatment       |
| CHR  | Account in charge-off status |
| STP  | Stop payment active          |

## Flags for book transfer or transaction

These are the valid values for the `flags` field in the transaction endpointץ

| Code | Flag Description                                                                                                                         |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| FRC  | Force Post. This flag must be used with any of the override flags, such as ‘Override Restrictions’.                                      |
| NSF  | Override Sufficient Funds. Overrides posting when the debit account does not have sufficient funds.                                      |
| RES  | Override Restrictions. Overrides posting when the debit or credit account has an active restriction.                                     |
| STP  | Override Stop Payments. Overrides posting when the amount of the transaction matches an active stop payment.                             |
| STS  | Override Account Status. Overrides posting when the account status is not ‘Active’.                                                      |
| RGD  | Override RegD Policy. Overrides posting on a DDA where Reg D restrictions are enabled and the Reg D transaction limit has been exceeded. |

## Account sources﻿

| Source      | Description                                                                                                                                                                                                               |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Transaction | Activity from transactions will first soft post, remaining as status pending for the day, and later hard post during the nightly settlement process. Once hard posted a sequence number and running balance are assigned. |
| MemoPosts   | Activity from memo posts are a temporary debit or credit on the account. Commonly they will be removed and then posted as a transaction.                                                                                  |

## ﻿Activity status﻿

| Status  | Description                                                                                                                                                                       |
| ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pending | Memo posts will remain pending until they are removed (commonly a day or more). Transactions will always start as status pending when they first soft post.                       |
| Posted  | Transactions will always transition to status posted during the nightly settlement process for the account. Once hard posted, a sequence number and running balance are inserted. |
| Removed | Only memo posts can be removed                                                                                                                                                    |

## ﻿Activity types﻿

| Type     | Description                                                        |
| -------- | ------------------------------------------------------------------ |
| Internal | Activity is between two sub accounts under the same master account |
| External | Activity is between different master accounts                      |

## Closure reason

| Reason returned                             |
| ------------------------------------------- |
| CustomerInitiatedNoComplaint                |
| CustomerComplaintAccountClosing             |
| CustomerComplaintAddOnProducts              |
| CustomerComplaintApplicationProcessing      |
| CustomerComplaintInterestRate               |
| CustomerComplaintBillingDispute             |
| CustomerComplaintBillingStatement           |
| CustomerComplaintCollectionPractices        |
| CustomerComplaintCreditDetermination        |
| CustomerComplaintCreditReporting            |
| CustomerComplaintCustomerService            |
| CustomerComplaintFraud                      |
| CustomerComplaintFundAvailability           |
| CustomerComplaintLateFees                   |
| CustomerComplaintMerchantDispute            |
| CustomerComplaintOnlineAccountManagement    |
| CustomerComplaintOtherFees                  |
| CustomerComplaintBalanceIssue               |
| CustomerComplaintPromoDispute               |
| CustomerComplaintMarketing                  |
| CustomerComplaintSettlementHardshipPrograms |
| BankPartnerInitiatedNoBalance               |
| PartnerProductClosure                       |
| FirstPartyFraud                             |
| ThirdPartyFraud                             |
| FinancialCrimeNonFraud                      |
| HighOverdraftAmount                         |
| ExceededTransactionLimits                   |
| AccountInactivityDormancyEscheatment        |
| TermsOfServiceBreach                        |
| BulkClosureExcerciseOther                   |
| ChargeOff                                   |

## Transaction status

| Status   | Description                                                                                                    |
| -------- | -------------------------------------------------------------------------------------------------------------- |
| Pending  | Accepted, but not yet processed                                                                                |
| Complete | Processed successfully. Money has been moved between the two accounts                                          |
| Rejected | Processing failed due to one or both sides of the transaction being rejected. See rejection codes for details. |
| Review   | Transaction waiting for approval from Ops team before it can be processed.                                     |
| Declined | After review by Ops team the transaction was declined to be processed                                          |
| Canceled | While a transaction is pending it may be canceled.                                                             |

## Hold reasons

| Reason       | Description                                                              |
| ------------ | ------------------------------------------------------------------------ |
| Availability | Relates to the availability of funds for check deposits and ACH payments |
| Management   | Bank management has placed a hold                                        |
| Collateral   | ﻿<br />                                                                  |
| Safeguard    | ﻿<br />                                                                  |
| CardAuth     | Debit card authorization                                                 |
| Other        | ﻿<br />                                                                  |

## Payment type

| Type        | Description                                                    |
| ----------- | -------------------------------------------------------------- |
| ACH         | ACH Network                                                    |
| Wires       | Wire Network                                                   |
| CreditCard  | Credit Card                                                    |
| DebitCard   | Debit Card                                                     |
| StoredValue | Stored value card network (e.g. gift cards)                    |
| ICL         | Image Cash Letter (i.e. checks)                                |
| XPay        | XPay rail which enables instant transfers between COS accounts |
| Internal    | Internal book transfer                                         |


[title] Simulate inbound ACH origination
[path] Payments/ACH/APIs/Simulations/

## API reference

Simulate receiving an ACH credit transfer payment from another financial institution.

The response body duplicates the request body.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy).&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/payments/simulated-inbound-originations",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/ach/v1/payments/simulated-inbound-originations",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/ach/v1/payments/simulated-inbound-originations' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--header 'Cookie: <cookie>' \\\n--data '{\n\"originatorRoutingNumber\": \"021000021\",\n\"originatorName\": \"Tom Smith\",\n\"originatorIdentification\": \"99999999\",\n\"receiverRoutingNumber\": \"021214891\",\n\"receiverAccountNumber\": \"2819503463\",\n\"receiverAccountType\": \"Checking\",\n\"receiverName\": \"Jerry Penn\",\n\"receiverIdentification\": \"INV123\",\n\"secCode\": \"PPD\",\n\"description\": \"Testing\",\n\"transactionType\": \"Push\",\n\"amount\": 1000,\n\"serviceType\": \"SameDay\"\n}'"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/payments/simulated-inbound-originations',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>',\n    'Cookie': '<cookie>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"originatorRoutingNumber\": \"021000021\",\n  \"originatorName\": \"Tom Smith\",\n  \"originatorIdentification\": \"99999999\",\n  \"receiverRoutingNumber\": \"021214891\",\n  \"receiverAccountNumber\": \"2819503463\",\n  \"receiverAccountType\": \"Checking\",\n  \"receiverName\": \"Jerry Penn\",\n  \"receiverIdentification\": \"INV123\",\n  \"secCode\": \"PPD\",\n  \"description\": \"Testing\",\n  \"transactionType\": \"Push\",\n  \"amount\": 1000,\n  \"serviceType\": \"SameDay\"\n});\n\nreq.write(postData);\n\nreq.end();"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/ach/v1/payments/simulated-inbound-originations\"\n\npayload = json.dumps({\n  \"originatorRoutingNumber\": \"021000021\",\n  \"originatorName\": \"Tom Smith\",\n  \"originatorIdentification\": \"99999999\",\n  \"receiverRoutingNumber\": \"021214891\",\n  \"receiverAccountNumber\": \"2819503463\",\n  \"receiverAccountType\": \"Checking\",\n  \"receiverName\": \"Jerry Penn\",\n  \"receiverIdentification\": \"INV123\",\n  \"secCode\": \"PPD\",\n  \"description\": \"Testing\",\n  \"transactionType\": \"Push\",\n  \"amount\": 1000,\n  \"serviceType\": \"SameDay\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>',\n  'Cookie': '<cookie>'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/payments/simulated-inbound-originations\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest[\"Cookie\"] = \"<cookie\"\nrequest.body = JSON.dump({\n  \"originatorRoutingNumber\": \"021000021\",\n  \"originatorName\": \"Tom Smith\",\n  \"originatorIdentification\": \"99999999\",\n  \"receiverRoutingNumber\": \"021214891\",\n  \"receiverAccountNumber\": \"2819503463\",\n  \"receiverAccountType\": \"Checking\",\n  \"receiverName\": \"Jerry Penn\",\n  \"receiverIdentification\": \"INV123\",\n  \"secCode\": \"PPD\",\n  \"description\": \"Testing\",\n  \"transactionType\": \"Push\",\n  \"amount\": 1000,\n  \"serviceType\": \"SameDay\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/payments/simulated-inbound-originations\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n\"originatorRoutingNumber\": \"021000021\",`+\"\n\"+`\n\"originatorName\": \"Tom Smith\",`+\"\n\"+`\n\"originatorIdentification\": \"99999999\",`+\"\n\"+`\n\"receiverRoutingNumber\": \"021214891\",`+\"\n\"+`\n\"receiverAccountNumber\": \"2819503463\",`+\"\n\"+`\n\"receiverAccountType\": \"Checking\",`+\"\n\"+`\n\"receiverName\": \"Jerry Penn\",`+\"\n\"+`\n\"receiverIdentification\": \"INV123\",`+\"\n\"+`\n\"secCode\": \"PPD\",`+\"\n\"+`\n\"description\": \"Testing\",`+\"\n\"+`\n\"transactionType\": \"Push\",`+\"\n\"+`\n\"amount\": 1000,`+\"\n\"+`\n\"serviceType\": \"SameDay\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n  req.Header.Add(\"Cookie\", \"<cookie\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "curl-example"
  },
  "results": {
    "languages": [
      {
        "id": "200",
        "language": "200",
        "code": "{\n    \"originatorRoutingNumber\": \"021000021\",\n    \"originatorName\": \"Tom Smith\",\n    \"originatorIdentification\": \"99999999\",\n    \"receiverRoutingNumber\": \"021214891\",\n    \"receiverAccountNumber\": \"2819503463\",\n    \"receiverAccountType\": \"Checking\",\n    \"receiverName\": \"Jerry Penn\",\n    \"receiverIdentification\": \"INV123\",\n    \"secCode\": \"PPD\",\n    \"description\": \"Testing\",\n    \"transactionType\": \"Push\",\n    \"amount\": 1000,\n    \"serviceType\": \"SameDay\",\n    \"settlementDays\": 0\n}"
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ],
    "selectedLanguageId": "200"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "originatorRoutingNumber",
        "kind": "returned",
        "type": "string",
        "description": "ABA routing number of a bank other than Cross River",
        "": "ABA routing number of a bank other than Cross River"
      },
      {
        "name": "originatorName",
        "kind": "returned",
        "type": "string",
        "description": "A name for the fictional person sending the payment. Maximum 35 characters.",
        "": "A name for the fictional person sending the payment. Maximum 35 characters."
      },
      {
        "name": "originatorIdentification",
        "kind": "returned",
        "type": "string",
        "description": "Fictional ID number. Maximum 10 digits. RegEx: ^[A-Za-z0-9^ !_\\-@'`()#\"\"*\\]+{}|~$%&,:.-\\\\]+$",
        "": "Fictional ID number. Maximum 10 digits. RegEx: ^[A-Za-z0-9^ !_\\-@'`()#\"\"*\\]+{}|~$%&,:.-\\\\]+$"
      },
      {
        "name": "originatorData",
        "kind": "optional",
        "type": "string",
        "description": "Some data about the fictional originator",
        "": "Some data about the fictional originator"
      },
      {
        "name": "receiverRoutingNumber",
        "kind": "required",
        "type": "string",
        "description": "9-digit ABA routing number that identifies the receiver financial institution. Because this simulation is inbound to a Cross River account, use one of the Cross River routing numbers:\n- 021214273\n- 021214862\n- 021214891",
        "": "9-digit ABA routing number that identifies the receiver financial institution. Because this simulation is inbound to a Cross River account, use one of the Cross River routing numbers:\n- 021214273\n- 021214862\n- 021214891"
      },
      {
        "name": "receiverAccountNumber",
        "kind": "returned",
        "type": "string",
        "description": "A sandbox account number configured to receive ACH payments",
        "": "A sandbox account number configured to receive ACH payments"
      },
      {
        "name": "receiverAccountType",
        "kind": "returned",
        "type": "string",
        "description": "The type of account set up in sandbox:\n- Checking\n- Savings\n- GeneralLedger\n-  Loan",
        "": "The type of account set up in sandbox:\n- Checking\n- Savings\n- GeneralLedger\n-  Loan"
      },
      {
        "name": "receiverName",
        "kind": "returned",
        "type": "string",
        "description": "Name on the sandbox account. 35 character maximum.",
        "": "Name on the sandbox account. 35 character maximum."
      },
      {
        "name": "receiverIdentification",
        "kind": "optional",
        "type": "string",
        "description": "Identification number of the receiver as it appears in the customer record. Maximum 15 digits. RegEx: ^[A-Za-z0-9^ !_\\-@'`()#\"\"*\\]+{}|~$%&,:.-\\\\]+$",
        "": "Identification number of the receiver as it appears in the customer record. Maximum 15 digits. RegEx: ^[A-Za-z0-9^ !_\\-@'`()#\"\"*\\]+{}|~$%&,:.-\\\\]+$"
      },
      {
        "name": "secCode",
        "kind": "returned",
        "type": "string",
        "description": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page.\nFor the simulation we recommend using PPD.",
        "": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page.\nFor the simulation we recommend using PPD."
      },
      {
        "name": "description",
        "kind": "returned",
        "type": "string",
        "description": "Description of the payment. Maximum 10 characters.\nFor the simulation, we recommend \"Testing\" as the description.",
        "": "Description of the payment. Maximum 10 characters.\nFor the simulation, we recommend \"Testing\" as the description."
      },
      {
        "name": "transactionType",
        "kind": "returned",
        "type": "string",
        "description": "Sending or requesting funds:\n- Push (originator is sending funds)\n- Pull (originator is receiving funds)\nFor the simulation, use Push.",
        "": "Sending or requesting funds:\n- Push (originator is sending funds)\n- Pull (originator is receiving funds)\nFor the simulation, use Push."
      },
      {
        "name": "amount",
        "kind": "returned",
        "type": "integer",
        "description": "Dollar amount of the transaction in positive integral cents. For example, $1.00 appears as 100.",
        "": "Dollar amount of the transaction in positive integral cents. For example, $1.00 appears as 100."
      },
      {
        "name": "serviceType",
        "kind": "returned",
        "type": "string",
        "description": "When the payment completes:\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)"
      },
      {
        "name": "extendedDetails",
        "kind": "optional",
        "type": "object",
        "description": "ACH-specific details.\nIf the transactionType is pull and secCode is WEB you must include a paymentType value in this object.\nIf the secCode is POS you must include a cardTransactionType value.\nLearn more on the Nacha site.",
        "children": [
          {
            "name": "authCode",
            "kind": "optional",
            "type": "string",
            "description": "Authorization code related to card-based transactions"
          },
          {
            "name": "cardAccountNumber",
            "kind": "optional",
            "type": "string",
            "description": "Card account number used in the transaction"
          },
          {
            "name": "cardExpDate",
            "kind": "optional",
            "type": "string",
            "description": "Expiration date of the card used"
          },
          {
            "name": "cardTransactionType",
            "kind": "optional",
            "type": "string",
            "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
          },
          {
            "name": "checkSerialNumber",
            "kind": "optional",
            "type": "string",
            "description": "Serial number for check-based transactions"
          },
          {
            "name": "docReferenceNumber",
            "kind": "optional",
            "type": "string",
            "description": "Document reference number associated with the transaction"
          },
          {
            "name": "itemType",
            "kind": "optional",
            "type": "string",
            "description": "Type of financial item, for example, Check or  Card"
          },
          {
            "name": "networkIdentification",
            "kind": "optional",
            "type": "string",
            "description": "Network through which the transaction was processed"
          },
          {
            "name": "paymentType",
            "kind": "optional",
            "type": "string",
            "description": "Payment types are a single character, and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
          },
          {
            "name": "processControl",
            "kind": "optional",
            "type": "string",
            "description": "Internal Cross River processing control code"
          },
          {
            "name": "reference1",
            "kind": "optional",
            "type": "string",
            "description": "Reference field for reconciliation"
          },
          {
            "name": "reference2",
            "kind": "optional",
            "type": "string",
            "description": "Reference field for reconciliation"
          },
          {
            "name": "researchNumber",
            "kind": "optional",
            "type": "string",
            "description": "Research ID for dispute or trace purposes"
          },
          {
            "name": "terminalIdentification",
            "kind": "optional",
            "type": "string",
            "description": "ID of the terminal where the transaction occurred"
          },
          {
            "name": "terminalLocation",
            "kind": "optional",
            "type": "string",
            "description": "Location descriptor of the terminal"
          },
          {
            "name": "terminalCity",
            "kind": "optional",
            "type": "string",
            "description": "City where the terminal is located"
          },
          {
            "name": "terminalState",
            "kind": "optional",
            "type": "string",
            "description": "State where the terminal is located"
          },
          {
            "name": "transactionDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the transaction happened"
          },
          {
            "name": "transactionDesc",
            "kind": "optional",
            "type": "string",
            "description": "Additional description of the transaction"
          },
          {
            "name": "transactionSerial",
            "kind": "optional",
            "type": "string",
            "description": "Serial number of the transaction"
          },
          {
            "name": "transactionTime",
            "kind": "optional",
            "type": "string",
            "description": "Transaction timestamp"
          }
        ],
        "": "optional",
        "schema": [
          {
            "name": "authCode",
            "kind": "optional",
            "type": "string",
            "description": "Authorization code related to card-based transactions"
          },
          {
            "name": "cardAccountNumber",
            "kind": "optional",
            "type": "string",
            "description": "Card account number used in the transaction"
          },
          {
            "name": "cardExpDate",
            "kind": "optional",
            "type": "string",
            "description": "Expiration date of the card used"
          },
          {
            "name": "cardTransactionType",
            "kind": "optional",
            "type": "string",
            "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
          },
          {
            "name": "checkSerialNumber",
            "kind": "optional",
            "type": "string",
            "description": "Serial number for check-based transactions"
          },
          {
            "name": "docReferenceNumber",
            "kind": "optional",
            "type": "string",
            "description": "Document reference number associated with the transaction"
          },
          {
            "name": "itemType",
            "kind": "optional",
            "type": "string",
            "description": "Type of financial item, for example, Check or  Card"
          },
          {
            "name": "networkIdentification",
            "kind": "optional",
            "type": "string",
            "description": "Network through which the transaction was processed"
          },
          {
            "name": "paymentType",
            "kind": "optional",
            "type": "string",
            "description": "Payment types are a single character, and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
          },
          {
            "name": "processControl",
            "kind": "optional",
            "type": "string",
            "description": "Internal Cross River processing control code"
          },
          {
            "name": "reference1",
            "kind": "optional",
            "type": "string",
            "description": "Reference field for reconciliation"
          },
          {
            "name": "reference2",
            "kind": "optional",
            "type": "string",
            "description": "Reference field for reconciliation"
          },
          {
            "name": "researchNumber",
            "kind": "optional",
            "type": "string",
            "description": "Research ID for dispute or trace purposes"
          },
          {
            "name": "terminalIdentification",
            "kind": "optional",
            "type": "string",
            "description": "ID of the terminal where the transaction occurred"
          },
          {
            "name": "terminalLocation",
            "kind": "optional",
            "type": "string",
            "description": "Location descriptor of the terminal"
          },
          {
            "name": "terminalCity",
            "kind": "optional",
            "type": "string",
            "description": "City where the terminal is located"
          },
          {
            "name": "terminalState",
            "kind": "optional",
            "type": "string",
            "description": "State where the terminal is located"
          },
          {
            "name": "transactionDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the transaction happened"
          },
          {
            "name": "transactionDesc",
            "kind": "optional",
            "type": "string",
            "description": "Additional description of the transaction"
          },
          {
            "name": "transactionSerial",
            "kind": "optional",
            "type": "string",
            "description": "Serial number of the transaction"
          },
          {
            "name": "transactionTime",
            "kind": "optional",
            "type": "string",
            "description": "Transaction timestamp"
          }
        ]
      },
      {
        "name": "iatDetails",
        "kind": "optional",
        "type": "object",
        "description": "International ACH details. Required if the secCode is IAT.\nDo not enter values for these attributes for any other secCode.",
        "children": [
          {
            "name": "originator",
            "kind": "optional",
            "type": "object",
            "description": "Originator of the payment",
            "children": [
              {
                "name": "address",
                "kind": "required",
                "type": "string",
                "description": "Originator street or post office box address. 35 characters maximum."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Originator city full name. 33 characters maximum.\n"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "Originator state or province name. 33 characters maximum."
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Originator postal or ZIP code. Regular expression. 32 characters maximum."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "receiver",
            "kind": "optional",
            "type": "object",
            "description": "Receiver bank details",
            "children": [
              {
                "name": "address",
                "kind": "required",
                "type": "string",
                "description": "Receiver street or post office box address. 35 characters maximum."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Receiver city full name. 33 characters maximum."
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "Receiver state or province name. 33 characters maximum.\n"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Receiver postal or ZIP code. Regular expression. 32 characters maximum."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "originatingBank",
            "kind": "optional",
            "type": "object",
            "description": "Details of financial institution originating the IAT",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of originating financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Originating bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "Originating bank 2-letter ISO country code"
              }
            ]
          },
          {
            "name": "receivingBank",
            "kind": "optional",
            "type": "object",
            "description": "Details of financial institution receiving the IAT",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of receiving financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Receiving bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "Receiving DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "remittanceInfo1",
            "kind": "optional",
            "type": "string",
            "description": "Additional IAT information.\nA second field is available as remittanceInfo2."
          },
          {
            "name": "correspondentBank1",
            "kind": "optional",
            "type": "object",
            "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5, each with the same child attributes.",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "transactionTypeCode",
            "kind": "required",
            "type": "string",
            "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
          },
          {
            "name": "originatingCurrency",
            "kind": "optional",
            "type": "string",
            "description": "An ISO three-character code to identify the originating currency"
          },
          {
            "name": "destinationCurrency",
            "kind": "optional",
            "type": "string",
            "description": "An ISO three-character code to identify the receiving currency"
          }
        ],
        "": "International ACH details. Required if the secCode is IAT.\nDo not enter values for these attributes for any other secCode.",
        "schema": [
          {
            "name": "originator",
            "kind": "optional",
            "type": "object",
            "description": "Originator of the payment",
            "children": [
              {
                "name": "address",
                "kind": "required",
                "type": "string",
                "description": "Originator street or post office box address. 35 characters maximum."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Originator city full name. 33 characters maximum.\n"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "Originator state or province name. 33 characters maximum."
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Originator postal or ZIP code. Regular expression. 32 characters maximum."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "receiver",
            "kind": "optional",
            "type": "object",
            "description": "Receiver bank details",
            "children": [
              {
                "name": "address",
                "kind": "required",
                "type": "string",
                "description": "Receiver street or post office box address. 35 characters maximum."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Receiver city full name. 33 characters maximum."
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "Receiver state or province name. 33 characters maximum.\n"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Receiver postal or ZIP code. Regular expression. 32 characters maximum."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "originatingBank",
            "kind": "optional",
            "type": "object",
            "description": "Details of financial institution originating the IAT",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of originating financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Originating bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "Originating bank 2-letter ISO country code"
              }
            ]
          },
          {
            "name": "receivingBank",
            "kind": "optional",
            "type": "object",
            "description": "Details of financial institution receiving the IAT",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of receiving financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Receiving bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "Receiving DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "remittanceInfo1",
            "kind": "optional",
            "type": "string",
            "description": "Additional IAT information.\nA second field is available as remittanceInfo2."
          },
          {
            "name": "correspondentBank1",
            "kind": "optional",
            "type": "object",
            "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5, each with the same child attributes.",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "transactionTypeCode",
            "kind": "required",
            "type": "string",
            "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
          },
          {
            "name": "originatingCurrency",
            "kind": "optional",
            "type": "string",
            "description": "An ISO three-character code to identify the originating currency"
          },
          {
            "name": "destinationCurrency",
            "kind": "optional",
            "type": "string",
            "description": "An ISO three-character code to identify the receiving currency"
          }
        ]
      },
      {
        "name": "addenda",
        "kind": "optional",
        "type": "string",
        "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as invoice numbers.",
        "": "optional"
      },
      {
        "name": "settlementDays",
        "kind": "optional",
        "type": "integer",
        "description": "Settlement days",
        "": "optional"
      }
    ]
  },
  "response": [
    {
      "name": "originatorRoutingNumber",
      "kind": "returned",
      "type": "string",
      "description": "ABA routing number of a bank other than Cross River"
    },
    {
      "name": "originatorName",
      "kind": "returned",
      "type": "string",
      "description": "A name for the fictional person sending the payment"
    },
    {
      "name": "originatorIdentification",
      "kind": "returned",
      "type": "string",
      "description": "Fictional ID number"
    },
    {
      "name": "originatorData",
      "kind": "returned",
      "type": "string",
      "description": "Some data about the fictional originator"
    },
    {
      "name": "receiverRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "9-digit ABA routing number that identifies the receiver financial institution. Because this simulation is inbound to a Cross River account, use one of the Cross River routing numbers:\n- 021214273\n- 021214862\n- 021214891",
      "children": []
    },
    {
      "name": "receiverAccountNumber",
      "kind": "returned",
      "type": "string",
      "description": "A sandbox account number configured to receive ACH payments"
    },
    {
      "name": "receiverAccountType",
      "kind": "returned",
      "type": "string",
      "description": "The type of account set up in sandbox:\n- Checking\n- Savings\n- GeneralLedger\n-  Loan"
    },
    {
      "name": "receiverName",
      "kind": "returned",
      "type": "string",
      "description": "Name on the sandbox account"
    },
    {
      "name": "receiverIdentification",
      "kind": "returned",
      "type": "string",
      "description": "Identification number of the receiver as it appears in the customer record"
    },
    {
      "name": "secCode",
      "kind": "returned",
      "type": "string",
      "description": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page."
    },
    {
      "name": "description",
      "kind": "returned",
      "type": "string",
      "description": "Description of the payment"
    },
    {
      "name": "transactionType",
      "kind": "returned",
      "type": "string",
      "description": "Sending or requesting funds:\n- Push (originator is sending funds)\n- Pull (originator is receiving funds)"
    },
    {
      "name": "amount",
      "kind": "returned",
      "type": "integer",
      "description": "Dollar amount of the transaction in positive integral cents. For example, $1.00 appears as 100."
    },
    {
      "name": "serviceType",
      "kind": "returned",
      "type": "string",
      "description": "When the payment completes:\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)"
    },
    {
      "name": "extendedDetails",
      "kind": "returned",
      "type": "object",
      "description": "ACH-specific fields. Learn more on the Nacha site.",
      "children": [
        {
          "name": "authCode",
          "kind": "optional",
          "type": "string",
          "description": "Authorization code related to card-based transactions"
        },
        {
          "name": "cardAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Card account number used in the transaction"
        },
        {
          "name": "cardExpDate",
          "kind": "optional",
          "type": "string",
          "description": "Expiration date of the card used"
        },
        {
          "name": "cardTransactionType",
          "kind": "optional",
          "type": "string",
          "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
        },
        {
          "name": "checkSerialNumber",
          "kind": "optional",
          "type": "string",
          "description": "Serial number for check-based transactions"
        },
        {
          "name": "docReferenceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Document reference number associated with the transaction"
        },
        {
          "name": "itemType",
          "kind": "optional",
          "type": "string",
          "description": "Type of financial item, for example, Check or  Card"
        },
        {
          "name": "networkIdentification",
          "kind": "optional",
          "type": "string",
          "description": "Network through which the transaction was processed"
        },
        {
          "name": "paymentType",
          "kind": "optional",
          "type": "string",
          "description": "Payment types are a single character, and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
        },
        {
          "name": "processControl",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River processing control code"
        },
        {
          "name": "reference1",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "reference2",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "researchNumber",
          "kind": "optional",
          "type": "string",
          "description": "Research ID for dispute or trace purposes"
        },
        {
          "name": "terminalIdentification",
          "kind": "optional",
          "type": "string",
          "description": "ID of the terminal where the transaction occurred"
        },
        {
          "name": "terminalLocation",
          "kind": "optional",
          "type": "string",
          "description": "Location descriptor of the terminal"
        },
        {
          "name": "terminalCity",
          "kind": "optional",
          "type": "string",
          "description": "City where the terminal is located"
        },
        {
          "name": "terminalState",
          "kind": "optional",
          "type": "string",
          "description": "State where the terminal is located"
        },
        {
          "name": "transactionDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the transaction happened"
        },
        {
          "name": "transactionDesc",
          "kind": "optional",
          "type": "string",
          "description": "Additional description of the transaction"
        },
        {
          "name": "transactionSerial",
          "kind": "optional",
          "type": "string",
          "description": "Serial number of the transaction"
        },
        {
          "name": "transactionTime",
          "kind": "optional",
          "type": "string",
          "description": "Transaction timestamp"
        }
      ]
    },
    {
      "name": "iatDetails",
      "kind": "returned",
      "type": "object",
      "description": "international ACH details.\nThis object is only returned for the IAT secCode.",
      "children": [
        {
          "name": "originator",
          "kind": "optional",
          "type": "object",
          "description": "Originator of the payment",
          "children": [
            {
              "name": "address",
              "kind": "required",
              "type": "string",
              "description": "Originator street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Originator city full name\n"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Originator state or province name\n"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receiver",
          "kind": "optional",
          "type": "object",
          "description": "Payment receiver details",
          "children": [
            {
              "name": "address",
              "kind": "required",
              "type": "string",
              "description": "Receiver street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Receiver city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Receiver state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "originatingBank",
          "kind": "optional",
          "type": "object",
          "description": "Details of financial institution originating the IAT",
          "children": [
            {
              "name": "name",
              "kind": "required",
              "type": "string",
              "description": "Name of originating financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receivingBank",
          "kind": "optional",
          "type": "object",
          "description": "Details of financial institution receiving the IAT",
          "children": [
            {
              "name": "name",
              "kind": "required",
              "type": "string",
              "description": "Name of receiving financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Receiving DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "remittanceInfo1",
          "kind": "required",
          "type": "string",
          "description": "Additional IAT information.\nA second field is available as remittanceInfo2."
        },
        {
          "name": "correspondentBank1",
          "kind": "optional",
          "type": "object",
          "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5, each with the same child attributes.",
          "children": [
            {
              "name": "name",
              "kind": "required",
              "type": "string",
              "description": "Name of financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "transactionTypeCode",
          "kind": "optional",
          "type": "string",
          "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
        },
        {
          "name": "originatingCurrency",
          "kind": "required",
          "type": "string",
          "description": "An ISO three-character code to identify the originating currency"
        },
        {
          "name": "destinationCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the receiving currency"
        }
      ]
    },
    {
      "name": "addenda",
      "kind": "returned",
      "type": "string",
      "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as invoice numbers."
    },
    {
      "name": "settlementDays",
      "kind": "returned",
      "type": "integer",
      "description": "Settlement days"
    }
  ],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1paymentssimulated-inbound-originations",
  "legacyHash": "AfLae6pa6qpWh1RUhO54v"
}
```
:::


[title] Webhook events: Instant payments
[path] Payments/Instant payments/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific  [webhooks](docId\:qF6bTOPBPNcpLPp9SAtWI) which have a specific [event format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents common `instant payments` webhook events that are described in detail below.

| Event Name                                                               | Description                                                                                                                                                                                                                              | Related Endpoint                                                                                          |
| ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| [Rtp.Payment.Sent](docId\:ffGq2OHYEbWPzn2old6Mc)                         | The outbound payment has been successfully transmitted to the receiving institution, and the funds are now available in the receiver's bank account                                                                                      | [Credit transfer](docId:727H0GkQerqHAFKEy67Uu)                                                            |
| [Rtp.Payment.Received](docId\:ffGq2OHYEbWPzn2old6Mc)                     | An inbound payment has been received from another institution and successfully posted to an account in COS. This inbound payment can be an unsolicited incoming payment or a response to a RfP call.                                     | [Payment request](docId:34BetPVU5CDUR0MKKcIfN)                                                            |
| [Rtp.Payment.Rejected](docId\:ffGq2OHYEbWPzn2old6Mc)                     | - **Payment Rejected** – The payment was rejected by the receiving institution or by the Instant Payments network.
- **Insufficient Funds** – The payment could not be processed because the originating account had insufficient funds. | [Credit transfer](docId:727H0GkQerqHAFKEy67Uu)                                                            |
| [Rtp.Payment.Expired](docId\:ffGq2OHYEbWPzn2old6Mc)                      | An outbound request for payment was not responded to before the expiration date/time specified in the request                                                                                                                            | [Payment request](docId:34BetPVU5CDUR0MKKcIfN)                                                            |
| [Rtp.Payment.Canceled](docId\:ffGq2OHYEbWPzn2old6Mc)                     | * **Partner Cancellation** – The payment was canceled at the request of the partner.
  - **Research Cancellation** – A payment with a status of **ResearchRequired** has been canceled.                                                  | [Cancel request](docId\:RIYl47dXZG2Rn5d-APJtr)                                                            |
| [Rtp.Payment.Queued](docId\:ffGq2OHYEbWPzn2old6Mc)                       | An outbound payment has been queued. Additional information is provided in [Payment queueing](docId:_xZIWgk5I5ZYLLWc8va6B)                                                                                                               | [Credit transfer](docId:727H0GkQerqHAFKEy67Uu)                                                            |
| [Rtp.Payment.TimedOut](docId\:ffGq2OHYEbWPzn2old6Mc)                     | Occurs when we received an incoming RTP payment and we did not process the payment in a timely manner. The payment network then sent us a timeout message on that payment.                                                               |                                                                                                           |
| Rtp.Payment.ResearchRequired                                             | Payment has not been processed. Research is required. See COS Explorer for details                                                                                                                                                       |                                                                                                           |
| [Rtp.Limits.Utilization.Changed](docId\:ffGq2OHYEbWPzn2old6Mc)           | Track your usage and remaining limit. Additional information is provides in [Monitor limit utilization](docId\:KEF-tnmS8kieC5Ky8ptS-)                                                                                                    |                                                                                                           |
| [Core.Transaction.Completed (RTP Credit)](docId\:ffGq2OHYEbWPzn2old6Mc)  | Transaction completed successfully for Instant Payment Credit transaction                                                                                                                                                                | [Credit transfer](docId:727H0GkQerqHAFKEy67Uu)<br />[Payment transactions](docId\:luDEbxnwU8p7Knb_bDM6I)  |
| [Core.Transaction.Completed (RTP Debit)](docId\:ffGq2OHYEbWPzn2old6Mc)   | Transaction completed successfully for Instant Payment Debit transaction                                                                                                                                                                 | [Payment transactions](docId\:luDEbxnwU8p7Knb_bDM6I)                                                      |

## Event examples

### Rtp.Payment.Sent

:::CodeblockTabs
Rtp.Payment.Sent

```curl
{
  "id": "6be43fe7-043b-43be-ba64-b1c6012ee9e5",
  "eventName": "Rtp.Payment.Sent",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:22:52.507-04:00",
  "resources": [
    "rtp/v1/payments/469ce76c-6d74-4dfc-9b8a-b1c6012edbf8"
  ],
  "details": [
    {
      "paymentId": "469ce76c-6d74-4dfc-9b8a-b1c6012edbf8",
      "paymentType": "CreditTransfer",
      "resultCode": "OK",
      "resultAdditionalInfo": null,
      "coreTransactionId": "d1ec6120-7151-4af9-b56d-b1c6012edc3e",
      "memoPostId": "469ce76c-6d74-4dfc-9b8a-b1c6012edbf8",
      "accountNumber": "2212135061",
      "postingCode": "OK",
      "rtpTransactionStatus": "ACTC",
      "purpose": "Sponsor donation",
      "awaitingResponse": "False",
      "referencedPaymentId": null,
      "networkPlatform": "TCH",
      "amount": "3500",
      "clientIdentifier": "41x30e25-a0a9-42e0-ac89-845520508c85"
    }
  ]
}
```
:::

### Rtp.Payment.Received

:::CodeblockTabs
Rtp.Payment.Received

```curl
{
  "id": "3f4968a3-1425-47bf-a97e-b2980109dee1",
  "eventName": "Rtp.Payment.Received",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2025-03-06T11:08:02.303+00:00",
  "resources": [
    "rtp/v1/payments/b06839a7-08c8-4918-8610-b2980109d7b2"
  ],
  "details": [
    {
      "paymentId": "b06839a7-08c8-4918-8610-b2980109d7b2",
      "paymentType": "CreditTransfer",
      "resultCode": "OK",
      "resultAdditionalInfo": null,
      "coreTransactionId": "a64f9eea-dce1-4809-aa0d-b2980109da6d",
      "accountNumber": "138394490138",
      "postingCode": "OK",
      "purpose": "Credit Transfer",
      "amount": "15000",
      "awaitingResponse": "False",
      "referencedPaymentId": null,
      "networkPlatform": "TCH",
      "clientIdentifier": null,
      "debtorName": "string",
      "debtorAccountNumber": "9877987977",
      "debtorRoutingNumber": "020202020",
      "remittanceData": null
    }
  ]
}
```
:::

### Rtp.Payment.Rejected

:::CodeblockTabs
Rtp.Payment.Rejected

```curl
{
  "id": "911ff705-e28d-4e3f-80a9-b1c6012ee9e5",
  "eventName": "Rtp.Payment.Rejected",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:22:52.507-04:00",
  "resources": [
    "rtp/v1/payments/9097797b-d731-4f60-8d07-b1c6012eca94"
  ],
  "details": [
    {
      "paymentId": "9097797b-d731-4f60-8d07-b1c6012eca94",
      "paymentType": "CreditTransfer",
      "resultCode": "1100",
      "resultAdditionalInfo": "Simulator - Reject Payment Test",
      "postingCode": "OK",
      "rtpTransactionStatus": "RJCT",
      "purpose": "Sponsor donation",
      "referencedPaymentId": null,
      "networkPlatform": "TCH",
      "amount": "3000",
      "clientIdentifier": "41x30e25-a0a9-42e0-ac89-845520508c85",
      "direction": "Outbound"
    }
  ]
}
```
:::

### Rtp.Payment.Expired

:::CodeblockTabs
Rpt.Payment.Expired

```curl
{
  "id": "6be43fe7-043b-43be-ba64-b1c6012ee9e5",
  "eventName": "Rtp.Payment.Expired",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2026-03-05T14:22:52.507-04:00",
  "resources": [
    "rtp/v1/payments/59e75dcc-4195-4e43-a005-ad8301373119"
  ],
  "details": [
    {
      "paymentId": "59e75dcc-4195-4e43-a005-ad8301373119",
      "paymentType": "RequestForPayment",
      "resultCode": "OK",
      "resultAdditionalInfo": null,
      "postingCode": "OK",
      "rtpTransactionStatus": "RCVD",
      "purpose": "ENTERED BY #5A3294F2B86DD11808412619#",
      "referencedPaymentId": null
    }
  ]
}
```
:::

### Rpt.Payment.Queued

:::CodeblockTabs
Rpt.Payment.Queued

```curl
{
  "id": "6be43fe7-043b-43be-ba64-b1c6012ee9e5",
  "eventName": "Rtp.Payment.Queued",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:22:52.507-04:00",
  "resources": [
    "rtp/v1/payments/469ce76c-6d74-4dfc-9b8a-b1c6012edbf8"
  ],
  "details": [
    {
      "paymentId": "469ce76c-6d74-4dfc-9b8a-b1c6012edbf8",
      "paymentType": "CreditTransfer",
      "resultCode": "Queued",
      "resultAdditionalInfo": null,
      "coreTransactionId": "d1ec6120-7151-4af9-b56d-b1c6012edc3e",
      "memoPostId": "469ce76c-6d74-4dfc-9b8a-b1c6012edbf8",
      "accountNumber": "2212135061",
      "postingCode": "OK",
      "rtpTransactionStatus": "ACTC",
      "purpose": "Sponsor donation",
      "awaitingResponse": "False",
      "referencedPaymentId": null,
      "networkPlatform": "TCH",
      "amount": "3500",
      "clientIdentifier": "41x30e25-a0a9-42e0-ac89-845520508c85"
    }
  ]
}
```
:::

### Rtp.Payment.Canceled

:::CodeblockTabs
Rtp.Payment.Canceled

```curl
{
  "id": "dcfa23b6-0a58-49c0-8d7c-b1c6012e16da",
  "eventName": "Rtp.Payment.Canceled",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:19:52.42-04:00",
  "resources": [
    "rtp/v1/payments/38ad12ed-bbe8-4c3d-8e98-b1c6012dd420"
  ],
  "details": [
    {
      "paymentId": "38ad12ed-bbe8-4c3d-8e98-b1c6012dd420",
      "paymentType": "CreditTransfer",
      "resultCode": "OK",
      "resultAdditionalInfo": null,
      "postingCode": "OK",
      "rtpTransactionStatus": null,
      "purpose": "Sponsor donation",
      "referencedPaymentId": null,
      "networkPlatform": "TCH",
      "amount": "1500",
      "clientIdentifier": "41x30e25-a0a9-42e0-ac89-845520508c85",
      "direction": "Outbound"
    }
  ]
}
```
:::

### Rtp.Payment.TimedOut

:::CodeblockTabs
Rtp.Payment.TimedOut

```curl
{
  "id": "dcfa23b6-0a58-49c0-8d7c-b1c6012e16da",
  "eventName": "Rtp.Payment.TimedOut",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:19:52.42-04:00",
  "resources": [
    "rtp/v1/payments/38ad12ed-bbe8-4c3d-8e98-b1c6012dd420"
  ],
  "details": [
    {
      "paymentId": "a249d083-8865-4eb5-9e56-b46c009d958d",
      "paymentType": "CreditTransfer",
      "resultCode": "DS24",
      "resultAdditionalInfo": null,
      "postingCode": "OK",
      "rtpTransactionStatus": "ACTC",
      "purpose": "Credit Transfer",
      "referencedPaymentId": null,
      "networkPlatform": "TCH",
      "amount": "6877",
      "clientIdentifier": null,
      "direction": "Inbound"
    }
  ]
}
```
:::

### Rtp.Limits.Utilization.Changed

:::CodeblockTabs
Rtp.Limits.Utilization.Changed

```curl
"eventName": "Rtp.Limits.Utilization.Changed",
"metaFields":
[
    "productId",
    "utilizationPercent",
    "previousUtilizationPercent"
]
```
:::

### Core.Transaction.Completed (RTP Credit)

:::CodeblockTabs
Core.Transaction.Completed (RTP Credit)

```curl
{
    "id": "57c13064-90c7-4f41-952e-b2590111c1a1",
    "eventName": "Core.Transaction.Completed",
    "status": "Pending",
    "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
    "createdAt": "2026-01-02T11:36:42.987-05:00",
    "resources": [
        "rtp/v1/payments/7d5fcc6e-d881-433b-b22e-b2590111abb9"
    ],
    "details": [
        {
    "transactionId": "d4f01bcf-8eb2-441c-8ce8-adda015bbf96",
    "transactionCode": "RTP Credit",
    "debitSubAccount": "2434330730",
    "debitMasterAccount": "2434330730",
    "debitResult": "OK",
    "creditSubAccount": "10010010011",
    "creditMasterAccount": "10010010011",
    "creditResult": "OK",
    "rail": "Rtp",
    "railId": "payment/971c349d-b4c7-4a2f-9701-adda015bbee3",
    "amount": "10"        }
    ]
}
```
:::

### Core.Transaction.Completed (RTP Debit)

:::CodeblockTabs
Core.Transaction.Completed (RTP Debit)

```curl
{
    "id": "57c13064-90c7-4f41-952e-b2590111c1a1",
    "eventName": "Core.Transaction.Completed",
    "status": "Pending",
    "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
    "createdAt": "2026-01-02T11:36:42.987-05:00",
    "resources": [
        "rtp/v1/payments/7d5fcc6e-d881-433b-b22e-b2590111abb9"
    ],
    "details": [
        {
    "transactionId": "d4f01bcf-8eb2-441c-8ce8-adda015bbf96",
    "transactionCode": "RTP Debit",
    "debitSubAccount": "2434330730",
    "debitMasterAccount": "2434330730",
    "debitResult": "OK",
    "creditSubAccount": "10010010011",
    "creditMasterAccount": "10010010011",
    "creditResult": "OK",
    "rail": "Rtp",
    "railId": "payment/971c349d-b4c7-4a2f-9701-adda015bbee3",
    "amount": "10"        }
    ]
}
```
:::


[title] Wires
[path] Payments/

:::CtaButton{label="Wires concepts" docId="hFNmQa22W2BNqAJijpAVT" openInNewTab="true"}

:::

## Cross River Wires

Use wire transfers for both domestic and international USD payments. You or your customer can transfer money electronically to a recipient and a recipient can access the money, typically the same day.&#x20;

Wire transfers go through [Fedwire](https://www.frbservices.org/financial-services/wires)® , operated by the U.S. Federal Reserve.

At Cross River, both inbound and outbound international wire transfers go through a domestic intermediary bank. To send or receive international wires in USD, you *must* contact the beneficiary bank to get the needed wire transfer information.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [Pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

## API calls

| Action                                               | API Call                                              | Description                                          |
| ---------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------- |
| [Wire transfer](docId\:mC0d1W1u80umazO85mEIz)        | `POST /wires/v1/payments`                             | Sends a single wire transfer payment                 |
| [Cancel transfer](docId\:hUTHXT2ytyWWet0twOn1-)      | `POST /wires/v1/payments/{id}/cancel`                 | Cancels a wire transfer payment                      |
| [Drawdown request](docId\:DOrha8h1ksr9-M_CT3ac-)     | `POST /wires/v1/payments/corporate-drawdown-requests` | Requests an inbound payment by wire transfer         |
| [Drawdown response](docId\:coz5emuCrFZLGzd59RdnA)    | `POST /wires/v1/payments/{id}/drawdown-responses`     | Responds to a request for a payment by wire transfer |

## Related topics&#x20;

- [Webhook events: Wires](docId\:OA3cg-apKn_510VPq2yYe)&#x20;
- [Request and response codes: Wires](docId\:Z4F24KDEsuecuWm22h6kN)&#x20;
- [Error codes: Wires](docId\:FDCuKp2tQJh2kIrtNmOya)&#x20;

## Tutorials

See our API tutorials to learn how to:

- [Send a wire payment](docId\:PtkMaOjX6exmQAsKrcJNv): Originate a wire payment.
- [Send a drawdown request](docId:91eId7VJOqz4lK3xcERKN): Request a wire payment from an external account.
- [Respond to a drawdown request](docId\:XhGAI8DtioKUeD9qvar3R): Respond to a request for payment sent from an external account.&#x20;
- [Simulate an inbound wire](docId:22hF8HedChZVKiHnSFrYC): Test the system with our simulation endpoint. You can also use this endpoint to fund a test account.


[title] Webhook events: COS Card payments
[path] Payments/Card payments/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific  [webhooks](docId\:qF6bTOPBPNcpLPp9SAtWI) which have a specific [event format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents `Card Payments` Webhook events that are described in detail below.

| Event Name                                                     | Description                                          |
| -------------------------------------------------------------- | ---------------------------------------------------- |
| [CardPayments.Card.Approved](docId\:wso2E9CMh8zs8PyIjC-7r)     | When a card token authorization is approved          |
| [CardPayments.Card.Rejected](docId\:wso2E9CMh8zs8PyIjC-7r)     | When a card token authorization is rejected          |
| [CardPayments.Payment.Cleared](docId\:wso2E9CMh8zs8PyIjC-7r)   | When a payment passes hold evaluations.              |
| [CardPayments.Payment.Completed](docId\:wso2E9CMh8zs8PyIjC-7r) | When a payment transaction is successfully completed |
| [CardPayments.Payment.Rejected](docId\:wso2E9CMh8zs8PyIjC-7r)  | When a payment transaction is rejected               |
| [CardPayments.Payment.Failed](docId\:wso2E9CMh8zs8PyIjC-7r)    | When a payment fails to submit                       |
| [Core.Transaction.Completed](docId\:wso2E9CMh8zs8PyIjC-7r)     | When a payment transaction is successfully completed |

## Event examples

### CardPayments.Card.Approved

:::CodeblockTabs
CardPayments.Card.Approved

```curl
"Data": {
{
    "cardId": "759f4eab-5400-4e25-9815-b4af0085684e",
    "clientIdentifier": "string",
    "productId": "29f3022a-ccfc-42eb-aa8f-b29500f13d00",
    "cardBrand": "Visa",
    "panLastFour": "1111",
    "token": "39A99D770B354E63AC4EFAF64E757F24000000",
    "authorizationStatus": "Approved",
    "accountNumber": "2113556886",
    "masterAccountNumber": "2113556886",
    "avsResponseCode": "Y",
    "avsResponseDesc": null,
    "cvv2ResultCode": "M",
    "isCVVMatched": "True"
}
```
:::

### CardPayments.Card.Rejected

:::CodeblockTabs
CardPayments.Card.Rejected

```curl
"Data": {
{
  "cardId": "ee7870ba-5ef7-4700-92ed-bed8a77abe7c",
  "clientIdentifier": "Test-e0be02",
  "productId": "52cd935d-92ef-403d-9633-b3b000a5766b",
  "cardBrand": "Visa",
  "panLastFour": "0006",
  "authorizationStatus": "Rejected",
     "authorizationStatus": "Approved",
    "accountNumber": "2113556886",
    "masterAccountNumber": "2113556886",
    "avsResponseCode": "N",
    "avsResponseDesc": "Neither street address nor postal code match",
    "cvv2ResultCode": "M",
    "isCVVMatched": "True"
}

```
:::

### CardPayments.Payment.Cleared

:::CodeblockTabs
CardPayments.Card.Complete

```curl
"Data": {
{
  "paymentId": "a2aaa112-16c5-49db-84d8-b38a00fa1b2c",
  "paymentType": "Push",
  "amount": "5",
  "retrievalReferenceId": null,
  "traceNumber": null,
  "reasonCode": null,
  "reasonDescription": null,
  "clientIdentifier": "638977248000000000",
  "coreTransactionId": "18b8597a-393f-483d-9897-b42c00aa5788"
}
```
:::

### CardPayments.Payment.Completed

:::CodeblockTabs
CardPayments.Payment.Complete

```curl
"Data": {
{
  "paymentId": "8ede6bc9-9dd3-48e1-9488-b1720104c696",
  "paymentType": "Push",
  "amount": "2",
  "retrievalReferenceId": "413715103005",
  "traceNumber": "103005",
  "reasonCode": "00",
  "reasonDescription": "Approved",
  "clientIdentifier": "0.3.0-alpha.6-2",
  "coreTransactionId": "18b8597a-393f-483d-9897-b42c00aa5788"
}

```
:::

### CardPayments.Payment.Rejected

:::CodeblockTabs
CardPayments.Payment.Cleared

```curl
"Data": {
{
  "paymentId": "6e8043c7-f72e-41dd-a4ac-b39e01067fb0",
  "paymentType": "Push",
  "amount": "5",
  "retrievalReferenceId": null,
  "traceNumber": null,
  "reasonCode": null,
  "reasonDescription": null,
  "clientIdentifier": null,
  "coreTransactionId": "18b8597a-393f-483d-9897-b42c00aa5788"
}
```
:::

### CardPayments.Payment.Failed

:::CodeblockTabs
CardPayments.Payment.Failed

```curl
"Data": {
{
  "paymentId": "eb8f80f8-6e1c-428f-be54-b1720103ea5d",
  "paymentType": "Push",
  "amount": "2",
  "retrievalReferenceId": null,
  "traceNumber": null,
  "reasonCode": "1000",
  "reasonDescription": "AddressLine1 for corresponding entity is required.",
  "clientIdentifier": "0.3.0-alpha.6-1",
  "coreTransactionId": "18b8597a-393f-483d-9897-b42c00aa5788"
}

```
:::

### Core.Transaction.Completed

:::CodeblockTabs
Core.Transaction.Completed

```text
PULL:
{    
     "id": "1C966B7F-ADAC-4D59-8434-B41C00BC39AB",
     "eventName": "Core.Transaction.Completed",
     "status": "Unregistered",
     "partnerId": "AB904B78-26E8-4175-A843-B3A7010CA1FF",
     "createdAt": "2026-03-29T07:25:18.603-04:00",
     "resources": [
         "core/v1/transactions/afb3c312-2f7c-4cbe-b5c3-b41c00bc39a0"
     ],
     "details": [
         {
             "transactionId": "afb3c312-2f7c-4cbe-b5c3-b41c00bc39a0",
             "transactionCode": "Card Pull",
             "debitSubAccount": "105877357084",
             "debitMasterAccount": "105877357084",
             "debitResult": "OK",
             "creditSubAccount": "144235477557",
             "creditMasterAccount": "144235477557",
             "creditResult": "OK",
             "rail": "CardPayments",
             "railId": "payment/61e90dbd-007d-4f3d-a9ce-b41c00bc3109",
             "amount": "5",
             "currency": "usd",
             "clientIdentifier": null,
             "description": "CardPayments from Card b2703437-a780-4c12-8e13-ac5faf5342e9 to Account 144235477557",
             "proposedAt": "03/29/2026 07:25:18",
             "executedAt": "03/29/2026 07:25:18",
             "schedule": ""
         }
     ]
  }
  

PUSH:
 {
     "id": "1883EFA6-1E42-40BA-890A-B41C012B2BE0",
     "eventName": "Core.Transaction.Completed", 
     "status": "Unregistered",
     "partnerId": "AB904B78-26E8-4175-A843-B3A7010CA1FF",
     "createdAt": "2026-03-29T14:09:15.150-04:00",
     "resources": [
         "core/v1/transactions/ccee19ab-ba83-44f5-b479-b41c012b2bd4"
     ],
     "details": [
         {
             "transactionId": "ccee19ab-ba83-44f5-b479-b41c012b2bd4",
             "transactionCode": "Card Push",
             "debitSubAccount": "144235477557",
             "debitMasterAccount": "144235477557",
             "debitResult": "OK",
             "creditSubAccount": "105877357084",
             "creditMasterAccount": "105877357084",
             "creditResult": "OK",
             "rail": "CardPayments",
             "railId": "payment/f0546026-6711-4ed5-9c73-b41c012b2b71",
             "amount": "5",
             "currency": "usd",
             "clientIdentifier": null,
             "description": "CardPayments from Account 144235477557 to Card 8db749e2-830d-473b-bc38-b6a7f5dbc75a",
             "proposedAt": "03/29/2026 14:09:14",
             "executedAt": "03/29/2026 14:09:14",
             "schedule": ""
         }
     ]
  }

 
```
:::


[title] Sample cards for testing: COS Card Payments
[path] Payments/Card payments/

Cross River provides you with these test cards for use in our [sandbox](docId\:YDqX1Hwsn_f6TZ4tdMY0t).&#x20;

| Mastercard (Debit) | VISA OCT (Prepaid) | VISA OCT(Debit)  |
| ------------------ | ------------------ | ---------------- |
| 5102589999999905   | 4000289999999908   | 4007589999999904 |
| 5102589999999913   | 4000289999999916   | 4007589999999912 |
| 5102589999999921   | 4000289999999924   | 4007589999999920 |
| 5102589999999939   | 4000289999999932   | 4007589999999938 |
| 5102589999999947   | 4000289999999940   | 4007589999999946 |
| 5102589999999954   | 4000289999999957   | 4007589999999953 |
| 5102589999999962   | 4000289999999965   | 4007589999999961 |
| 5102589999999970   | 4000289999999973   | 4007589999999979 |
| 5102589999999988   | 4000289999999981   | 4007589999999987 |
| 5102589999999996   | 4000289999999999   | 4007589999999995 |

## Other helpful resources

:::hint{type="info"}
These are external websites and not under control of Crossriver.
:::

- [Visa Acceptance Solutions - Support Center](https://support.visaacceptance.com/knowledgebase/knowledgearticle/?code=000001655)
- [Mastercard Sandbox Test Cards](https://developer.mastercard.com/mastercard-send/documentation/implementation/sandbox-test-cards/)
- [Stripe Test Cards](https://docs.stripe.com/testing)

[title] Card payments
[path] Payments/

:::CtaButton{label="Card payments concepts (New)" docId="y_2uVmzGOChmtEPEO4IPy" openInNewTab="true"}

:::

Use Cross River Card Payment APIs to manage tokens and make payments.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns for general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control the presentation of your results.

# Card

Use Cross River card token APIs to add, activate and search for card tokens.

| Action                                            | API Call                             | Description                                                |
| ------------------------------------------------- | ------------------------------------ | ---------------------------------------------------------- |
| [Card token by ID](docId\:kRmBb3iHaNhpkp-LZuWnz)  | `GET /v1/cardtokens/{id}`            | Retrieves the information for a card token through tokenID |
| [Card token](docId\:rSdKz1VuCBYmhXquY9cyb)        | `GET /v1/cardtokens`                 | Retrieves the information for all card tokens              |
| [Card tokens](docId\:CfF80NPHRpP3BUz2yCqRA)       | `POST /v1/cardtokens`                | Creates a card token                                       |
| [Card activation](docId\:IT4gSuVvqhwTY0S7S85w7)   | `PUT /v1/cardtokens/{id}/activation` | Activates/deactivates a card                               |

# Payments

Use Cross River Card Payments Transaction APIs to push or pull funds to or from a debit card. Use the GET endpoints to find out about a specific transaction or many transactions. The POST calls require a credit card token.&#x20;

| Action                                         | API Call               | Description                                                                     |
| ---------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------- |
| ﻿[Send payments](docId\:c6CjUrm0nl_nOY4oeJ8Gu) | `POST /v1/payments`    | Set the `paymentType` to "push". Sends funds (push) to a specific debit card    |
| [Request funds](docId\:KVpHbesGRkxsFI6YyS8zD)  | `POST /v1/payments`    | Set the `paymentType` to "pull".  Pulls funds from a specific card from a payer |
| [Payments](docId\:MXgVroBUdlKwNkDkjdQCg)       | `GET /v1/payments`     | Returns a list of transactions                                                  |
| [Payments by ID](docId:1XHjAplurDjMikKTX29_G)  | `GET v1/payments/{id}` | Returns transaction details of a specific transaction                           |

# Foreign exchange rates

| Action                                                 | API Call           | Description                                                                               |
| ------------------------------------------------------ | ------------------ | ----------------------------------------------------------------------------------------- |
| [Foreign exchange rate](docId\:c7lRwhp81EmpW2u9lN4i-)  | `POST /v1/fxRates` | For a currency pair, gets updated foreign exchange rate information from the card network |

# Related topics

- [Webhook events: COS Card payments](docId\:wso2E9CMh8zs8PyIjC-7r)&#x20;
- [Error codes: COS Card payments](docId\:i9WcOaYoSIZfkqnhPqQGM)&#x20;


[title] Request and response codes: Instant payments
[path] Payments/Instant payments/

## Payment status

The payment status is reflected in the `status` field of Instant Payment responses. Below is a breakdown of the possible statuses for instant payments:

| **Status**       | **Description**                                                                                                                                                                                                     |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Created          | Initial status for both inbound and outbound payments.                                                                                                                                                              |
| Pending          | Outbound – Payment is under validation before submission to the RTP network.<br />Inbound – Payment has been received and is awaiting authorization.                                                                |
| Processing       | Outbound – Payment has been submitted to the Instant Payments network.<br />Inbound – Payment is authorized and awaiting confirmation of successful processing by the network.                                      |
| Completed\*      | Outbound – Payment accepted and received by the receiving institution.<br />Inbound – Payment has been received and accepted.<br />*For credit transfers, this also indicates the payment has successfully posted.* |
| Rejected\*       | Outbound – Payment was rejected by the receiving institution or RTP network.<br />Inbound – Payment was manually or automatically rejected.<br />*Rejection reasons are found in the Result.Code field.*            |
| Canceled\*       | Outbound payment canceled by an internal user while in Hold or ResearchRequired status.<br />*Payments can only be canceled in these statuses.*                                                                     |
| Hold             | Payment is under review by the Operations Team.                                                                                                                                                                     |
| TimedOut\*       | Payment was not acknowledged within the SLA window with The Clearing House.                                                                                                                                         |
| Failed\*         | Payment failed due to technical issues.                                                                                                                                                                             |
| Finalizing       | Payment is in the process of posting to an account.                                                                                                                                                                 |
| ResearchRequired | No response was received for an outbound payment. Manual review is required to determine if the payment should be canceled or completed.                                                                            |

**\*** *Indicates a final status for a payment.*

## Payment types

The `paymentType` field in Instant Payments responses specifies the nature of the transaction. This value provides details about the type of payment or request being processed, indicating whether it involves monetary movement or serves as a non-monetary notification or request.

| **Type**                        | **Description**                                                                                                                                                                                                                                                                  |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CreditTransfer                  | Payment sent by a Debtor FI to a Creditor FI.                                                                                                                                                                                                                                    |
| ReturnRequest                   | The originator of the original payment is requesting the funds be returned. This is a non-monetary transaction.                                                                                                                                                                  |
| ReturnResponse                  | Response to a Return of Funds request. This is a non-monetary transaction. The actual money movement to return funds would be done in another payment as a credit transfer.                                                                                                      |
| SystemTimeout                   | Notification to the Creditor FI that a Credit Transfer has timed out. This is a non-monetary transaction.                                                                                                                                                                        |
| RemittanceAdvice\*              | Allows the Debtor to send stand-alone remittance information to the Creditor or the Creditor to send detailed invoice information to the Debtor (B2B or B2C). This is a non-monetary transaction.                                                                                |
| RequestForInformation\*         | Used to request additional details related to a Credit Transfer or a Request for Payment that has been received. This is a non-monetary transaction.                                                                                                                             |
| PaymentAck\*                    | Acknowledges that a Credit Transfer has been received and applied. A Creditor FI must use a Payment Acknowledgement to confirm the funds associated with a Credit Transfer (accepted without posting) have posted to the Creditor’s account. This is a non-monetary transaction. |
| RequestForInformationResponse\* | Provides requested additional information as an amendment to the original Request for Payment or Credit Transfer. This is a non-monetary transaction.                                                                                                                            |
| Unknown                         | Payment type was not recognized.                                                                                                                                                                                                                                                 |

**\*** *This payment type is not currently supported.*

## Network platform

| Network Platform | Description                                                                                                 |
| ---------------- | ----------------------------------------------------------------------------------------------------------- |
| TCH              | The pacs.008 credit transfer is routed through the RTP® network via The Clearing House (TCH).               |
| FedNow           | The pacs.008 credit transfer is routed through the FedNow® network.                                         |
| CRNow            | The pacs.008 credit transfer is routed internally through Cross River’s CRNow network for partner payments. |
| No value         | The credit transfer is routed according to [Network interoperability](docId:7HeOa4-BINjvx0kSdLKD3)          |

## Reject/Reason Codes

The `resultCode` in Instant Payments responses explains why a payment didn’t complete. If successful, the `resultCode` will show `OK`**.**

| **Code** | **Description**                                           |
| -------- | --------------------------------------------------------- |
| 650      | Cannot parse the message                                  |
| 690      | Signature mismatch or verification error                  |
| OK       | Ok                                                        |
| BLKD     | Payment has been blocked                                  |
| AC02     | Debtor account is invalid                                 |
| AC03     | Creditor account is invalid                               |
| AC04     | Account closed                                            |
| AC06     | Account is blocked                                        |
| AC07     | Creditor account closed                                   |
| AC10     | Debtor account currency is invalid or missing             |
| AC11     | Creditor account currency is invalid or missing           |
| AC13     | Debtor account type missing or invalid                    |
| AC14     | Creditor account type missing or invalid                  |
| AG01     | Transaction forbidden on this type of account             |
| AG03     | Transaction type not supported/authorized on this account |
| AGNT     | Incorrect Agent                                           |
| AM02     | Transaction amount exceeds allowed maximum                |
| AM04     | Insufficient funds to cover message amount                |
| AM09     | Amount received is not as agreed or expected              |
| AM11     | Transaction currency is invalid or missing                |
| AM12     | Amount is invalid or missing                              |
| AM13     | Transaction amount exceeds clearing system limits         |
| AM14     | Transaction amount exceeds limits set by bank and client  |
| BE04     | Creditor's address missing or incorrect                   |
| BE06     | End customer not known or no longer exists                |
| BE07     | Debtor's address missing or incorrect                     |
| BE10     | Debtor country code is missing or invalid                 |
| BE11     | Creditor country code is missing or invalid               |
| BE13     | Debtor’s residence country code missing or invalid        |
| BE14     | Creditor’s residence country code missing or invalid      |
| BE16     | Debtor identification code missing or invalid             |
| BE17     | Creditor identification code missing or invalid           |
| DS24     | Waiting time expired due to incomplete order              |
| DT04     | Future date not supported                                 |
| DUPL     | Duplicate payment detected                                |
| DS0H     | Signer not authorized for this account                    |
| FF02     | Syntax error in narrative information                     |
| FF03     | Invalid Payment Type Information                          |
| FF08     | End to End Id missing or invalid                          |
| MD07     | End customer is deceased                                  |
| NARR     | Narrative information provided for reason                 |
| RC01     | Bank identifier code format is incorrect                  |
| RC02     | Bank identifier is invalid or missing                     |
| RC03     | Debtor FI identifier is invalid or missing                |
| RC04     | Creditor FI identifier is invalid or missing              |
| TM01     | Invalid Cut Off Time                                      |
| TK01     | Invalid Token                                             |
| TK02     | Sender Token Not Found                                    |
| TK03     | Receiver Token Not Found                                  |
| TK04     | Token Expired                                             |
| TK05     | Token Counterparty Mismatch                               |
| TK06     | Token Value Limit Rule Violation                          |
| TK07     | Single Use Token Already Used                             |
| TK08     | Token Suspended                                           |
| INSF     | Insufficient funds for outbound message                   |
| NOAT     | Customer account does not support this message type       |
| 1100     | Reason provided in additional information                 |
| 9909     | Central Switch (RTP) system malfunction                   |
| 9910     | Instructed Agent signed-off                               |
| 9912     | Recipient connection unavailable                          |
| 9934     | Instructing Agent signed-off                              |
| 9946     | Instructing Agent suspended                               |
| 9947     | Instructed Agent suspended                                |
| 9948     | Central Switch (RTP) service suspended                    |

## Return Response Reject Codes

The `returnResponseRejectCodes` attribute specifies the reason for rejecting a return response. This applies only to RTP via TCH.

| **Code** | **Description**                  |
| -------- | -------------------------------- |
| AC04     | Closed Account Number            |
| AM04     | Insufficient Funds               |
| ARDT     | Already Returned                 |
| CUST     | Customer Decision                |
| LEGL     | Legal Decision                   |
| NOAS     | No Answer From Customer          |
| NOOR     | No Original Transaction Received |

## Return Request Statuses

The `returnRequestStatuses` attribute indicates the status of a return request. This applies only to RTP via TCH.

| **Code** | **Description**                        |
| -------- | -------------------------------------- |
| IPAY     | Payment will be refunded               |
| RJCR     | Cancellation request has been rejected |
| PECR     | Payment will be partially refunded     |

## Return Request Codes

The `returnRequestCodes `attribute defines the reason for initiating a return request. This applies only to RTP via TCH.

| **Code** | **Description**                                                                           |
| -------- | ----------------------------------------------------------------------------------------- |
| AC03     | Invalid Creditor Account Number - Requested by the customer due to mistake or error       |
| AM09     | Wrong Amount - Amount of the Credit Transfer or Request for Payment is incorrect          |
| CUST     | Requested By Customer - Cancellation requested by the Debtor due to mistake or error      |
| DUPL     | Duplicate Payment - Identical to another transaction                                      |
| FRAD     | Fraudulent Origin - Debtor claims the payment was unauthorized or fraudulently induced    |
| FRTR     | Final Response - Repeat attempt due to prior non-response                                 |
| TECH     | Technical Problem - Cancellation requested due to technical issues                        |
| UPAY     | Undue Payment - Payment was made through another channel (for Request for Payment expiry) |
| WIAM     | Wrong Amount with Indemnity                                                               |
| WICT     | Requested By Customer with Indemnity                                                      |
| WIDP     | Duplicate Payment with Indemnity                                                          |
| WIFD     | Fraudulent Origin with Indemnity                                                          |
| WIFT     | Final Response with Indemnity                                                             |
| WITH     | Technical Problem with Indemnity                                                          |

## FedNow Return Request Codes

The `fedNowReturnRequestCodes` attribute defines return request reasons for FedNow transactions.

| **Code** | **Description**                                                                           |
| -------- | ----------------------------------------------------------------------------------------- |
| AC03     | Invalid Creditor Account Number - Requested by the customer due to mistake or error       |
| AM09     | Wrong Amount - Amount of the Credit Transfer or Request for Payment is incorrect          |
| AGNT     | Requested By Agent                                                                        |
| CUST     | Requested By Customer - Cancellation requested by the Debtor due to mistake or error      |
| CUTA     | Return Request Upon Information Request                                                   |
| DUPL     | Duplicate Payment                                                                         |
| FRAD     | Fraudulent Origin - Debtor claims the payment was unauthorized or fraudulently induced    |
| NARR     | Narrative                                                                                 |
| SVNR     | Service Not Rendered                                                                      |
| TECH     | Technical Problem - Cancellation requested due to technical issues                        |
| UPAY     | Undue Payment - Payment was made through another channel (for Request for Payment expiry) |

## Return Clearing Channels

The `returnClearingChannels` attribute defines the clearing channel used for processing returns.

| **Code** | **Description** |
| -------- | --------------- |
| MPNS     | ACH Payment     |
| RTGS     | FedWire         |
| RTNS     | CHIPS           |

## Payment Acknowledgment Types

The `paymentAckTypes` attribute defines the types of acknowledgments in response to a payment transaction.

| **Code** | **Description**                                                                                                          |
| -------- | ------------------------------------------------------------------------------------------------------------------------ |
| ACK      | Acknowledgment from Creditor (end-user) to the sender of the Credit Transfer                                             |
| ACWP     | Acknowledgment from Creditor FI that funds have been posted to the Creditor Account following an ACWP transaction status |

## Request for Payment Response Codes

The `requestForPaymentResponseCodes` attribute defines the possible responses to a request for payment. This applies only to RTP via TCH.

| **Code** | **Description**                                                        |
| -------- | ---------------------------------------------------------------------- |
| AC06     | Account specified is blocked, prohibiting transactions                 |
| AG01     | Transaction forbidden on this type of account                          |
| AG03     | Transaction type not supported or authorized on this account           |
| AM09     | Amount received is incorrect                                           |
| AM14     | Transaction amount exceeds limits agreed between bank and client       |
| BE04     | Missing or incorrect creditor address required for payment             |
| BE07     | Missing or incorrect debtor address required for payment               |
| CH11     | Creditor Identifier Incorrect - Customer indicates creditor is unknown |
| CUST     | Requested By Customer - Customer declines payment                      |
| DS04     | Order Rejected - The bank rejected the order due to content issues     |
| MD07     | End customer is deceased                                               |
| NARR     | Narrative reason provided in additional information                    |
| 1100     | Other Reasons - Not covered by specific codes                          |
| SL12     | Debtor does not wish to receive RFPs from this Creditor                |

## Request for Payment Cancellation Codes

The `requestForPaymentCancellationCodes` attribute defines the reasons for canceling a request for payment. This applies only to RTP via TCH.

| **Code** | **Description**                                           |
| -------- | --------------------------------------------------------- |
| AC03     | Invalid Creditor Account Number                           |
| AM09     | Incorrect Amount                                          |
| CUST     | Requested By Customer - Cancellation requested            |
| DUPL     | Duplicate Payment                                         |
| FRAD     | Fraudulent Payment - Unauthorized or fraudulently induced |
| TECH     | Technical Problem - Cancellation due to system issues     |
| UPAY     | Undue Payment - Payment was made through another channel  |
| AC14     | Invalid or Missing Creditor Account Type                  |
| AM06     | Amount Too Low                                            |
| BE05     | Unrecognized Initiating Party                             |
| FOCR     | Following Refund Request                                  |
| MS02     | No Specified Reason - Customer                            |
| MS03     | No Specified Reason - Agent                               |
| NARR     | Narrative reason provided in additional information       |
| RR04     | Regulatory Reason                                         |
| RUTA     | Return Upon Unable To Apply                               |

## FedNow Request for Payment Response Codes

The `fedNowRequestForPaymentResponseCodes` attribute defines responses for a FedNow request for payment.

| **Code** | **Description**                                         |
| -------- | ------------------------------------------------------- |
| AC02     | Invalid Debtor Account                                  |
| AC05     | Closed Debtor Account                                   |
| AC06     | Blocked Account                                         |
| AG01     | Transaction Forbidden                                   |
| AG03     | Transaction Not Supported or Authorized on This Account |
| AM04     | Insufficient Funds                                      |
| AM09     | Amount Received is Incorrect                            |
| AM14     | Transaction Amount Exceeds Limits                       |
| BE01     | Inconsistent End Customer                               |
| BE05     | Unknown Initiating Party                                |
| CUST     | Requested By Customer                                   |
| DS02     | Order Canceled                                          |
| DT01     | Incorrect Date                                          |
| DUPL     | Duplicate Request for Payment                           |
| NARR     | Narrative reason provided in additional information     |

## Transaction account context

- `TransactionAccountContext` is an internal CR code that provides extra details about a payment’s state within its current status.
- To understand the overall status of a payment in relation to the Instant Payments network, refer to `PaymentStatus`.

| Context      | Description                                       |
| ------------ | ------------------------------------------------- |
| NotSubmitted | Payment has not been been sent to the RTP Network |
| Pending      | Payment is in a pending state                     |
| Processing   | Payment is processing                             |
| Complete     | Payment has completed                             |
| Reversal     | Transaction is being reversed                     |
| MemoPost     | Attempting to set a Memo Post                     |
| TimedOut     | Action has timed-out                              |
| Canceled     | Action has been canceled                          |
| Rejected     | Payment has been rejected                         |
| AuthOnly     | Authorizing a transaction                         |
| NotSet       | Not Set                                           |

## Transaction Status

Network status of the payment (`rtpTransactionStatus`) as determined by the receiving institution, this status applies to Credit Transfers and Requests for Payment.

| **Status** | **Description**                                                                                                                                               | **Network platform** |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
| ACTC       | Payment has been accepted.                                                                                                                                    | TCH, FedNow, CRNow   |
| RJCT       | Payment or payment-related message has been rejected.                                                                                                         | TCH, FedNow, CRNow   |
| RCVD       | Payment-related message has been received by the receiving institution.                                                                                       | TCH                  |
| ACWP       | Payment instruction within the credit transfer is accepted but not yet posted to the creditor’s account.                                                      | TCH, FedNow          |
| ACCC       | Payment has been posted to the creditor customer’s account.                                                                                                   | FedNow               |
| ACSC       | Accepted settlement is completed.                                                                                                                             | FedNow               |
| BLCK       | A payment previously in ACWP status is now blocked. Funds will not be posted to the creditor’s account or returned to the debtor’s account. (FedNow specific) | FedNow               |
| PDNG       | Payment in ACWP status has not yet posted to the creditor’s account. (FedNow specific)                                                                        | FedNow               |

## ServiceLevelCode

`SDVA` is the only accepted code for RTP via TCH, indicating that payments must be executed with same-day value to the creditor (processed in seconds for RTP via TCH).

## LocalInstrumentProprietary

For RTP via TCH, this identifies the origination condition of the instruction, allowing the instructed agent to correctly process the transaction.

| **Code**     | **Description**                                                                                                             |
| ------------ | --------------------------------------------------------------------------------------------------------------------------- |
| INTERMEDIARY | Payment sent through a domestic Payment Service Provider – either “Ultimate Debtor” or “Ultimate Creditor” must be present. |
| STANDARD     | Standard RTP payment.                                                                                                       |

## CategoryPurpose

Identifies the Debtor/Sender as a business or consumer customer of the Debtor FI.

### RTP via TCH Category Purpose Codes

| **Code** | **Description**     |
| -------- | ------------------- |
| BUSINESS | Business initiated. |
| CONSUMER | Consumer initiated. |

### FedNow Category Purpose Codes

| **Code** | **Description**       |
| -------- | --------------------- |
| BIZZ     | Business initiated.   |
| CONS     | Consumer initiated.   |
| GOVT     | Government initiated. |

## Service codes returned by Service Info call

:::hint{type="info"}
Even if a financial institution lists a specific service, it does not guarantee that the creditor or debtor account at that institution is eligible for it.
:::

### Available Instant Payments services for TCH

| **Code**  | **Description**                      | **Details**                                                        |
| --------- | ------------------------------------ | ------------------------------------------------------------------ |
| **CRDT**  | Credit Transfer                      | Permits receipt of Credit Transfer (pacs.008)                      |
| **RFP**   | Request for Payment                  | Permits receipt of Request for Payment (pain.013)                  |
| **ACK**   | Payment Acknowledgement              | Permits receipt of Payment Acknowledgement (camt.035)              |
| **RMT**   | Remittance Advice                    | Permits receipt of Remittance Advice (remt.001)                    |
| **RFI**   | Request for Information              | Permits receipt of Request for Information (camt.026)              |
| **RFRF**  | Request for Return of Funds          | Permits receipt of Request for Return of Funds (camt.056)          |
| **RFPR**  | Request for Payment Response         | Permits receipt of Request for Payment Response (pain.014)         |
| **RFIR**  | Request for Information Response     | Permits receipt of Request for Information Response (camt.028)     |
| **RFRFR** | Request for Return of Funds Response | Permits receipt of Request for Return of Funds Response (camt.029) |

### Available Instant Payments services for FedNow

| **Code** | **Description**                           | **Details**                                                            |
| -------- | ----------------------------------------- | ---------------------------------------------------------------------- |
| **CTRO** | Customer Credit Transfer Receive Only     | Participant can receive instant credit transfers and returns.          |
| **CTSR** | Customer Credit Transfer Send and Receive | Participant can send and receive instant credit transfers and returns. |
| **RFPR** | Request For Payment Receive               | Participant can receive and respond to Request for Payment messages.   |


[title] Card token by ID
[path] Payments/Card payments/Card Tokens APIs/

## API reference

Retrieves the information for a card token through token ID

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardpayments/v1/cardtokens/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/cardtokens/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "dd_pgZpSxzbUktNZ6L5-X",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardpayments/v1/cardtokens/febe40ae-cbe7-4428-9aab-b41b004159eb' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer token'"
      },
      {
        "id": "1QvSUY2FlpjXLjWRvM1a7",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  'url': 'https://sandbox.crbcos.com/cardpayments/v1/cardtokens/5583ec45-8870-4570-a2a7-b3ef0164e605',\n  'headers': {\n    'Accept': 'application/json',\n    'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjlqdXNaakYyUUxWa3RjOFljdzdQc1hmcmN1YyIsIng1dCI6IjlqdXNaakYyUUxWa3RjOFljdzdQc1hmcmN1YyIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3MTM5OTYxNCwiaWF0IjoxNzcxMzk5NjE0LCJleHAiOjE3NzE0MDE0MTQsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3MTM5NjIxNiwiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwiZGV2U2VjLkludC5EZXYiXSwic2lkIjoiRkZEQTE2N0E5NUFGMDVFRkI4REQ1MUMzRjFEMDA4REEiLCJqdGkiOiJBMzRENDYxRkFFOTJFNEQ5QjVFQ0IwMUQ2Q0FDRTAxMiJ9.jvRqde5816YfxJbe5XaWBDGcwzrkp3hTp2x1M_rY0nAYXCsQ4AxflJu1eoE8oSco-qnl4XjnjODvvDD8J2leFb68Gg87FxrVGz3VY4ZFGSgcuXPRQZjD-NhcMU5IcTdb7MlBR8O59Uy37iYoQDEXIUt1XeKpDRzewBFwGJ-Z7B36Y9ngI1t_cvTNzuVYnocK3wbrcj90lcuqgWnily7RGMr5_UIKKd8AzRdCzgSj1w2fDKGsn13FNyqw6AK4VrIhdDnx6j2682fDo5OIb6ZV0k6_B0H1PCAagGauXaVFoKtpmqkZ5Evh1PkXe2z8JkkayJ_wS96FogP3E48KsURx9A'\n  }\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n"
      },
      {
        "id": "FGiJE4RC1Rx2xNfVXaV1E",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Accept': 'application/json',\n  'Authorization': 'Bearer toekn'\n}\nconn.request(\"GET\", \"/cardpayments/v1/cardtokens/febe40ae-cbe7-4428-9aab-b41b004159eb\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "f6A3eOaaUCoybD4CgyOjG",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardpayments/v1/cardtokens/febe40ae-cbe7-4428-9aab-b41b004159eb\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA3NjQxOCwiaWF0IjoxNzc2MDc2NDE4LCJleHAiOjE3NzYwNzgyMTgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkE0RTA4N0VFRUIyODNBNENGNTE0RUNGMDk3MUMxNEIyIn0.QLxmFznRw6J4XX3b3i7Z9L_f9bF3cS7qykLtj5U6WcTSQG5BYWNsX37YG5UCKTpjWZBEeZH2svFlLHomr_hXBioSkdT2P8q78yMDnc0QHk4E4_jsF7zKAYFtKzMAC8aN2TRUgk-X5uh592WIOMrzi2j1CVP8S_KnL2voabn8KYcqpQ6BnxEQUXxNjGFv3monJtYqHqcrUWiTwMXhG4hIhCWInDnSElhzhf5-5aUS0QBG703qx5oErPg4mPBVoa9wZFDQi9Fa-K0VwOwWcmg6TFbC8E-xKlJUDeXT-07LRaUJCm_k8yocVdaCusevyUO4B-3m0xfkZ1KmuFJGGikPfQ\"\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "zzEWc_Vm-AKGY-GUPo_B7",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardpayments/v1/cardtokens/febe40ae-cbe7-4428-9aab-b41b004159eb\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA3NjQxOCwiaWF0IjoxNzc2MDc2NDE4LCJleHAiOjE3NzYwNzgyMTgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkE0RTA4N0VFRUIyODNBNENGNTE0RUNGMDk3MUMxNEIyIn0.QLxmFznRw6J4XX3b3i7Z9L_f9bF3cS7qykLtj5U6WcTSQG5BYWNsX37YG5UCKTpjWZBEeZH2svFlLHomr_hXBioSkdT2P8q78yMDnc0QHk4E4_jsF7zKAYFtKzMAC8aN2TRUgk-X5uh592WIOMrzi2j1CVP8S_KnL2voabn8KYcqpQ6BnxEQUXxNjGFv3monJtYqHqcrUWiTwMXhG4hIhCWInDnSElhzhf5-5aUS0QBG703qx5oErPg4mPBVoa9wZFDQi9Fa-K0VwOwWcmg6TFbC8E-xKlJUDeXT-07LRaUJCm_k8yocVdaCusevyUO4B-3m0xfkZ1KmuFJGGikPfQ\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "dd_pgZpSxzbUktNZ6L5-X"
  },
  "results": {
    "languages": [
      {
        "id": "zSKeGucw0Ij9uNyBPihiv",
        "language": "200",
        "code": "{\n    \"id\": \"759f4eab-5400-4e25-9815-b4af0085684e\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n    \"accountNumber\": \"2113556886\",\n    \"masterAccountNumber\": \"2113556886\",\n    \"token\": \"39A99D770B354E63AC4EFAF64E757F24000000\",\n    \"rail\": \"VisaDirect\",\n    \"cardType\": \"Debit\",\n    \"productType\": \"Unknown\",\n    \"authorizationStatus\": \"Approved\",\n    \"statusReasonCode\": \"00\",\n    \"statusReasonDescription\": \"Approved and completed successfully\",\n    \"isAuthorized\": true,\n    \"firstName\": \"Bob\",\n    \"lastName\": \"Bobbie\",\n    \"address\": {\n        \"street1\": \"101 Main Street\",\n        \"street2\": \"More address info\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"07666\",\n        \"countryCode\": \"US\"\n    },\n    \"isAddressVerified\": true,\n    \"addressVerificationDetails\": {\n        \"avsResponseCode\": \"Y\",\n        \"cvv2ResultCode\": \"M\",\n        \"isCVVMatched\": true\n    },\n    \"accountNameInquiryUsed\": \"Used\",\n    \"accountNameInquiryResult\": \"Match\",\n    \"nameVerificationDetails\": {\n        \"lastNameVerificationStatus\": \"Match\",\n        \"firstNameVerificationStatus\": \"Match\",\n        \"middleNameVerificationStatus\": \"Match\",\n        \"nameVerificationProcessingResult\": \"Name Match Performed\"\n    },\n    \"phone\": \"2015551212\",\n    \"emailAddress\": \"mmm@xxx.com\",\n    \"binNumber\": \"411111\",\n    \"panLastFour\": \"1111\",\n    \"expirationMonth\": 12,\n    \"expirationYear\": 2030,\n    \"cardFingerprint\": \"7BleaDLyA+3nxDUkoX6WjE0GKUHvEniZuoJFFjVd0muNYH4P3VOoV0w5LX3JW4h75OMx50mIRTS6xnpcxLX/2w==\",\n    \"isExpired\": false,\n    \"cardBrand\": \"Visa\",\n    \"capabilities\": {\n        \"fastFundsSupported\": true,\n        \"domesticPushEnabled\": true,\n        \"domesticPullEnabled\": true,\n        \"internationalPushEnabled\": true,\n        \"internationalPullEnabled\": true\n    },\n    \"issuerCountryCode\": \"US\",\n    \"clientIdentifier\": \"string\",\n    \"createdAt\": \"2026-08-23T04:05:43.3-04:00\",\n    \"isActive\": true,\n    \"authorizedAt\": \"2026-08-23T04:05:43.597-04:00\",\n    \"lastModifiedAt\": \"2026-08-23T04:05:43.5968251-04:00\"\n}",
        "customLabel": ""
      },
      {
        "id": "W5Gl11RtUiB7WeXh6Hp_d",
        "language": "400",
        "code": "{\n   \"errors\": [\n     {\n       \"code\": 0,\n       \"message\": \"string\"\n     } \n   ] \n}    ",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zSKeGucw0Ij9uNyBPihiv"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The GUID of the card token you want to retrieve",
        "": "The GUID of the card token you want to retrieve"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID of the card token you want to retrieve"
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the partner, as defined in COS."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the product, as defined in COS."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number"
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The master account number that the card token's account belongs to. If `accountNumber` is a sub-account, this is the parent account it rolls up to; otherwise the two values are the same."
    },
    {
      "name": "token",
      "kind": "optional",
      "type": "string",
      "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters). "
    },
    {
      "name": "rail",
      "kind": "optional",
      "type": "string",
      "description": "The processor that communicates with the card network:\n\n- McSend\n- TabaPay\n- VisaDirect"
    },
    {
      "name": "cardType",
      "kind": "optional",
      "type": "string",
      "description": "The kind of payment card:\n\n- Credit\n- Debit\n- Prepaid\n- Combo\n- ChargeCard\n- DeferredDebit\n- VisaPlus\n- Unknown"
    },
    {
      "name": "productType",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder card type:\n\n- Consumer\n- Commercial\n- Government\n- Business\n- Unknown"
    },
    {
      "name": "authorizationStatus",
      "kind": "optional",
      "type": "string",
      "description": "Responses can be:\n- NotRequired\n- New\n- Pending\n- Approved\n- Rejected\n- Failed"
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "A code indicating the reason for certain statuses, particularly useful in rejections or failures."
    },
    {
      "name": "statusReasonDescription",
      "kind": "optional",
      "type": "string",
      "description": "A description explaining the reason code."
    },
    {
      "name": "isAuthorized",
      "kind": "optional",
      "type": "boolean",
      "description": "An indicator on whether or not the card token is authorized"
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "First name. Min 1 character, max 35 characters"
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Middle name. Min 1 character, max 35 characters",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Last name. Min 1 character, max 35 characters"
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "object",
      "description": "Address of card holder",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Street address line 1. Max length 60"
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Street address line 2. Max length 60"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the city. Max length 60"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State code. 2 characters"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Max 10 characters"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        }
      ]
    },
    {
      "name": "isAddressVerified",
      "kind": "optional",
      "type": "boolean",
      "description": "An indicator on whether or not the address was verified"
    },
    {
      "name": "addressVerificationDetails",
      "kind": "optional",
      "type": "object",
      "description": "Detailed results from Address Verification Service (AVS) and CVV2 verification performed during card authorization",
      "children": [
        {
          "name": "avsResponseCode",
          "kind": "optional",
          "type": "string",
          "description": "AVS response code from the card network (e.g., 'Y' for match, 'N' for no match). Max 10 characters"
        },
        {
          "name": "avsResponseDesc",
          "kind": "optional",
          "type": "string",
          "description": "Human-readable description of the AVS response. Max 255 characters"
        },
        {
          "name": "cvv2ResultCode",
          "kind": "optional",
          "type": "string",
          "description": "CVV2 verification result code from the card network. Max 10 characters"
        },
        {
          "name": "isCVVMatched",
          "kind": "optional",
          "type": "boolean",
          "description": "Indicates whether the CVV2 provided matched the card on file"
        }
      ]
    },
    {
      "name": "accountNameInquiryUsed",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether Cross River tried to contact the ANI service. This attribute value will also let you know if the merchant isn't configured for the ANI service. In that case, we recommend contacting your Cross River relationship manager for details on how to connect to ANI.",
      "children": []
    },
    {
      "name": "accountNameInquiryResult",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the initiator-provided card details match fully, partially, or not at all, or if they are unknown. Possible values are:\nMatch\nNo Match\nPartial Match\nUnknown",
      "children": []
    },
    {
      "name": "nameVerificationDetails",
      "kind": "optional",
      "type": "object",
      "description": "Acquirer Network Information (ANI) results for cardholder name verification performed during card authorization",
      "children": [
        {
          "name": "lastNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the last name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "firstNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the first name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "middleNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the middle name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "nameVerificationProcessingResult",
          "kind": "optional",
          "type": "string",
          "description": "Overall processing result for name verification (e.g., 'SUCCESS', 'FAILED')"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "string",
      "description": "Valid phone number"
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Valid email address"
    },
    {
      "name": "binNumber",
      "kind": "optional",
      "type": "string",
      "description": "The first 4 digits on the card. This identification number indicates the card-issuing bank."
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of PAN "
    },
    {
      "name": "expirationMonth",
      "kind": "optional",
      "type": "integer",
      "description": "Two-digit month. Credit cards expire at the end of the month written on the card"
    },
    {
      "name": "expirationYear",
      "kind": "optional",
      "type": "integer",
      "description": "Two-digit year"
    },
    {
      "name": "cardFingerprint",
      "kind": "optional",
      "type": "string",
      "description": "A consistent, opaque identifier for a card without exposing any PAN-related data or risking reversibility",
      "children": []
    },
    {
      "name": "isExpired",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the card is expired"
    },
    {
      "name": "cardBrand",
      "kind": "optional",
      "type": "string",
      "description": "Will be one of the following:\n- AmericanExpress\n- ChinaUnionPay\n- Dankort\n- DinersClub\n- Discover\n- Hipercard\n- JCB\n- Laser\n- Maestro\n- MasterCard\n- RuPay\n- Solo\n- Switch\n- Visa\n- Unknown"
    },
    {
      "name": "capabilities",
      "kind": "optional",
      "type": "object",
      "description": "Capabilities are the actions permitted to do on a specific card, these are returned from the rails when the card is authorized",
      "children": [
        {
          "name": "fastFundsSupported",
          "kind": "optional",
          "type": "boolean",
          "description": "Card network can move the funds to the card immediately"
        },
        {
          "name": "domesticPushEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to push within the US"
        },
        {
          "name": "domesticPullEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to pull within the US"
        },
        {
          "name": "internationalPushEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to push internationally- outside of the US"
        },
        {
          "name": "internationalPullEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to pull internationally- outside of the US. \nNote: internationalPullEnabled - IS NOT YET SUPPORTED ACROSS ALL OF THE RAILS"
        }
      ]
    },
    {
      "name": "issuerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "ISO country of issuer. Used for domestic/international logic & compliance"
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "User reference id. Max 50 characters"
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When token was created"
    },
    {
      "name": "isActive",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the card is active "
    },
    {
      "name": "authorizedAt",
      "kind": "optional",
      "type": "string",
      "description": "When authorized"
    },
    {
      "name": "deActivatedAt",
      "kind": "optional",
      "type": "string",
      "description": "When deactivated"
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Last update timestamp"
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cardpaymentsv1cardtokensid",
  "legacyHash": "6baMp8Kz85dUMORG0zov8"
}
```
:::


[title] Simulate inbound payment request cancel
[path] Payments/Instant payments/APIs/Simulations/

## API reference

Simulate receiving a cancellation message for a previously sent request for payment

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/payments/{id}/simulated-inbound-payment-request-cancel",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-request-cancel",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-request-cancel \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\" \\\\\n  -d '{\n  \"reasonCode\": \"sample_value\"\n}'"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "const axios = require('axios');\n\nconst options = {\n  method: 'POST',\n  url: 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-request-cancel',\n  headers: {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n  },\n  data: {\n    \"reasonCode\": \"sample_value\"\n}\n};\n\naxios(options)\n  .then(response => console.log(response.data))\n  .catch(error => console.error(error));"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-request-cancel'\nheaders = {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n}\ndata = {\n    \"reasonCode\": \"sample_value\"\n}\n\nresponse = requests.post(url, headers=headers, json=data)\nprint(response.json())"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require 'net/http'\nrequire 'json'\n\nuri = URI('https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-request-cancel')\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\nrequest['Content-Type'] = 'application/json'\nrequest.body = {\n  \"reasonCode\": \"sample_value\"\n}.to_json\n\nresponse = http.request(request)\nputs JSON.parse(response.body)"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n    \"bytes\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n)\n\nfunc main() {\n    payload := []byte(`{\n        \"reasonCode\": \"sample_value\"\n}`)\n\n    req, _ := http.NewRequest(\"POST\", \"https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-request-cancel\", bytes.NewBuffer(payload))\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n    req.Header.Add(\"Content-Type\", \"application/json\")\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := ioutil.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}"
      }
    ]
  },
  "results": {
    "languages": [
      {
        "id": "202",
        "language": "202",
        "code": ""
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ]
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "type": "string",
        "kind": "required",
        "description": "Unique identifier for the loan. GUID"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "reasonCode",
        "kind": "optional",
        "type": "string",
        "description": "Valid ACH return code explaining the return reason in accordance with NACHA guidelines (for example, R01, R02). See the ACH Request and Response Codes page for the return codes."
      }
    ]
  },
  "response": [],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtppaymentsidsimulated-inbound-payment-re",
  "legacyHash": "exUA7HT0PhpwIj7lzCsv3"
}
```
:::

## Use cases

- Test RFP cancellation handling in sandbox
- Validate cancellation reason code processing
- Develop pre-authorization cancellation workflows
- Train staff on RFP lifecycle management

## Error codes

| Code | Scenario                                                     | Resolution                                             |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------ |
| 2018 | Invalid Debtor                                               | Verify request parameters and retry                    |
| 2017 | Payments of $3,000 or more require a complete debtor address | Verify request parameters and retry                    |
| 2007 | Direction not inbound                                        | Verify request parameters and retry                    |
| 3001 | Unauthorized                                                 | Verify Bearer token is valid and not expired           |
| 3002 | Insufficient permissions                                     | Verify user has required permission for this operation |

## Business rules

- Requires valid Bearer token with permissions: Permissions.Payments.Simulate
- Request validation performed before processing
- Errors return 400 Bad Request with detailed error information
- Rate limiting may apply to prevent abuse

[title] Simulate inbound payment ack
[path] Payments/Instant payments/APIs/Simulations/

## API reference

Simulate receiving acknowledgment from the receiving bank that your outbound payment was accepted

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/payments/{id}/simulated-inbound-payment-ack",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-ack",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-ack \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\" \\\\\n  -d '{\n  \"paymentAckType\": \"sample_value\",\n  \"additionalInfo\": \"sample_value\"\n}'"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "const axios = require('axios');\n\nconst options = {\n  method: 'POST',\n  url: 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-ack',\n  headers: {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n  },\n  data: {\n    \"paymentAckType\": \"sample_value\",\n    \"additionalInfo\": \"sample_value\"\n}\n};\n\naxios(options)\n  .then(response => console.log(response.data))\n  .catch(error => console.error(error));"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-ack'\nheaders = {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n}\ndata = {\n    \"paymentAckType\": \"sample_value\",\n    \"additionalInfo\": \"sample_value\"\n}\n\nresponse = requests.post(url, headers=headers, json=data)\nprint(response.json())"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require 'net/http'\nrequire 'json'\n\nuri = URI('https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-ack')\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\nrequest['Content-Type'] = 'application/json'\nrequest.body = {\n  \"paymentAckType\": \"sample_value\",\n  \"additionalInfo\": \"sample_value\"\n}.to_json\n\nresponse = http.request(request)\nputs JSON.parse(response.body)"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n    \"bytes\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n)\n\nfunc main() {\n    payload := []byte(`{\n        \"paymentAckType\": \"sample_value\",\n        \"additionalInfo\": \"sample_value\"\n}`)\n\n    req, _ := http.NewRequest(\"POST\", \"https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-ack\", bytes.NewBuffer(payload))\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n    req.Header.Add(\"Content-Type\", \"application/json\")\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := ioutil.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}"
      }
    ]
  },
  "results": {
    "languages": [
      {
        "id": "202",
        "language": "202",
        "code": ""
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ]
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "type": "string",
        "kind": "required",
        "description": "Unique identifier for the loan. GUID"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "paymentAckType",
        "kind": "optional",
        "type": "string",
        "description": "PaymentAckType"
      },
      {
        "name": "additionalInfo",
        "kind": "optional",
        "type": "string",
        "description": "Provides supplementary details regarding the status report"
      }
    ]
  },
  "response": [],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtppaymentsidsimulated-inbound-payment-ac",
  "legacyHash": "WQOdWSQvCWU7brXE0rhLk"
}
```
:::

## Use cases

- Test payment acknowledgment workflows in sandbox
- Validate successful payment completion handling
- Simulate network confirmation for integration testing
- Verify payment status transitions after acknowledgment

## Error codes

| Code | Scenario                                               | Resolution                                             |
| ---- | ------------------------------------------------------ | ------------------------------------------------------ |
| 2041 | Payment must be a credit transfer                      | Verify request parameters and retry                    |
| 2010 | Payment must be outbound                               | Verify request parameters and retry                    |
| 2030 | Credit Transfer status must be Completed               | Verify request parameters and retry                    |
| 2031 | Payment already has an existing Payment Ack in process | Verify request parameters and retry                    |
| 3001 | Unauthorized                                           | Verify Bearer token is valid and not expired           |
| 3002 | Insufficient permissions                               | Verify user has required permission for this operation |

## Business rules

- Requires valid Bearer token with permissions: Permissions.Payments.Simulate
- Request validation performed before processing
- Errors return 400 Bad Request with detailed error information
- Rate limiting may apply to prevent abuse

[title] Simulate inbound payment request
[path] Payments/Instant payments/APIs/Simulations/

## API reference

Simulate receiving a request for payment (invoice) from another financial institution

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/payments/simulated-inbound-payment-request",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-payment-request",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-payment-request \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\" \\\\\n  -d '{\n  \"accountNumber\": \"1234567890\",\n  \"amount\": 150000,\n  \"amountModAllowed\": false,\n  \"creditorName\": \"John Doe\",\n  \"uETR\": \"sample_value\"\n}'"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "const axios = require('axios');\n\nconst options = {\n  method: 'POST',\n  url: 'https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-payment-request',\n  headers: {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n  },\n  data: {\n    \"accountNumber\": \"1234567890\",\n    \"amount\": 150000,\n    \"amountModAllowed\": false,\n    \"creditorName\": \"John Doe\",\n    \"uETR\": \"sample_value\"\n}\n};\n\naxios(options)\n  .then(response => console.log(response.data))\n  .catch(error => console.error(error));"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = 'https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-payment-request'\nheaders = {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n}\ndata = {\n    \"accountNumber\": \"1234567890\",\n    \"amount\": 150000,\n    \"amountModAllowed\": false,\n    \"creditorName\": \"John Doe\",\n    \"uETR\": \"sample_value\"\n}\n\nresponse = requests.post(url, headers=headers, json=data)\nprint(response.json())"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require 'net/http'\nrequire 'json'\n\nuri = URI('https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-payment-request')\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\nrequest['Content-Type'] = 'application/json'\nrequest.body = {\n  \"accountNumber\": \"1234567890\",\n  \"amount\": 150000,\n  \"amountModAllowed\": false,\n  \"creditorName\": \"John Doe\",\n  \"uETR\": \"sample_value\"\n}.to_json\n\nresponse = http.request(request)\nputs JSON.parse(response.body)"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n    \"bytes\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n)\n\nfunc main() {\n    payload := []byte(`{\n        \"accountNumber\": \"1234567890\",\n        \"amount\": 150000,\n        \"amountModAllowed\": false,\n        \"creditorName\": \"John Doe\",\n        \"uETR\": \"sample_value\"\n}`)\n\n    req, _ := http.NewRequest(\"POST\", \"https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-payment-request\", bytes.NewBuffer(payload))\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n    req.Header.Add(\"Content-Type\", \"application/json\")\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := ioutil.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}"
      }
    ]
  },
  "results": {
    "languages": [
      {
        "id": "202",
        "language": "202",
        "code": ""
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ]
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "A valid COS Account number associated to the Transaction. This parameter can be null."
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "Dollar amount of the transaction in positive integral cents. For example, write $1.00 as 100."
      },
      {
        "name": "amountModAllowed",
        "kind": "required",
        "type": "boolean",
        "description": "Indicates whether the recipient is allowed to modify the requested amount in response to an RfP. If the field is not provided, the system defaults to true.\nIf true, the recipient may respond with a different amount\nIf false, the recipient must match the original amount; any mismatch will cause the payment to be rejected."
      },
      {
        "name": "creditorName",
        "kind": "optional",
        "type": "string",
        "description": "CreditorName"
      },
      {
        "name": "uETR",
        "kind": "required",
        "type": "string",
        "description": "UETR"
      },
      {
        "name": "remittanceData",
        "kind": "optional",
        "type": "string",
        "description": "A description of the payment, meaning, the remittance advice. Use this field for any remittance information that doesn't have its own field. 140 characters maximum."
      },
      {
        "name": "useCase",
        "kind": "optional",
        "type": "string",
        "description": "Use one of the following values for the useCase field:\n\n-BusinessToBusiness\n-ConsumerBillPay\n-AccountToAccount\n-DownPaymentOrFinalPayment\n-ConsumerToGovernment"
      },
      {
        "name": "industryCategory",
        "kind": "optional",
        "type": "string",
        "description": "Use one of the following values for the industryCategory field (optional when useCase is BusinessToBusiness or ConsumerToGovernment):\n\n-HomeUtilities\n-TelecomUtilities\n-Mortgage\n-Rent\n-InsurancePremiums\n-AutoLoans\n-PersonalLoans\n-CreditCardPayment\n-MediaSubscriptions\n-Memberships\n-FinancialInstitution\n-BrokerOrDealer\n-Medical\n-OnlineGaming\n-RealEstate\n-Government"
      },
      {
        "name": "senderId",
        "kind": "optional",
        "type": "string",
        "description": "Unique identifier for sender (UUID format)"
      },
      {
        "name": "purpose",
        "kind": "optional",
        "type": "string",
        "description": "Reason for the ACH transfer. For internal use only. The data is not included with the outgoing ACH batch file."
      }
    ]
  },
  "response": [],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtppaymentssimulated-inbound-payment-requ",
  "legacyHash": "H0owiv7CpK-E1ZNch8q1a"
}
```
:::

## Use cases

- Test Request for Payment (RFP) workflows in sandbox
- Validate RFP approval and rejection flows
- Develop customer authorization interfaces before production
- Simulate bill payment request scenarios for testing

## Error codes

| Code | Scenario                                                     | Resolution                                             |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------ |
| 2018 | Invalid Debtor                                               | Verify request parameters and retry                    |
| 2017 | Payments of $3,000 or more require a complete debtor address | Verify request parameters and retry                    |
| 3001 | Unauthorized                                                 | Verify Bearer token is valid and not expired           |
| 3002 | Insufficient permissions                                     | Verify user has required permission for this operation |

## Business rules

- Requires valid Bearer token with permissions: Permissions.Payments.Simulate
- `remittanceData` field is limited to 140 characters maximum
- Request validation performed before processing
- Errors return 400 Bad Request with detailed error information
- Rate limiting may apply to prevent abuse

[title] Webhook events: Book transfer
[path] Payments/Untitled/

## Common events

When you work with Cross River book transfers, you register for specific [webhooks](docId\:qF6bTOPBPNcpLPp9SAtWI) which have a specific [event format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents common transaction webhook events.

| Event Name                                                | Description | Related Endpoint                              |
| --------------------------------------------------------- | ----------- | --------------------------------------------- |
| [Core.Transaction.Completed](docId:22cGpVRdjKtGy2FmOKpHg) | Basic       | [Transactions](docId\:n4nww9wNTwf93qt_vdLvh)  |
| [Core.Transaction.Rejected](docId:22cGpVRdjKtGy2FmOKpHg)  | Extended    | [Transactions](docId\:n4nww9wNTwf93qt_vdLvh)  |

### Core.Transaction.Completed

:::CodeblockTabs
Sample Event

```curl
{
  "id": "6d7da4d8-9ee6-46f9-a218-b22700f56b58",
  "eventName": "Core.Transaction.Completed",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2024-11-13T09:53:32.663-05:00",
  "resources": [
    "core/v1/transactions/a89e9bf2-c3fb-4e28-a20e-b22700ef4ed2"
  ],
 "details": [
   ]
 }
```
:::

### Core.Transaction.Rejected

:::CodeblockTabs
Sample Event

```curl
{
  "id": "638dc050-ab02-4d11-93f7-b1cd01308285",
  "eventName": "Core.Transaction.Rejected",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2024-08-15T14:28:41.19-04:00",
  "resources": [
    "core/v1/transactions/113d5b53-a1a8-41ca-bbf1-b1cd013076a1"
  ],
  "details": [
    {
      "transactionId": "113d5b53-a1a8-41ca-bbf1-b1cd013076a1",
      "transactionCode": "Account Transfer",
      "debitSubAccount": "199560644304",
      "debitMasterAccount": "199560644304",
      "debitResult": "NSF",
      "creditSubAccount": "20020020022",
      "creditMasterAccount": "20020020022",
      "creditResult": "OK",
      "rail": "Internal",
      "railId": "0",
      "amount": "1500000",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "Account Transfer",
      "proposedAt": "08/15/2024 14:28:31",
      "executedAt": "08/15/2024 14:28:31",
      "schedule": ""
    }
  ]
}
```
:::


[title] Send payment
[path] Payments/International payments/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [International.Payment.Sent](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;
- [International.Payment.Returned](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;
- [International.Payment.Canceled](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;
- [International.Payment.Rejected](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;
- International.Hold.Placed
- [International.Hold.Escalated](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;
- [International.Hold.Cleared](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;
- [Core.Transaction.Completed](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;

## API reference

Originates a cross border money transfer.&#x20;

You must get a quote ID using the [request payment quote](docId\:OnbkGeBIHVb4ihvB1haKL) API. The quote ID is returned in the `id` field in the response to that call.

Quote IDs submitted in request are typically only valid for 60 seconds.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /international/v1/payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/International/v1/payments",
  "description": "Originates a cross border money transfer.",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "L44lyBpEkPvvxd2s4ITGR",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/International/v1/payments' \\\n--data '{\n    \"quoteId\": \"1333dc9d-ec3d-40f0-8a8e-b39b007d581b\"\n}'",
        "customLabel": ""
      },
      {
        "id": "2zw9pMCFKGqgVkmpC-ZZ1",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/International/v1/payments',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n    \\\"quoteId\\\": \\\"f710a42a-e03a-47b8-a415-b3050061085e\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "YTvnprg_S9ZNG3Kp9WT4k",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/International/v1/payments\"\n\npayload = \"{\\r\\n    \\\"quoteId\\\": \\\"f710a42a-e03a-47b8-a415-b3050061085e\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "q9wGW9osNCsqCp68UDZ0n",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/International/v1/payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n    \\\"quoteId\\\": \\\"f710a42a-e03a-47b8-a415-b3050061085e\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "UAmstoP2fDbrAiUdxN9ci",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/International/v1/payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"quoteId\": \"f710a42a-e03a-47b8-a415-b3050061085e\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "L44lyBpEkPvvxd2s4ITGR"
  },
  "results": {
    "languages": [
      {
        "id": "_qq8_titI2NzDm7PhXHyr",
        "language": "200",
        "code": "{\n    \"id\": \"5962aa43-a31e-42e5-950d-b39b007d67d6\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"quoteId\": \"1333dc9d-ec3d-40f0-8a8e-b39b007d581b\",\n    \"fromCurrency\": \"usd\",\n    \"toCurrency\": \"gbp\",\n    \"fromAmount\": 500,\n    \"toAmount\": 394,\n    \"accountNumber\": \"158560897007\",\n    \"estimatedDeliveryDate\": \"11/20/2025 12:00:00 AM\",\n    \"originator\": {\n        \"entityName\": \"Cross River Bank\",\n        \"firstName\": \"\",\n        \"lastName\": \"\",\n        \"fullName\": \"Cross River Bank\",\n        \"address\": \"885 Teaneck Road\",\n        \"city\": \"Teaneck\",\n        \"state\": \"NJ\",\n        \"postalCode\": \"07666\",\n        \"countryCode\": \"US\",\n        \"entityType\": \"Company\",\n        \"birthDate\": \"2008-06-23\",\n        \"identificationType\": \"IncorporationNumber\",\n        \"identificationValue\": \"0400170263\"\n    },\n    \"beneficiary\": {\n        \"firstName\": \"Jon\",\n        \"lastName\": \"Smith\",\n        \"fullName\": \"Jon Smith\",\n        \"birthDate\": \"2001-06-18T00:00:00-04:00\",\n        \"address\": \"1 Street\",\n        \"city\": \"Winfield\",\n        \"postalCode\": \"GB12345\",\n        \"countryCode\": \"GB\",\n        \"entityType\": \"Individual\"\n    },\n    \"beneficiaryFi\": {\n        \"bankName\": \"Bank UK\",\n        \"bankCountryCode\": \"GB\",\n        \"bankAddress\": \"1 Avenue\",\n        \"bankAccountType\": \"Checking\",\n        \"routingCodeType1\": \"SortCode\",\n        \"routingCodeValue1\": \"123456789\",\n        \"routingCodeType2\": \"ABA\",\n        \"routingCodeValue2\": \"123456789\",\n        \"bicSwift\": \"TGCLGB99\",\n        \"iban\": \"GB33BUKB20201555555555\"\n    },\n    \"status\": \"Created\",\n    \"purpose\": \"SRV\",\n    \"paymentType\": \"Transfer\",\n    \"direction\": \"Outbound\",\n    \"priority\": true,\n    \"feeAmount\": 100,\n    \"feeCurrency\": \"usd\",\n    \"source\": \"Api\",\n    \"createdAt\": \"2025-11-20T02:36:35.2730121-05:00\",\n    \"lastModifiedAt\": \"2025-11-20T02:36:35.2730121-05:00\",\n    \"limitsEligibleOn\": \"2025-11-20T02:36:35.2730121-05:00\"\n}\n",
        "customLabel": ""
      },
      {
        "id": "qjrEFaPuKavXc3UC1LWA5",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2404,\n            \"message\": \"Quote has expired\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "_qq8_titI2NzDm7PhXHyr"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "quoteId",
        "kind": "required",
        "type": "string",
        "description": "ID in GUID format received in the response to the quote call. The quote ID is valid for a limited time, typically 60 seconds.",
        "": "ID in GUID format received in the response to the quote call. The quote ID is valid for a limited time, typically 60 seconds."
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID. This ID first appears as the value for this attribute in the response to the originate a payment call. This ID is in GUID format."
    },
    {
      "name": "referencePaymentId",
      "kind": "optional",
      "type": "string",
      "description": "A unique ID of a transaction that is associated with the payment. For example, a return.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "quoteId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the quote used to execute the money transfer, found in the id field of the response to the create a payment quote call.\n\nThis ID is in GUID format.",
      "children": []
    },
    {
      "name": "fromCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency the payment is sent in",
      "children": []
    },
    {
      "name": "toCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency the payment is received in",
      "children": []
    },
    {
      "name": "fromAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount in USD to be transferred",
      "children": []
    },
    {
      "name": "toAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount in the specified currency to be received",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of the sending Cross River account",
      "children": []
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "Object",
      "description": "The individual or company sending the payment",
      "children": [
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name of the originator of the funds. Required if entityType is individual"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name of the originator of the funds. Required if entityType is individual"
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originator company. Required if entityType is company."
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "string",
          "description": "Originator street address"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "If entityType is company, date of registration. If entityType is individual, date of birth. The date is this format: \"yyyy-mm-dd\""
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "string",
          "description": "Originator street address"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City where the originator is based"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Originator state "
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Originator postal or ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter ISO country code. For a company entity, the country where it's registered. For an individual, the country where they're based."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Legal status of the entity, whether beneficiary or originator:\n\n- Individual\n- Company\n\nThe default value is individual."
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the company. "
        },
        {
          "name": "identificationType",
          "kind": "optional",
          "type": "string",
          "description": "- None \n- DriversLicense\n- SSN \n- GreenCard \n- Passport \n- Visa \n- MatriculaConsular \n- RegistroFederalDeContribuyentes\n- ClaveUnicaDeRegistroDePoblacion \n- CredentialDeElector\n- SocialInsuranceNumber \n- CitizenshipPapers\n- DriversLicenseCanadian \n- ExistingCreditCardDetails\n- NationalId\n- IncorporationNumber\n- Other"
        }
      ]
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "Object",
      "description": "The individual or company who gets the payment",
      "children": [
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name of the beneficiary of the funds. Required if entityType is individual"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name of the beneficiary of the funds. Required if entityType is individual"
        },
        {
          "name": "companyName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the beneficiary company. Required if entityType is company."
        },
        {
          "name": "email",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary's email address, whether a company or an individual"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "If entityType is company, date of registration. If entityType is individual, date of birth. The date and time are in this format: \"yyyy-mm-dd\""
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "string",
          "description": "Complete beneficiary street address"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary city"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary state or province"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary postal or ZIP code."
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter ISO country code. For a company entity, the country where it's registered. For an individual, the country where they're based."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Legal status of the entity, whether beneficiary or originator:\n\n- Individual\n- Company\n\nThe default value is individual."
        }
      ]
    },
    {
      "name": "beneficiaryFi",
      "kind": "optional",
      "type": "Object",
      "description": "Details of the beneficiary's financial institution (where the payment goes)",
      "children": [
        {
          "name": "bankName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the beneficiary's bank"
        },
        {
          "name": "bankCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter code for the country where the beneficiary's bank account is held"
        },
        {
          "name": "bankAddress",
          "kind": "optional",
          "type": "string",
          "description": "Street address of the Beneficiary's bank"
        },
        {
          "name": "bankAccountType",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary bank account type:\n\n- Checking\n- Savings"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number receiving the payment. Maximum n characters."
        },
        {
          "name": "routingCodeType1",
          "kind": "optional",
          "type": "string",
          "description": "Local payment routing system type. If supplied, you must also give the actual code for routingCodeValue1.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
        },
        {
          "name": "routingCodeValue1",
          "kind": "optional",
          "type": "string",
          "description": "Routing code of the routing code type.\n\nRequired if you supply a value for routingCodeType1."
        },
        {
          "name": "routingCodeType2",
          "kind": "optional",
          "type": "string",
          "description": "Sometimes certain corridors will require 2 routing codes. In that case, use this attribute for the second code type. If supplied, you must also give the actual code for routingCodeValue2.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
        },
        {
          "name": "routingCodeValue2",
          "kind": "optional",
          "type": "string",
          "description": "Routing code of the routing code type.\nRequired if you supplied a value for routingCodeType2."
        },
        {
          "name": "bicSwift",
          "kind": "optional",
          "type": "string",
          "description": "BIC/SWIFT code of the beneficiary FI"
        },
        {
          "name": "iban",
          "kind": "optional",
          "type": "string",
          "description": "IBAN number of the beneficiary FI"
        }
      ]
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the payment object\n\n- Created\n- Pending\n- Processing\n- Hold\n- Canceled\n- Completed\n- Failed\n- Rejected\n- Blocked",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "A 1-50 character code that indicates the reason for a transaction. ",
      "children": []
    },
    {
      "name": "rejectReason",
      "kind": "optional",
      "type": "string",
      "description": "Reason for rejecting the payment",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "- OfacMatch\n- Other",
      "children": []
    },
    {
      "name": "statusReason",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "paymentDate",
      "kind": "optional",
      "type": "string",
      "description": "The date and time of anticipated payment delivery, in the format: yyyy-mm-ddThh:mm:ss[.mmm].\n\nPayment delivery times cannot be guaranteed.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Tell you whether this is an original transfer or return payment:\n\n- Transfer\n- Return",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "This can be Inbound or Outbound.",
      "children": []
    },
    {
      "name": "priority",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.",
      "children": []
    },
    {
      "name": "feeAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Transaction fee amount",
      "children": []
    },
    {
      "name": "feeCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency used for the fee",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "The source of the request to send a cross border payment:\n\n- Api\n- PartnerPortal\n- OpsPortal",
      "children": []
    },
    {
      "name": "postingStatus",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- NotApplicable",
      "children": []
    },
    {
      "name": "PostingCode",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the core transaction. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "feeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the transaction free debited from the partners account. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "vendorSpreadFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the markup that can be levied on the spread fee by the vendor to their client.",
      "children": []
    },
    {
      "name": "spreadFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the spread free debited from the partners account. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "partnerSpreadFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the markup that can be levied on the spread fee by the partner to their client.",
      "children": []
    },
    {
      "name": "vendorTransactionFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the markup that can be levied on the transaction fee by the vendor to their client.",
      "children": []
    },
    {
      "name": "partnerTransactionFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the markup that can be levied on the transaction fee by the partner to their client.",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "limitsEligibleOn",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "purposeCode",
      "kind": "optional",
      "type": "string",
      "description": "Required for payments to India (INR), Malaysia (MYR), and United Arab Emirates (AED). Check our Payment purpose codes page for additional details.",
      "children": []
    },
    {
      "name": "invoiceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Necessary when making trade-related INR payments, check our Payment purpose codes page for additional details.  1-30 characters.",
      "children": []
    },
    {
      "name": "invoiceDate",
      "kind": "optional",
      "type": "string",
      "description": "Necessary when making trade-related INR payments, check our Payment purpose codes page for additional details. ISO 8601 format (YYYY-MM-DD).",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-internationalv1payments",
  "legacyHash": "3KjPXkYOPrvaiV1b90w1s"
}
```
:::

:::hint{type="info"}
For additional information, refer to our International payments [tutorial](docId:0mIEXzUcyTurPvZq13y1Z).
:::


[title] Error codes: International payments
[path] Payments/International payments/

## Overview

This page provides comprehensive error code information for the International Payments API (SWIFT), including error codes, descriptions, and resolution guidance based on actual codebase analysis.

## Error response format

```json
{
  "error": {
    "code": "2300",
    "message": "{2300}No estimate rate found for request",
    }
}
```

## Error codes by category

### General exceptions&#x20;

| Code     | Description       | Resolution                                                                                 |
| -------- | ----------------- | ------------------------------------------------------------------------------------------ |
| **1000** | Validation error  | General validation error; check request parameters and contact support if issue persists.  |
| **2000** | Application error | General application error; check request parameters and contact support if issue persists. |

### Beneficiary (2100-2103)

Errors related to beneficiary validation and currency/country support.

| Code     | Description                    | Resolution                                                                                                                                         |
| -------- | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **2100** | Beneficiary is not valid       | Verify beneficiary information is complete and correct; check account number, bank details, and address                                            |
| **2101** | Currency is not supported      | Use a supported currency; verify currency code is valid and enabled for international payments                                                     |
| **2102** | Country is not supported       | Country is not supported for international payments; verify destination country is in the [supported countries](docId\:p_Cb7wXlzG8of31c9xlgj) list |
| **2103** | Validation response is invalid | Beneficiary validation response is invalid; retry validation or contact support                                                                    |

### Configuration (2200-2237)

Errors related to global, account, and product configuration management.

| Code     | Description                                                                                   | Resolution                                                                                            |
| -------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| **2200** | This action requires dual control                                                             | Have a second authorized user approve the configuration change                                        |
| **2201** | Global profile change not pending                                                             | Operation requires global profile change to be in pending status                                      |
| **2202** | Global profile change not approved                                                            | Global configuration change must be approved before applying                                          |
| **2203** | Global config change approval requires dual control                                           | Have a second authorized user approve the global configuration change                                 |
| **2204** | Global config required                                                                        | Include global configuration object in the request                                                    |
| **2205** | Product change not pending                                                                    | Operation requires product change to be in pending status                                             |
| **2206** | Product change not approved                                                                   | Product configuration change must be approved before applying                                         |
| **2207** | Product config change approval requires dual control                                          | Have a second authorized user approve the product configuration change                                |
| **2208** | Product config required                                                                       | Include product configuration object in the request                                                   |
| **2209** | Account config required                                                                       | Include account configuration object in the request                                                   |
| **2210** | Account change not pending                                                                    | Operation requires account change to be in pending status                                             |
| **2211** | Account change not approved                                                                   | Account configuration change must be approved before applying                                         |
| **2212** | Account config change approval requires dual control                                          | Have a second authorized user approve the account configuration change                                |
| **2213** | Account configuration not found or is invalid                                                 | Verify account configuration ID is correct and configuration exists                                   |
| **2214** | Global profile not found or is invalid                                                        | Verify global profile ID is correct and profile exists                                                |
| **2215** | No active configuration found for account                                                     | Account must have an active configuration; create or activate account configuration                   |
| **2216** | Currency not supported                                                                        | Currency is not enabled in global or account configuration; add currency to supported currencies list |
| **2217** | Product config change includes settings that are not supported for product type               | Verify configuration settings are valid for the product type                                          |
| **2218** | The operator account number has not been set in the global configuration                      | Configure operator account number in global configuration settings                                    |
| **2219** | Invalid currency for partner fee                                                              | Partner fee currency must match supported currencies; verify fee currency configuration               |
| **2220** | Duplicate currency for partner fees                                                           | Each currency can only be configured once for partner fees; remove duplicate currency entries         |
| **2221** | All required accounts have not been configured in the global configuration                    | Complete all required account configurations in global settings                                       |
| **2222** | All required accounts have not been configured in the account configuration                   | Complete all required account configurations for this account                                         |
| **2223** | The customer for the specified account number was not found                                   | Verify customer exists for the account number; check account-customer relationship                    |
| **2224** | The Swift ACO flat rate has not been set in the global configuration                          | Configure Swift ACO flat rate in global configuration settings                                        |
| **2225** | The local payment fee has not been set in the global configuration for the requested currency | Configure local payment fee for the requested currency in global settings                             |
| **2226** | The transaction fees have not been set in the global configuration                            | Configure transaction fees in global configuration settings                                           |
| **2227** | Inbound payments not enabled for account                                                      | Enable inbound payments in account configuration                                                      |
| **2228** | Outbound payments not enabled for account                                                     | Enable outbound payments in account configuration                                                     |
| **2229** | Limit start time (HH\:mm) not set for account                                                 | Set limit start time in account configuration (24-hour format HH\:mm)                                 |
| **2230** | Daily count limit not set for account                                                         | Set daily transaction count limit in account configuration                                            |
| **2231** | Daily amount limit not set for account                                                        | Set daily transaction amount limit in account configuration                                           |
| **2232** | Transfer amount limit not set for account                                                     | Set per-transfer amount limit in account configuration                                                |
| **2233** | Cannot exceed daily count limit for account                                                   | Daily transaction count limit reached; wait until next limit period or increase limit                 |
| **2234** | Cannot exceed daily amount limit for account                                                  | Daily transaction amount limit reached; wait until next limit period or increase limit                |
| **2235** | Cannot exceed transfer amount limit for account                                               | Transaction amount exceeds per-transfer limit; reduce amount or increase limit                        |
| **2236** | Unsupported country code(s)                                                                   | One or more country codes are not supported; verify country codes are in supported countries list     |
| **2237** | There are accounts misconfigured in the AccountConfig or GlobalConfig                         | Review and correct account configuration and global configuration settings                            |

### Estimates (2300-2303)

Errors related to exchange rate estimates and fee retrieval.

| Code     | Description                            | Resolution                                                                                         |
| -------- | -------------------------------------- | -------------------------------------------------------------------------------------------------- |
| **2300** | No estimate rate found for request     | Unable to retrieve exchange rate estimate; verify currency pair is supported and retry             |
| **2301** | Fees not found for account or currency | Transaction fees not configured for account or currency; configure fees in account/global settings |
| **2302** | Unable to retrieve rates at this time  | Currency exchange rate service is unavailable; retry request after a few moments                   |
| **2303** | Currency not supported                 | Currency is not supported for exchange rate estimates; use a supported currency                    |

### Quotes (2400-2406)

Errors related to quote creation, validation, and execution.

| Code     | Description                                                | Resolution                                                                                          |
| -------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| **2400** | Beneficiary failed to create for quote                     | Unable to create beneficiary for quote; verify beneficiary information and retry                    |
| **2401** | Estimate not found for quote                               | Quote requires an estimate; create an estimate before requesting a quote                            |
| **2403** | Quote not found for originating payment                    | Verify quote ID is correct; check if quote exists and has not expired                               |
| **2404** | Quote has expired                                          | Quote has passed expiration time; create a new quote with current exchange rates                    |
| **2405** | Currency is not supported for selected bank country        | Currency-country combination is not supported; verify currency is available for destination country |
| **2406** | Quote amount does not exceed minimum amount for conversion | Increase quote amount to meet minimum conversion threshold                                          |

### Payment (2500-2507)

Errors related to international payment processing and validation.

| Code     | Description                                      | Resolution                                                                                   |
| -------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| **2500** | Account configuration not found or is invalid    | Verify account configuration ID is correct and configuration exists                          |
| **2501** | Invalid payment status                           | Check current payment status; verify the requested operation is valid for the current status |
| **2502** | Payment not found for id                         | Verify the payment ID is correct                                                             |
| **2503** | Quote has already been executed                  | Quote has already been used for a payment; create a new quote for additional payments        |
| **2504** | Invalid payment type                             | Payment type is not valid; verify payment type is supported for international payments       |
| **2505** | Account type cannot be used for payments         | Account type does not support payments; verify account is configured for payment operations  |
| **2506** | Posting status must be failed to attempt a retry | Only failed postings can be retried; verify posting status before retry                      |
| **2507** | Payment does not have any fees that failed       | Fee retry only applies to failed fees; verify fee status before retry                        |

### Holds (2600-2602)

Errors related to payment hold management.

| Code     | Description            | Resolution                                                           |
| -------- | ---------------------- | -------------------------------------------------------------------- |
| **2600** | Hold is not active     | Hold must be in active status for this operation; verify hold status |
| **2601** | Hold payment not found | Verify hold payment ID is correct; check if hold payment exists      |
| **2602** | Hold account not found | Verify hold account number is correct; check if account exists       |

### Reporting (2700-2707)

Errors related to payment and conversion report generation and retrieval.

| Code     | Description                                                     | Resolution                                                              |
| -------- | --------------------------------------------------------------- | ----------------------------------------------------------------------- |
| **2700** | Unable to parse line from CSV file for conversion detail report | CSV file has invalid format; verify file structure and content          |
| **2701** | Failed to generate conversion report                            | Conversion report generation failed; verify report parameters and retry |
| **2702** | Failed to generate payment report                               | Payment report generation failed; verify report parameters and retry    |
| **2703** | Invalid response after generating report                        | Report generation returned invalid response; retry report generation    |
| **2704** | Unable to parse line from CSV file for payment detail report    | CSV file has invalid format; verify file structure and content          |
| **2705** | Vendor report not found using external id                       | Verify external report ID is correct; check if report exists            |

### Payment detail (2800)

Errors related to payment detail retrieval.

| Code     | Description              | Resolution                                                          |
| -------- | ------------------------ | ------------------------------------------------------------------- |
| **2800** | Payment detail not found | Verify payment detail ID is correct; check if payment detail exists |


[title] Service info
[path] Payments/Instant payments/APIs/

## API reference

Retrieves a list of instant payment services supported by a specific financial institution. If the bank supports TCH and FedNow instant payments, service codes for both networks are returned. For FedNow, an FI must register each RTN separately. An FI can have some but not all RTNs registered for FedNow.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/v1/directory",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/rtp/v1/directory",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "W6REUGyfbgluoQv6Azsc6",
        "language": "curl",
        "code": "curl -L -X GET 'https://sandbox.crbcos.com/rtp/v1/directory' ^\n-H 'Accept: application/json' ^\n-H 'Content-Type: application/json' ^",
        "customLabel": ""
      },
      {
        "id": "4_mewoxo6ofIsYf1wRi9q",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/rtp/v1/directory',\n  'headers': {\n    'Accept': 'application/json',\n    'Content-Type': 'application/json'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"reasonCode\": \"String\",\n  \"clientIdentifier\": \"String\"\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "acPEUOdgmTPCfrzSRmoL7",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/rtp/v1/directory\"\n\npayload = json.dumps({\n  \"reasonCode\": \"String\",\n  \"clientIdentifier\": \"String\"\n})\nheaders = {\n  'Accept': 'application/json',\n  'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "lV543JgKrkqglWU0ULSct",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/rtp/v1/directory\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n  \"reasonCode\": \"String\",\n  \"clientIdentifier\": \"String\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "Vm0jma70JdD4wDEOwgKRZ",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/rtp/v1/directory\"\n  method := \"GET\"\n\n  payload := strings.NewReader(`{\"reasonCode\":\"String\",\"clientIdentifier\":\"String\"}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Content-Type\", \"application/json\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "W6REUGyfbgluoQv6Azsc6"
  },
  "results": {
    "languages": [
      {
        "id": "HOMNdLughBSOiTl-gdqJ8",
        "language": "200",
        "customLabel": "",
        "code": "    {\n      \"routingNumber\": \"200000009\",\n      \"participantId\": \"200000020T1\",\n      \"name\": \"ACI\",\n      \"institutionRoutingNumber\": \"200000020\",\n      \"institutionName\": \"ACI\",\n      \"receiveServices\": [\n        \"ACK\",\n        \"CRDT\",\n        \"RFI\",\n        \"RFIR\",\n        \"RFP\",\n        \"RFPR\",\n        \"RFRF\",\n        \"RFRFR\",\n        \"RMT\"\n      ],\n      \"receivingConnection\": \"ACI2\",\n      \"participantActivationDate\": \"4/30/2019 12:00:00 AM\",\n      \"extractionDateTime\": \"9/29/2022 7:00:00 AM\",\n      \"lastModifiedAt\": \"2022-09-29T14:23:01.9180766-04:00\",\n      \"networkPlatform\": \"TCH\",\n      \"onlineStatus\": 1,\n      \"onlineStatusChangedAt\": \"2022-09-15T12:22:04.9180766-04:00\"\n    },\n    {\n      \"routingNumber\": \"200000009\",\n      \"participantId\": null,\n      \"name\": \"ACI\",\n      \"institutionRoutingNumber\": null,\n      \"institutionName\": null,\n      \"receiveServices\": [\n        \"RFPR\",\n        \"CTSR\"\n      ],\n      \"receivingConnection\": null,\n      \"participantActivationDate\": null,\n      \"extractionDateTime\": null,\n      \"lastModifiedAt\": \"2022-09-29T14:23:01.9180766-04:00\",\n      \"networkPlatform\": \"FedNow\",\n      \"onlineStatus\": 1,\n      \"onlineStatusChangedAt\": \"2022-09-15T12:22:04.9180766-04:00\"\n    }"
      }
    ],
    "selectedLanguageId": "HOMNdLughBSOiTl-gdqJ8"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "name",
        "kind": "optional",
        "type": "string",
        "description": "The name of the financial institution",
        "": "The name of the financial institution"
      },
      {
        "name": "routingNumber",
        "kind": "optional",
        "type": "string",
        "description": "The routing number of the specific account at the financial institution receiving the payment, such as the number found on a check",
        "children": []
      },
      {
        "name": "participantId",
        "kind": "optional",
        "type": "string",
        "description": "The 11-digit identification number assigned to a participant in the payment network\n",
        "children": []
      },
      {
        "name": "institutionRoutingNumber",
        "kind": "optional",
        "type": "string",
        "description": "The routing number that uniquely identifies the financial institution",
        "children": []
      },
      {
        "name": "networkPlatform",
        "kind": "optional",
        "type": "string",
        "description": "The payment network platform used to process the payment. Valid values are:\n\n-TCH – RTP via The Clearing House\n-FedNow – Federal Reserve’s instant payment network",
        "children": []
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "routingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the specific account at the financial institution receiving the payment, such as the number found on a check"
    },
    {
      "name": "participantId",
      "kind": "optional",
      "type": "string",
      "description": "The 11-digit identification number assigned to a participant in the payment network",
      "children": []
    },
    {
      "name": "name",
      "kind": "optional",
      "type": "string",
      "description": "The name of the financial institution",
      "children": []
    },
    {
      "name": "institutionRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number that uniquely identifies the financial institution",
      "children": []
    },
    {
      "name": "institutionName",
      "kind": "optional",
      "type": "string",
      "description": "The name of the financial institution\n",
      "children": []
    },
    {
      "name": "receiveServices",
      "kind": "optional",
      "type": "string",
      "description": "The types of messages that the receiving financial institution (FI) is capable of accepting\n",
      "children": []
    },
    {
      "name": "receivingConnection",
      "kind": "optional",
      "type": "string",
      "description": "A unique code that identifies the financial institution\n\n",
      "children": []
    },
    {
      "name": "participantActivationDate",
      "kind": "optional",
      "type": "string",
      "description": "The date when the participant was activated on the instant payment network\n",
      "children": []
    },
    {
      "name": "extractionDateTime",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the directory was extracted, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "networkPlatform",
      "kind": "optional",
      "type": "string",
      "description": "The payment network platform used to process the payment. Valid values:\n\n-TCH – RTP via The Clearing House\n-FedNow – Federal Reserve’s instant payment network",
      "children": []
    },
    {
      "name": "onlineStatus",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the current online status of the financial institution (FI):\n\n-0 – SignedOff (Offline)\n-1 – SignedOn (Online)",
      "children": []
    },
    {
      "name": "onlineStatusChangedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the financial institution's online status was last updated, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtpv1directory",
  "legacyHash": "AwbrhC8U0eXHk6M4z6R-z"
}
```
:::

### How to interpret `/rtp/v1/directory` response?

Use this endpoint to determine whether an institution supports real-time payment networks such as **RTP** and **FedNow**, and whether they are currently active.

- **Check networkPlatform** to distinguish between networks:
  - "TCH" = RTP
  - "FedNow" = FedNow
- **Inspect receiveServices** to determine which services the institution supports on each network. See [service codes returned](docId\:i1MCoCYNv8NOKPkqFQ1Gb).
- **Verify onlineStatus is "SignedOn"** to ensure the institution is actively reachable on the specified network. If not, payments may be delayed or returned after a timeout.
- **Multiple entries per routing number may exist**, one per network. Evaluate each independently.


[title] Payment transactions
[path] Payments/

## What is a transaction

In Cross River COS, a *transaction* is the action of funds being deposited into or withdrawn from a bank account. If funds are transferred between two Cross River accounts, a transaction in COS always involves a debit of one account and a credit of another account, completed as a single simple operation. A completed transaction may be referred to as *posted*, *cleared* or *settled*.

[Learn more about intrabank account transactions.](docId\:eYWPuLa2AkkHtciNvvlGw)&#x20;

## Transaction completed webhook event

Cross River COS ensures you know when the funds are debited or credited using the `Core.Transaction.Completed` webhook. The exact timing of when the webhook event is triggered depends on the payment rail and other factors.

For outbound payments, the `Core.Transaction.Completed` webhook event fires as soon as the transaction posts to the account, and regardless of whether the payment has already arrived successfully at the receiver's account or not.

### Instant payments

As seen in the [Instant Payments outbound flow](docId\:ady9aKdnxL8FHhlRo5o1D), the `Core.Transaction.Completed` webhook event fires at the end of the flow, together with the Instant Payments [Rtp.Payment.Sent](docId\:ffGq2OHYEbWPzn2old6Mc) webhook event. Because Instant Payments happen almost immediately, payment sent and transaction completed happen more or less together when the payment settles.

### International payments

The [Core.Transaction.Completed](docId\:o9fUc2dKPczcl1h4yIChr)  webhook event fires at the end of the flow, together with the International Payments  [International.Payment.Returned](docId\:o9fUc2dKPczcl1h4yIChr) webhook event. The transaction completed and payment returned happen more or less together when the payment settles.

### ACH

In ACH, settlement happens at different times in the [flow](docId\:rqqtpgcfU3hQrGMqMuERM), depending on several factors.

- Direction: is it an inbound or outbound payment?
- Transaction Type: is it a push (credit) or pull (debit)?
- Payment Type: is it an origination, return, or notification of change (NOC)?
- Effective Date: is it dated for today or sometime in the future?
- Contractual Cutoff Time: was the outbound payment request received by CRB before the cutoff time?

:::hint{type="warning"}
**There is a single scenario where an outbound payment will not settle on your account the same day it is originated. This occurs when:**

- The payment `transactionType` is **Pull**, and
- The `serviceType` is **SameDay**, and
- The `effectiveDate` of the payment is equal to the current date, and
- The payment is released to the Fed after 4:45pm
:::

**"Individual" posting type**

When your configuration with Cross River causes COS to treat each ACH transaction you send as an *individual* payment, the response to the payment API includes the `postingType` **Individual**. In this case, settlement always happens after the payment is acknowledged by Fed. The [Core.Transaction.Completed](docId\:AVRvavzdk7hC0UfXn6XZ9) webhook event is triggered when the payment settles in the Cross River account.

**"Aggregate" posting type**

When you send multiple ACH payments, your configuration may cause the system to transact many payments sent from the same originating account payments as a single sum. The response to a payment call includes the `postingType` **Aggregate.**

Payments are aggregated with similar payments. All payments in an aggregate settle together as a single amount. [SameDay](docId:0papBZYBjF0LZPac8-tRW) and [Standard](docId:0papBZYBjF0LZPac8-tRW) payments are aggregated in two separate groups, and pull payments are aggregated separately from push payments.

In general, aggregated *push* payments settle when the payments are batched for sending to the Fed, not after they are sent and acknowledged. The [Core.Transaction.Completed](docId\:AVRvavzdk7hC0UfXn6XZ9) webhook event is triggered at that point in the flow.

Aggregated *pull* payments settle like individual pull payments and the [Core.Transaction.Completed](docId\:AVRvavzdk7hC0UfXn6XZ9) webhook event is triggered when the payment is acknowledged by the Fed or just after.

### Wires

As seen in the [Wires payment flow](docId\:r5Em5zsqCEnn70GiAiwsT), in outbound payments, the `Core.Transaction.Completed` webhook event is triggered when the payment message is ready to be sent to FedWire. At this point, Cross River settles the payment in the originating account.

For inbound payments, the `Core.Transaction.Completed` webhook event is triggered when the payment passes compliance validation. You won't know about inbound payments until they are posted.

[title] Request and response codes: ACH
[path] Payments/ACH/

# SEC codes

A SEC code indicates the Standard Entry Class required by Nacha for every ACH transaction. When you [originate an ACH payment](docId\:ILwmF5qnTMLo30D2H3rCH)  by API, you enter this code in the `secCode` field of the request. The table below explains common SEC codes. Learn more about SEC codes on the [Nacha website](https://achdevguide.nacha.org/ach-file-details).

:::hint{type="info"}
Which code should I use?

Your Operations Support Team will guide with this based on the use case you are trying to support.
:::

| Code	                                | Name	                                                      | Description	                                                                                                                                                                                                                                                                                                                                      | Type                                                              | Transaction Type          | Credit/Debit    |
| ------------------------------------ | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------- | --------------- |
| ARC                                  | Accounts Receivable Entry                                  | A single debit entry to an account initiated for purchases or payments that are made in person, via US mail, or placing the payment in a dropbox.                                                                                                                                                                                                 | Consumer or Non-Consumer<br />Mail Order or Retail                | Single Entry              | Debit only      |
| BOC                                  | Back Office Conversion Entry                               | A single debit entry to an account for in-person purchases or payments made at the point-of-purchase. *Check is not returned to check writer.*                                                                                                                                                                                                    | Consumer or Non-Consumer<br />Retail                              | Single Entry              | Debit only      |
| CCD                                  | Corporate Credit/Debit Entry                               | Funds are transferred between unrelated corporate entities or transferred as intra-company cash concentration and disbursement transactions.                                                                                                                                                                                                      | Non-Consumer                                                      | Single or Recurring Entry | Credit/Debit    |
|                                      |                                                            | Proof of Authorization for transactions ran on the web using CCD will adhere to the same requirements as a web transaction.                                                                                                                                                                                                                       | Retail, Phone Order, Ecommerce, and Mail Order                    | Single or Recurring Entry | Credit/Debit    |
| CIE                                  | Customer Initiated Entry                                   | A single credit entry initiated by a consumer (originator) to a non-consumer account. CIE is a consumer-initiated credit entry, a credit push to a merchant, typically used by a financial institution's or third-party's bill pay service and would be not be Originated by a merchant.                                                          | Consumer                                                          | Single Entry              | Credit only     |
| COR                                  | Notification of Change, or Refused Notification of Change  | This Standard Entry Class Code is used by an RDFI or ODFI when originating a Notification of Change or Refused Notification of Change in automated format. It is also used by the ACH operator that converts paper Notifications of Change to automated format.                                                                                   | Consumer or Non-Consumer                                          | N/A                       | N/A             |
| CTX                                  | Corporate Trade Exchange<br />                             | Used to transfer funds between a buyer's and a seller's bank accounts.<br />                                                                                                                                                                                                                                                                      | Non-Consumer                                                      | Single or Recurring Entry | Credit/Debit    |
| DNE (Federal Govt. Agency Use Only)  | Death Notification Entry                                   | A non-monetary entry from a Federal Government agency. Notifies the Financial Institution that the recipient of a government benefit has passed away.                                                                                                                                                                                             | Consumer                                                          | N/A                       | N/A             |
| ENR                                  | Automated Enrollment Entry                                 | A Non-Monetary Entry that triggers the origination of&#xD;<br />ACH credit or debit transactions to the account holder at the DFI.&#xD;<br />The ENR process allows DFIs to transmit information to Federal Government agencies, on behalf of their account holders, that serves as enrollment for either&#xD;<br />ACH credit or debit activity. | Non-Consumer (Federal Government Agency)                          | N/A                       | N/A             |
| IAT                                  | International ACH Transaction                              | Credit or Debit Entry is part of a payment transaction that involves a financial agency's office not located within the territorial jurisdiction of the United States.<br />NOTE: This SEC code is implemented only for very specific merchants and is not generally available.                                                                   | Consumer or Non-Consumer                                          | Single or Recurring Entry | Credit/Debit    |
| POS                                  | Point of Sale payments                                     | A transaction made made with a debit card. The [POS card transaction type](docId\:oDtRP7ARfnpQuFEGy4Sfh)gives further information about the exact transaction.                                                                                                                                                                                    | Consumer                                                          | Single Entry              | Credit/Debit    |
| PPD                                  | Prearranged Payment and Deposit Entry                      | A single or recurring credit transaction for payment of payroll, expense reimbursement, dividends, retirement, interest, etc.                                                                                                                                                                                                                     | Consumer                                                          | Single or Recurring Entry | Credit/Debit    |
| RCK                                  | Re-presented Check Entry                                   | A re-presented check entry with security measures in place.                                                                                                                                                                                                                                                                                       | Consumer<br />                                                    | Single Entry              | Debit           |
| TEL                                  | Telephone-Initiated&#xD;<br />Entry                        | A single or recurring debit transaction initiated orally via the telephone.                                                                                                                                                                                                                                                                       | Consumer                                                          | Single or Recurring Entry | Debit           |
| WEB                                  | Internet-Initiated&#xD;<br />Entry                         | **Credit** - A single or recurring credit transaction from the account of a natural person to the account of a natural person. Cannot be used for business-to-consumer transactions.&#xD;<br />**Debit** - A single or recurring debit transaction initiated during a secure (minimum 128-bit encryption) internet or mobile session.             | Consumer<br /><br /><br /><br /><br /><br /><br /><br />Ecommerce | Single or Recurring Entry | Credit or Debit |

# Rejection codes

These codes are returned in the details of the `Ach.Payment.Rejected` webhook in the `postingCode` field.

| Code | Description                  |
| ---- | ---------------------------- |
| ERR  | General Error                |
| RES  | Account Restriction          |
| NSF  | Insufficient Funds           |
| ANF  | Account Not Found            |
| CLS  | Account Closed               |
| INA  | Account Inactive             |
| DRM  | Account Dormant              |
| ESC  | Account in escheatment       |
| CHR  | Account in charge-off status |
| STP  | Stop payment active          |

# Payment types

This value appears in the `paymentType` field in ACH payment responses. The `paymentType` value tells you what kind of payment was sent. Do not confuse it with the `extendedDetails.paymentType`!

| Type             | Code | Description                                                                                                                                                                                                                         |
| ---------------- | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Origination      | 0    | A new payment originating from either Cross River or another bank. Most payments are of this type.                                                                                                                                  |
| Return           | 1    | Related to a previous origination that has been returned by the receiving bank.                                                                                                                                                     |
| DishonoredReturn | 2    | Related to a previous return, that has been dishonored by the receiving bank.                                                                                                                                                       |
| Contested return | 3    | Related to a previous origination. The receiving bank accepted the original payment but is now notifying you of information you should correct next time you send a payment to this receiver (e.g. use a different account number). |
| NOC              | 4    | Notification of Change. The payment was sent with bad info but the receiving FI fixed it and sent back the information (NOC).                                                                                                       |
| Refused NOC      | 5    |                                                                                                                                                                                                                                     |

# Payment status

This value appears in the `status` field in ACH payment responses.&#x20;

| Status     | Description                                                                                                                                                                                                                                                                                                                           |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Created    | We have received the payment, but have not started processing it yet. This status should only appear briefly under normal circumstances.                                                                                                                                                                                              |
| Pending    | The payment is waiting to be batched and sent to the Federal Reserve.                                                                                                                                                                                                                                                                 |
| Hold       | Payment is being held at the moment and reviewed by our Operations Team.                                                                                                                                                                                                                                                              |
| Batched    | The payment has been batched is a final review is being done before we send it out in a file to the Federal Reserve.                                                                                                                                                                                                                  |
| Processing | For inbound payments, we are attempting to post the payment to the receiving account. For outbound payments, the payment has been sent to the Federal Reserve, but has not posted yet. An outbound standard payment may remain in this status for a day or more. Same day payments will transition to Complete soon after Processing. |
| Completed  | The payment has been posted and accepted by the Federal Reserve (in the case of outbound payments). This is a final status.                                                                                                                                                                                                           |
| Rejected   | Our Operations Team wasn't able to process the payment and has rejected it. In the case of inbound, the payment has been returned to the originating bank. This is a final status.                                                                                                                                                    |
| Canceled   | An outbound payment has been canceled at the request of the partner. A payment may only be canceled while either pending or on hold. This is a final status.                                                                                                                                                                          |
| Blocked    | The CR compliance team blocked the payment                                                                                                                                                                                                                                                                                            |

# Return codes

Sometimes an ACH payment is returned by the receiving bank. A `returnCode` value appears in the details object of the extended `Ach.Return.Received` webhook event.

| Code | Description                                                                  |
| ---- | ---------------------------------------------------------------------------- |
| R01  | Insufficient Funds                                                           |
| R02  | Account closed                                                               |
| R03  | No account or unable to locate account                                       |
| R04  | Invalid account number                                                       |
| R05  | Unauthorized debit to consumer account                                       |
| R06  | Returned per ODFI's request                                                  |
| R07  | Authorization revoked by customer                                            |
| R08  | Payment stopped or stop payment on item                                      |
| R09  | Uncollected funds                                                            |
| R10  | Customer advises not authorized                                              |
| R11  | Customer Advises Entry Not in Accordance with the Terms of the Authorization |
| R12  | Branch sold to another DFI                                                   |
| R13  | Invalid ACH routing number                                                   |
| R14  | Representment payee deceased or unable to continue in that capacity          |
| R15  | Beneficiary of account holder deceased                                       |
| R16  | Account frozen                                                               |
| R17  | File record edit criteria                                                    |
| R18  | Improper effective entry date                                                |
| R19  | Amount field error                                                           |
| R20  | Non-transaction account                                                      |
| R21  | Invalid company identification                                               |
| R22  | Invalid individual ID number                                                 |
| R23  | Credit entry refused by receiver                                             |
| R24  | Duplicate entry                                                              |
| R25  | Addenda error                                                                |
| R26  | Mandatory field error                                                        |
| R27  | Trace number error                                                           |
| R28  | Routing number or check digit error                                          |
| R29  | Corporate customer advises not authorized                                    |
| R30  | RDFI not participant in check truncation program                             |
| R31  | Permissible return entry                                                     |
| R32  | RDFI nonsettlement                                                           |
| R33  | Return of XCK entry                                                          |
| R34  | Limited participation DFI                                                    |
| R35  | Return of improper debit entry                                               |
| R36  | Return of improper credit entry                                              |
| R37  | Source Document Presented for Payment                                        |
| R38  | Stop payment on source document                                              |
| R39  | Improper Source Document                                                     |
| R40  | Return of ENR                                                                |
| R41  | Invalid Transaction Code                                                     |
| R42  | Routing No. / Check Digit Error                                              |
| R43  | Invalid DFI Account No.                                                      |
| R44  | Invalid Individual ID No.                                                    |
| R45  | Invalid Individual / Company Name                                            |
| R46  | Invalid Representative Payee Indicator                                       |
| R47  | Duplicate Enrollment                                                         |
| R50  | State Law Affecting RCK Acceptance                                           |
| R51  | Ineligible / Improper Item Related to RCK                                    |
| R52  | Stop Payment on Item Related to RCK                                          |
| R53  | Item and RCK Presented for Payment                                           |
| R73  | Timely Original Return                                                       |
| R74  | Corrected Return                                                             |
| R75  | Return Not Duplicate                                                         |
| R76  | No Errors Found                                                              |
| R77  | Non-Acceptance of R62                                                        |
| R80  | IAT Coding Error                                                             |
| R81  | Non-Participant in IAT Program                                               |
| R82  | Invalid Foreign RDFI Identification                                          |
| R83  | Foreign RDFI Unable to Settle                                                |
| R84  | Not Processed by Gateway                                                     |
| R85  | Incorrectly Coded Outbound Int’l Payment                                     |

## Dishonored returns

| Code | Description                            |
| ---- | -------------------------------------- |
| R61  | Misrouted return                       |
| R62  | Return of Erroneous or Reversing Debit |
| R63  | Incorrect dollar amount                |
| R64  | Incorrect individual identification    |
| R65  | Incorrect transaction code             |
| R66  | Incorrect company identification       |
| R67  | Duplicate return                       |
| R68  | Untimely return                        |
| R69  | Multiple errors                        |
| R70  | Permissible return entry not accepted  |
| R71  | Misrouted Dishonored Return            |
| R72  | Untimely Dishonored Return             |

# Reversal reasons

Use ACH reversals to correct errors in previously processed ACH payments, such as incorrect amounts, account details, or duplicate transactions. Nacha rules for reversals are strict, and reversals can only be processed according to these rules. Nacha only allows reversal requests for the reason listed here:

- Duplicate transaction
- Incorrect amount
- Incorrect date
- Incorrect receiver information
- PPD Entry (Prearranged Payment and Deposit Entry. See [SEC codes](docId\:oDtRP7ARfnpQuFEGy4Sfh))&#x20;



# ACH correction codes

There are times when Cross River receives an ACH notification of change (NOC) related to an outbound payment. The `reasonCode` field in the extended `Ach.Noc.Received` webhook event provides the correction code indicating what information was wrong and needed to be changed for the payment to settle.

| Code | Description                                                                            |
| ---- | -------------------------------------------------------------------------------------- |
| C01  | Incorrect DFI Account Number                                                           |
| C02  | Incorrect Routing Number                                                               |
| C03  | Incorrect Routing Number and Incorrect DFI Number                                      |
| C04  | Incorrect Individual Name/Receiving Company Name                                       |
| C05  | Incorrect Transaction Code                                                             |
| C06  | Incorrect DFI Account Number and Incorrect Transaction Code                            |
| C07  | Incorrect Routing Number, Incorrect DFI Account Number, and Incorrect Transaction Code |
| C08  | Incorrect Receiving DFI Identification (IAT only)                                      |
| C09  | Incorrect Identification Number                                                        |
| C13  | Addenda Format Error                                                                   |
| C14  | Incorrect SEC Code for Outbound International Payment                                  |

# POS card transaction types

If the [secCode](docId\:oDtRP7ARfnpQuFEGy4Sfh) value in the request is **POS**, in the `extendedDetails` object you must include a value for the `cardTransactionType`.&#x20;

| Type | Description       |
| ---- | ----------------- |
| 01   | Purchase of goods |
| 02   | Cash              |
| 03   | Return Reversal   |
| 11   | Purchase Reversal |
| 12   | Cash Reversal     |
| 13   | Return            |
| 21   | Adjustment        |
| 99   | Misc. Transaction |

# IAT transaction types

When sending an IAT transaction, you must also supply a code for the transaction type in the `iatDetails.transactionTypeCode` field.

| Code | Description                  |
| ---- | ---------------------------- |
| ANN  | Annuity                      |
| BUS  | Business/Commercial          |
| DEP  | Deposit                      |
| LOA  | Loan                         |
| MIS  | Miscellaneous                |
| MOR  | Mortgage                     |
| PEN  | Pension                      |
| REM  | Remittance                   |
| RLS  | Rent/Lease                   |
| SAL  | Salary/Payroll               |
| TAX  | Tax                          |
| ARC  | Accounts Receivable Entry    |
| BOC  | Back Office Conversion Entry |
| MTE  | Machine Transfer Entry       |
| POP  | Point-of-Purchase Entry      |
| POS  | Point-of-Sale Entry          |
| RCK  | Re-presented Check Entry     |
| TEL  | Telephone-Initiated Entry    |
| WEB  | Internet-Initiated Entry     |

# Nacha field mappings

This table presents field names as they appear in a Nacha record and how they appear in CR APIs.

| Nacha Record | Nacha Field                          | Cross River API Field                                        |
| ------------ | ------------------------------------ | ------------------------------------------------------------ |
| Batch        | Company Name                         | Originator.Name                                              |
| Batch        | Company Discretionary Data           | Originator.Data                                              |
| Batch        | Company Identification               | Originator.Identification                                    |
| Batch        | Standard Entry Class Code            | SecCode                                                      |
| Batch        | Company Entry Description            | Description                                                  |
| Batch        | Company Descriptive Date             | N/A                                                          |
| Batch        | Effective Entry Date                 | EffectiveDate                                                |
| Batch        | Settlement Date                      | SettlementDate                                               |
| Batch        | Originator Status Code               | N/A                                                          |
| Batch<br />  | Originating DFI Identification<br /> | Originator.RoutingNumber<br />                               |
| Entry<br />  | Transaction Code<br />               | TransactionType / Receiver.AccountType<br />                 |
| Entry<br />  | Receiving DFI Identification<br />   | Receiver.RoutingNumber                                       |
| Entry        | DFI Account Number                   | Receiver.AccountNumber                                       |
| Entry        | Amount                               | Amount                                                       |
| Entry        | Individual Identification Number     | Receiver.Identification                                      |
| Entry        | Individual Name                      | Receiver.Name                                                |
| Entry        | Discretionary Data                   | Receiver.Data /ExtendedDetails.PaymentType (WEB/TEL only)    |
| Entry        | Trace Number                         | TraceNumber                                                  |
| Addenda (05) | Payment Related Information          | Addenda (only one informational addenda record is supported) |


[title] Deposit check
[path] Payments/Checks/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Check.Payment.Sent](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Check.Payment.Received](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Check.Payment.Rejected](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;

## API reference

Sends the Cross River system information needed to deposit a check into a Cross River account using the API. This information includes images of both the front and the back of the check. You submit these images after converting each one to a Base64-encoded value.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/checks/v1/payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "flw3I6YAlYAch_R3p6UGW",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '{\n  \"accountNumber\": \"2640511503\",\n  \"amount\": 10000,\n  \"frontImage\": \"/9j/4QuqRXhpZgAATU0AKgA...\",\n  \"backImage\": \"/9j/4REyRXhpZgAATU0AKgAA...\",\n  \"isRedeposit\": false,\n  \"purpose\": \"SKIP_IQA\"\n}'",
        "customLabel": ""
      },
      {
        "id": "CYgeJvWZTSkXfwN-zcMWw",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"accountNumber\": \"2640511503\",\n  \"amount\": 10000,\n  \"frontImage\": \"/9j/4QuqRXhpZgAATU0AKgA...\",\n  \"backImage\": \"/9j/4REyRXhpZgAATU0AKgAA...\",\n  \"isRedeposit\": false,\n  \"purpose\": \"SKIP_IQA\"\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "xaYu_cGuXJWdlnlKFafTe",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"accountNumber\": \"2640511503\",\n  \"amount\": 10000,\n  \"frontImage\": \"/9j/4QuqRXhpZgAATU0AKgA...\",\n  \"backImage\": \"/9j/4REyRXhpZgAATU0AKgAA...\",\n  \"isRedeposit\": False,\n  \"purpose\": \"SKIP_IQA\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"POST\", \"/checks/v1/payments\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "xf_QW7WMg_SLYQn8g9GUD",
        "language": "ruby",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"accountNumber\": \"2640511503\",\n  \"amount\": 10000,\n  \"frontImage\": \"/9j/4QuqRXhpZgAATU0AKgA...\",\n  \"backImage\": \"/9j/4REyRXhpZgAATU0AKgAA...\",\n  \"isRedeposit\": False,\n  \"purpose\": \"SKIP_IQA\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"POST\", \"/checks/v1/payments\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "09kqCFa4VeWcg6MviC2d2",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"accountNumber\": \"2640511503\",`+\"\n\"+`\n  \"amount\": 10000,`+\"\n\"+`\n  \"frontImage\": \"/9j/4QuqRXhpZgAATU0AKgA...\",`+\"\n\"+`\n  \"backImage\": \"/9j/4REyRXhpZgAATU0AKgAA...\",`+\"\n\"+`\n  \"isRedeposit\": false,`+\"\n\"+`\n  \"purpose\": \"SKIP_IQA\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "flw3I6YAlYAch_R3p6UGW"
  },
  "results": {
    "languages": [
      {
        "id": "uv43Jrbeg_9MgyANe5ty4",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"18619219-ccbb-45a6-a068-b30c008f7b47\",\n    \"accountNumber\": \"2640511503\",\n    \"referenceId\": \"C181DC3259D7\",\n    \"paymentType\": \"Forward\",\n    \"checkType\": \"Standard\",\n    \"direction\": \"Outbound\",\n    \"status\": \"Created\",\n    \"source\": \"Api\",\n    \"posting\": \"Pending\",\n    \"postingCode\": \"OK\",\n    \"coreTransactionId\": \"31746634-977b-461f-9899-b30c008f7b47\",\n    \"memoPostId\": \"51b24aa9-1cdc-4d82-9ddb-b30c008f7b47\",\n    \"originalPaymentId\": \"18619219-ccbb-45a6-a068-b30c008f7b47\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"payerRoutingNumber\": \"\",\n    \"payerAccountNumber\": \"\",\n    \"payeeName\": \"\",\n    \"checkNumber\": \"\",\n    \"bofdRoutingNumber\": \"021214891\",\n    \"sequenceNumber\": \"2203615981\",\n    \"amount\": 10000,\n    \"currency\": \"usd\",\n    \"recognizedAmount\": 0,\n    \"iqaPassed\": false,\n    \"hasFrontImage\": true,\n    \"hasBackImage\": true,\n    \"isRedeposit\": false,\n    \"policy\": \"Standard\",\n    \"schedule\": [\n        0,\n        10000\n    ],\n    \"createdAt\": \"2025-06-30T04:42:24.0202774-04:00\",\n    \"wasReturned\": false,\n    \"purpose\": \"SKIP_IQA\",\n    \"depositBusinessDate\": \"250701\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-06-30T04:42:24.0515279-04:00\"\n}"
      },
      {
        "id": "yqjDZqIq-LRz8rLaDYtPX",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2301,\n            \"message\": \"Deposits not allowed for account type\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "yqjDZqIq-LRz8rLaDYtPX"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the Cross River account receiving the check",
        "": "Number of the Cross River account receiving the check"
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "Integer",
        "description": "Money amount that appears on the check",
        "children": []
      },
      {
        "name": "frontImage",
        "kind": "required",
        "type": "string",
        "description": "The base64-encoded image of the front of the check, no larger than 1 MB",
        "": "The base64-encoded image of the front of the check, no larger than 1 MB"
      },
      {
        "name": "backImage",
        "kind": "required",
        "type": "string",
        "description": "The base64-encoded image of the back of the check, no larger than 1 MB",
        "": "The base64-encoded image of the back of the check, no larger than 1 MB"
      },
      {
        "name": "purpose",
        "kind": "optional",
        "type": "string",
        "description": "Purpose of the deposited check\n\n50 characters maximum",
        "children": []
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n\n50 characters maximum",
        "children": []
      },
      {
        "name": "isRedeposit",
        "kind": "optional",
        "type": "Boolean",
        "description": "True if the check was deposited before. Otherwise false.",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Check payment ID. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account receiving the check",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
      "children": []
    },
    {
      "name": "checkType",
      "kind": "optional",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
      "children": []
    },
    {
      "name": "direction ",
      "kind": "optional",
      "type": "string",
      "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank. See Deposit.)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank. See Withdrawal.)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Account posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified",
      "children": []
    },
    {
      "name": "positivePayResult",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled",
      "children": []
    },
    {
      "name": "positivePayMatchId",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the distribution that the check was included in",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "payerRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)",
      "children": []
    },
    {
      "name": "payerAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s account number (printed on the check)",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the bank where the check was first deposited",
      "children": []
    },
    {
      "name": "sequenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "The check sequence number",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)",
      "children": []
    },
    {
      "name": "micr",
      "kind": "optional",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number",
      "children": []
    },
    {
      "name": "recognizedAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The check amount recognized from the check image via OCR",
      "children": []
    },
    {
      "name": "iqaPassed",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false",
      "children": []
    },
    {
      "name": "returnCode",
      "kind": "optional",
      "type": "string",
      "description": "The return code indicates why the check was returned. There are several return codes.",
      "children": []
    },
    {
      "name": "hasFrontImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "hasBackImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "isRedeposit",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false.",
      "children": []
    },
    {
      "name": "policy ",
      "kind": "optional",
      "type": "string",
      "description": "The current availability policy type assigned to the deposit, defining the schedule for making funds available:\n- Standard\n- NewAccount\n- LargeDeposits\n- RedepositedCheck\n- RepeatedOverdrafts\n- OnUs\n- RCNoticeOfUnpaidReturn\n- RCSuspectFraud\n- RCFundingAccountOverdrafts\n- RCUnverifiedEndorsement\n- RCInconsistentInformation\n- RCErasuresOrAlterations\n- RCOutOfDateRoutingNumber\n- RCPostDatedOrStaleDate\n- RCPayingBankNotPaidIndication\n- RCLostOrDamaged\n- FiveDay\n- EmergencyConditions",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose of the deposited check",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "depositBusinessDate",
      "kind": "optional",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
      "children": []
    },
    {
      "name": "lockboxVendorId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1payments",
  "legacyHash": "bQN43kp8d-2n-ZpPt-wuo"
}
```
:::


[title] Request and response codes: Cards
[path] Cards/

## Transaction Codes

This table gives all the allowed values for the `transaction code` field in the transaction endpoint

| Code                          |
| ----------------------------- |
| Incoming ACH                  |
| Incoming ACH Return           |
| Incoming ACH NOC              |
| Incoming ACH On-Us            |
| Outgoing ACH                  |
| Outgoing ACH Return           |
| Outgoing ACH NOC              |
| Account Transfer              |
| Fee                           |
| Fee Refund                    |
| Deposit                       |
| Withdrawal                    |
| Interest                      |
| Interest Reversal             |
| Misc Credit                   |
| Misc Debit                    |
| Incoming Wire                 |
| Outgoing Wire                 |
| Check                         |
| Cash                          |
| Reversal                      |
| Adjustment                    |
| Sale                          |
| Card Auth                     |
| Payment                       |
| Refund                        |
| ATM Transaction               |
| RTP Debit                     |
| RTP Credit                    |
| xPay Debit                    |
| xPay Credit                   |
| Withholding                   |
| Sweep Interest                |
| Chargeback                    |
| Bonus                         |
| Reward                        |
| Card Pull                     |
| Card Push                     |
| Card Settlement               |
| Crypto Purchase               |
| Crypto Sale                   |
| Crypto Outgoing               |
| Crypto Incoming               |
| Crypto Transfer               |
| Crypto Return                 |
| INTL (International) Outgoing |
| INTL (International) Return   |
| Interchange                   |

## Flags

This table gives all the allowed values for the `flags `field in the transaction endpoint

| Code | Flag Description          |
| ---- | ------------------------- |
| FRC  | Force Post                |
| NSF  | Override Sufficient Funds |
| RES  | Override Restrictions     |
| STP  | Override Stop Payments    |
| PRE  | Presettlement             |
| PST  | PostSettlement            |
| STS  | Override Account Status   |
| RGD  | Override RegD Policy      |
| AUTH | Authorize Only            |
| PRI  | Priority                  |
| MPB  | Memo Post Balance         |
| TDP  | Override Time Deposit     |
| ZBP  | Zero Balance Posting      |

## Card state and status

This table explains each card state and status. The status appears as a value in the `status` field of the response.

| Card state                        | Card status | Other related fields and their values                                                           |
| --------------------------------- | ----------- | ----------------------------------------------------------------------------------------------- |
| Card has never been Activated     | Unactivated |                                                                                                 |
| Card Activated                    | Active      |                                                                                                 |
| Card Closed                       | Closed      |                                                                                                 |
| Card Lost                         | Suspended   | `StatusReasonCode` = **Lost**                                                                   |
| Card Stolen                       | Suspended   | `StatusReasonCode` = **Stolen**                                                                 |
| Admin Blocked                     | Suspended   | `AdminBlocked` = **true**                                                                       |
| Fraud Blocked                     | Suspended   | `FraudSuspect` = **true**<br />`StatusReasonCode` = **FraudBlocked**                            |
| Card Suspended by User            | Suspended   | `StatusReasonCode` = **NotSet**                                                                 |
| Card Unsuspended by User or Admin | Active      | `StatusReasonCode` = **NotSet**<br />`FraudSuspect` = **false**<br />`AdminBlocked` = **false** |

## Card category

In response to many card issuing calls, the `category` field indicates the card category.

| Category | Description  |
| -------- | ------------ |
| Debit    | Debit card   |
| Credit   | Credit card  |
| Prepaid  | Prepaid card |

## Card status

In response to many card issuing calls, the `status` field indicates the activation status of the card.

## Card status reason

In response to many card issuing calls, the `statusReasonCode` field indicates the reason for the activation status supplied in the status field.

| Reason            | Description                                      |
| ----------------- | ------------------------------------------------ |
| Not Set           |                                                  |
| Damaged           | Card damaged                                     |
| Expired           | Card expired                                     |
| Lost Stolen       | Card reported lost or stolen                     |
| Fraud Compromised | Card was compromised and closed because of fraud |
| Return            |                                                  |
| New Enrollment    |                                                  |

## Order status

In response to many card issuing calls, the `orderStatus` field indicates the status of the card order.

| Value | Status                   | Description                                                                                                                |
| ----- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| `0`   | `OrderPending`           | The order is pending fulfillment by the processor                                                                          |
| `1`   | `Completed`              | The order has been fulfilled by the processor. For physical cards, the card is being printed and mailed to the cardholder. |
| `2`   | `Failed`                 | The order failed at the processor                                                                                          |
| `3`   | `Authorizing`            |                                                                                                                            |
| `4`   | `AuthorizationFailed`    |                                                                                                                            |
| `5`   | `AuthorizationCompleted` |                                                                                                                            |

## Instrument type

In response to many card issuing calls, the `paymentInstrument` field indicates the type of card.

| Type                 | Description                                                  |
| -------------------- | ------------------------------------------------------------ |
| Physical MSR         | Physical card with a magnetic strip                          |
| PhysicaI CC          | Physical card with a chip                                    |
| Physical Contactless | Physical card using RFID                                     |
| Physical Combo       | Physical card with a chip that supports contactless payments |
| Virtual Pan          | Virtual card                                                 |

## Processing code

In the response to `GET /cardmanagement/v1/transactions`, the `processingCode` field indicates what process took place for a given transaction.

| Code | Definition                                                                                                                        |
| ---- | --------------------------------------------------------------------------------------------------------------------------------- |
| 00   | Purchase                                                                                                                          |
| 01   | Withdrawal                                                                                                                        |
| 02   | Debit Adjustment                                                                                                                  |
| 03   | Guarantee with Conversion (POS Check Service) (Future Use)                                                                        |
| 04   | Verification with Conversion (POS Check Service) (Future Use)                                                                     |
| 06   | Traveler Check                                                                                                                    |
| 09   | Purchase with Cash Back                                                                                                           |
| 10   | Account Funding                                                                                                                   |
| 11   | Quasi-Cash Transaction–Debit or Internet Gambling Transaction                                                                     |
| 13   | Funds Withdrawal for Electronic Purse                                                                                             |
| 17   | Cash Disbursement                                                                                                                 |
| 18   | Deferred Goods and Services/Scrip Issue/Conversion Only (POS Check Service) (Future Use)                                          |
| 19   | Debit Fee Collection/Deferred Goods and Services With Cash Disbursement                                                           |
| 20   | Credit Return (of goods)/Credit Transaction/Credit Voucher or Merchandise/Return Authorization (U.S. Only)/Purchase Return/Refund |
| 21   | Deposit                                                                                                                           |
| 22   | Credit Adjustment                                                                                                                 |
| 23   | Check Deposit Guarantee                                                                                                           |
| 24   | Check Deposit                                                                                                                     |
| 25   | Envelope-less Cash Deposit                                                                                                        |
| 26   | Original Credit                                                                                                                   |
| 28   | Prepaid Activation and Load Prepaid Load/Payment Transaction                                                                      |
| 29   | Credit Funds Disbursement/Primary Credit                                                                                          |
| 30   | Available Funds Inquiry/Commercial Deposit                                                                                        |
| 31   | Balance Inquiry                                                                                                                   |
| 33   | Account Updater Code/Account Verification (Future Use)                                                                            |
| 34   | ATM Mini Statement                                                                                                                |
| 49   | Eligibility Inquiry/Generic Balance Inquiry (Future Use)                                                                          |
| 40   | Cardholder Account Transfer                                                                                                       |
| 50   | Bill Payment/Payment to Another Party                                                                                             |
| 53   | Payment (U.S. only)                                                                                                               |
| 54   | Payment Debit (P2P)                                                                                                               |
| 55   | Payment from Third Party                                                                                                          |
| 56   | Payment Credit (P2P)                                                                                                              |
| 58   | Payment from Account to Credit/Loan                                                                                               |
| 59   | Payment Enclosed                                                                                                                  |
| 72   | Prepaid Activation                                                                                                                |
| 91   | PIN Unblock                                                                                                                       |
| 92   | PIN Change                                                                                                                        |

## Transaction message type

In the response to `GET /cardmanagement/v1/transactions`, the `messageType` field indicates the message type related to the transaction

| Type                       |
| -------------------------- |
| Authorization              |
| Authorization Advice       |
| Financial                  |
| Financial Advice           |
| Reversal Request           |
| Network Management Request |

## Transaction response code

In the response to `GET /cardmanagement/v1/transactions`, the `outboundResponseCode` field indicates the outbound response code related to the transaction

| Code | Definition                                                 |
| ---- | ---------------------------------------------------------- |
| 00   | Approved                                                   |
| 01   | Refer to Card Issuer                                       |
| 02   | Refer to Card Issuer Special Condition                     |
| 03   | Invalid Merchant                                           |
| 04   | Lost or Stolen Card                                        |
| 05   | Do not Honor                                               |
| 06   | Error                                                      |
| 07   | Pickup Card, Special Condition                             |
| 08   | Honor with Identification                                  |
| 10   | Approved Partial Amount                                    |
| 12   | Invalid Transaction                                        |
| 13   | Invalid Amount                                             |
| 14   | Invalid Card Number                                        |
| 15   | Invalid Issuer                                             |
| 17   | Customer Cancellation Reversal                             |
| 27   | Issuer File Update Field Edit Error                        |
| 30   | Format Error                                               |
| 31   | Bank Not Supported by Switch - Future Use                  |
| 32   | Partial Reversal                                           |
| 33   | Expired Card Pickup                                        |
| 34   | Suspect Fraud                                              |
| 39   | No Credit Account - Future Use                             |
| 40   | Requested Function Not Supported                           |
| 41   | Lost Card Not Captured                                     |
| 42   | No universal account                                       |
| 43   | Stolen Card Pickup                                         |
| 51   | Insufficient Funds                                         |
| 52   | No Checking Account - Future Use                           |
| 53   | No Savings Account - Future Use                            |
| 54   | Expired Card                                               |
| 55   | Invalid PIN                                                |
| 56   | No Card Account                                            |
| 57   | Transaction not Permitted to Cardholder                    |
| 58   | Transaction Not Permitted to Acquirer                      |
| 59   | Suspected Fraud                                            |
| 61   | Exceeds Withdrawal Amount Limit                            |
| 62   | Restricted Card                                            |
| 63   | Security Violation                                         |
| 64   | Original Amount Incorrect Reversal                         |
| 65   | Exceeds Withdrawal Frequency Limit                         |
| 68   | Response Received Late                                     |
| 70   | Invalid Transaction Contact Card Issuer                    |
| 71   | PIN Change Decline                                         |
| 75   | Allowed Number of PIN Tries Exceeded                       |
| 76   | Invalid Nonexistent To Account Specified - Future Use      |
| 77   | Invalid Nonexistent From Account Specified - Future Use    |
| 78   | Invalid Nonexistent Account Specified General - Future Use |
| 79   | Key Exchange Validation Failed                             |
| 80   | System Not Available - Future Use                          |
| 81   | Invalid Transaction PIN Block Format Error                 |
| 82   | Time Out Issuer                                            |
| 84   | Invalid Authorization LifeCycle                            |
| 85   | Approved Account Verification                              |
| 86   | PIN Validation Not Possible                                |
| 87   | Approved Purchase Only                                     |
| 88   | Invalid Transaction CVV2 Format Error                      |
| 89   | Bad Expiry Date                                            |
| 91   | Issuer Switch Inoperative                                  |
| 92   | Route Unable Transaction                                   |
| 93   | Transaction Cannot be Completed                            |
| 94   | Duplicate Transmission                                     |
| 96   | System Error                                               |
| 97   | Already Activated Card                                     |
| 99   | Approve Transaction Super Green Path                       |
| AT   | Auth Host Timed Out                                        |
| CD   | Cryptogram Decline                                         |
| CN   | Invalid Currency                                           |
| DN   | Auth Host Down                                             |
| E7   | Bad CVV2 Expiry Date                                       |
| GA   | General AVS Decline                                        |
| GC   | General Card Decline                                       |
| GV   | General CVV2 Decline                                       |
| PA   | Pre Active Card                                            |
| PF   | Invalid Status Purse                                       |
| PI   | PIN Change Fail Invalid Data                               |
| PL   | Bad PIN Invalid PIN Block Length                           |
| SA   | Inactive Card                                              |
| SD   | Account Closed                                             |
| TM   | Card Technology Mismatch                                   |
| 1A   | Strong Customer Authentication Required                    |
| AI   | ATC Validation Failed                                      |


[title] Simulate wallet provisioning approval
[path] Cards/APIs/Wallet Tokenization APIs/

## API reference

Simulate an approval of a wallet provisioning request.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/tokenization/approve-provisioning",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/approve-provisioning",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://ops-sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/approve-provisioning' \\\n--data '{\n  \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\"\n  }'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'ops-sandbox.crbcos.com',\n  'path': '/cardmanagement/v1/simulate/tokenization/approve-provisioning',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"cardId\\\": \\\"89a3ca77-10dc-4b88-b0a7-b4480095d104\\\"\\r\\n  }\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://ops-sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/approve-provisioning\"\n\npayload = \"{\\r\\n  \\\"cardId\\\": \\\"89a3ca77-10dc-4b88-b0a7-b4480095d104\\\"\\r\\n  }\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://ops-sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/approve-provisioning\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"cardId\\\": \\\"89a3ca77-10dc-4b88-b0a7-b4480095d104\\\"\\r\\n  }\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://ops-sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/approve-provisioning\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\"`+\"\n\"+`\n  }`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"tokenRequestorId\": \"40010030273\",\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "cardId",
        "kind": "required",
        "type": "string",
        "description": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card.",
        "": "GUID format card ID in the Cross River system, which is the id attribute value of the response to Create a card. This is not the number that appears on the card."
      },
      {
        "name": "tokenType",
        "kind": "optional",
        "type": "string",
        "description": "2-character alphanumeric code indicating the token type. Values: 01=ECOM/COF (e-commerce/card on file); 02=SE (secure element); 03=CBP (cloud-based payment); 05=E-commerce enabler; 06=Pseudo account. For Mastercard: C=Digital enablement service secure element token; E=Embossed account number provided by issuer; F=Digital enablement service static token; H=Digital enablement service cloud-based payments token; L=Pay with rewards loyalty program operator (LPO) card; M=Primary account number; P=Contactless account number; R=Pay with rewards card; V=Virtual card number. Note: Mastercard values are padded with a space.",
        "": "optional"
      },
      {
        "name": "tokenRequesterId",
        "kind": "optional",
        "type": "string",
        "description": "Identifier of the token service provider requesting tokenization.",
        "": "optional"
      },
      {
        "name": "tokenReferenceId",
        "kind": "optional",
        "type": "string",
        "description": "Unique reference identifier assigned by the token service provider.",
        "": "optional"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "tokenRequesterId",
      "kind": "optional",
      "type": "string",
      "description": ""
    },
    {
      "name": "tokenReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulatetokenizationappro",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Error codes: Cards
[path] Cards/

## Overview

This page provides comprehensive error code information for the Cards API, including error codes, descriptions, and resolution guidance based on actual codebase analysis.

## Error response format

```json
{
  "error": {
    "code": "2001",
    "message": "{2001}CustomerId was not found or not associated with Card",
    }
}
```

## Error codes by category

### General exception&#x20;

| Code     | Description      | Resolution                                                                                |
| -------- | ---------------- | ----------------------------------------------------------------------------------------- |
| **1000** | Validation error | General validation error; check request parameters and contact support if issue persists. |

### Cards (2001-2042)

Errors related to card operations, activation, suspension, and management.

| Code     | Description                                                              | Resolution                                                                                                                                                                                                                                               |
| -------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **2001** | CustomerId was not found or not associated with Card                     | Verify the customer ID is correct and has an active card association; check customer exists in the system                                                                                                                                                |
| **2002** | Card can not be activated                                                | Check card status and ensure card is in a state that allows activation; verify card has been issued and shipped                                                                                                                                          |
| **2003** | Card was already activated                                               | Card has already been activated; no further action needed unless card needs to be reissued                                                                                                                                                               |
| **2004** | Card can not be suspended                                                | Verify card status allows suspension; ensure card is active before attempting to suspend                                                                                                                                                                 |
| **2005** | Card is not suspended                                                    | Operation requires card to be in suspended status; verify card status before attempting operation                                                                                                                                                        |
| **2006** | Card is already closed                                                   | Card has been permanently closed and cannot be modified; issue a new card if needed                                                                                                                                                                      |
| **2007** | PIN cannot be set on closed cards                                        | Cannot set PIN on closed cards; issue a replacement card if PIN change is needed                                                                                                                                                                         |
| **2008** | Account relationship type is not eligible for debit cards                | Account type does not support debit card issuance; verify account type and relationship configuration                                                                                                                                                    |
| **2009** | Account does not belong to customer                                      | Verify the account number is associated with the specified customer ID                                                                                                                                                                                   |
| **2010** | Card Order has not completed processing                                  | Card order is still being processed; wait for order completion before attempting card operations                                                                                                                                                         |
| **2011** | Card is closed                                                           | Card is in closed status; operations cannot be performed on closed cards; issue a replacement card                                                                                                                                                       |
| **2012** | Request has not completed                                                | Previous request is still processing; wait for completion before submitting new request                                                                                                                                                                  |
| **2015** | Primary card not found                                                   | Primary card must exist before supplementary cards can be issued; create primary card first                                                                                                                                                              |
| **2020** | Card not found                                                           | Verify the card ID is correct; check if card exists using [Card details by ID](docId\:R5ZWm6VkWz-VS8_uVbZoH)                                                                                                                                             |
| **2021** | Processor Card Id is invalid                                             | Processor-assigned card ID is invalid or not found; verify card was successfully created at processor                                                                                                                                                    |
| **2022** | Customer already has a card for this account                             | Each customer can only have one card per account; use existing card or close it before creating new one                                                                                                                                                  |
| **2023** | Card Order must be complete                                              | Operation requires card order to be in completed status; wait for order processing to finish                                                                                                                                                             |
| **2024** | Card has not been activated                                              | Card must be activated before performing this operation; activate card first                                                                                                                                                                             |
| **2025** | Card is already suspended                                                | Card is already in suspended status; cannot suspend again                                                                                                                                                                                                |
| **2026** | Card is already AdminBlocked                                             | Card is already blocked by administrator; cannot block again                                                                                                                                                                                             |
| **2027** | Card Configuration not found                                             | Verify card configuration ID exists and is associated with the product                                                                                                                                                                                   |
| **2028** | Card Provider not found                                                  | Card provider configuration is missing; verify provider setup in system                                                                                                                                                                                  |
| **2029** | Card not found at processor                                              | Card does not exist at the card processor; verify card was successfully created and synced                                                                                                                                                               |
| **2030** | Card order is not complete                                               | Card order must complete before performing this operation; wait for order processing                                                                                                                                                                     |
| **2031** | Company Name can only be used on cards associated with business accounts | Company name field requires business account classification; verify account type                                                                                                                                                                         |
| **2032** | Card Replacement has not completed                                       | Card replacement is still processing; wait for replacement to complete                                                                                                                                                                                   |
| **2033** | PIN must be four digits                                                  | PIN must be exactly 4 numeric digits; provide a valid 4-digit PIN                                                                                                                                                                                        |
| **2034** | Card has already been replaced                                           | Card has been replaced with a newer card; operations should be performed on the replacement card                                                                                                                                                         |
| **2035** | Card can not be activated from current status                            | Check the current card status using [Card details by ID](docId\:R5ZWm6VkWz-VS8_uVbZoH) API endpoint; verify card is in a valid state for activation (e.g., not closed, not already activated); ensure card has been shipped before attempting activation |
| **2036** | Cannot close this card as newer card exists                              | A replacement card has been issued for this card; close the newer card first, or if the newer card should remain active, no action is needed on this older card                                                                                          |
| **2037** | Cannot authorize the card's account                                      | Account authorization failed; verify the account is active and in good standing; check account has sufficient authorization to perform the requested operation; ensure account is not locked or restricted                                               |
| **2038** | Authorization for the card's account timed out                           | Account authorization failed; verify the account is active and in good standing; check account has sufficient authorization to perform the requested operation; ensure account is not locked or restricted                                               |
| **2039** | Wallet token not found                                                   | Digital wallet token does not exist; verify the token ID is correct; check token was successfully provisioned using the wallet provisioning API; ensure token has not been deleted                                                                       |
| **2040** | Wallet token invalid status                                              | Wallet token is not in a valid status for the requested operation; check token status using the [Retrieve specific wallet token](docId\:m4QVkVrG6emlcJBmOtz-7) API endpoint to verify token is active and not suspended or deleted                       |
| **2041** | Card token can only be suspended currently                               | Token status allows only suspension operations at this time; if you need to perform a different operation, first update token to a status that supports it; for deletion, suspend the token first                                                        |
| **2042** | Card token action is required.                                           | A required action must be performed on the card token; check token lifecycle requirements; complete any pending activation or verification steps before proceeding                                                                                       |

### Card configuration (2100-2114)

Errors related to card configuration and product settings.

| Code     | Description                                                | Resolution                                                                                                                                                                                          |
| -------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **2100** | Cards Not Enabled On Product                               | Enable card issuance on the product configuration before attempting to create cards                                                                                                                 |
| **2101** | Card Config Not Found                                      | Verify the card configuration ID is correct and exists in the system                                                                                                                                |
| **2102** | Card Config Change Not Pending                             | Operation requires a pending configuration change; verify change status                                                                                                                             |
| **2103** | Card Config Not Associated With Product                    | Associate the card configuration with the product before using it                                                                                                                                   |
| **2104** | Card Config Not Enabled                                    | Enable the card configuration before attempting to use it for card issuance                                                                                                                         |
| **2105** | ShippingType not supported by card configuration           | Use a shipping type that is supported by this card configuration                                                                                                                                    |
| **2106** | CardConfigStatus must be provided on updates               | Include CardConfigStatus field when updating card configuration                                                                                                                                     |
| **2107** | OffsetAccountNumber not found                              | Offset account number specified in configuration does not exist; verify the offset account number is correct; ensure offset account has been created in the system before configuring               |
| **2108** | Card Processor cannot be changed                           | Card processor is immutable once set; to use a different processor, create a new card configuration; existing cards will continue using the original processor                                      |
| **2109** | Card Config Program Id Not Found                           | Program ID referenced in card configuration does not exist; verify the program ID is correct; ensure program has been created before associating with card configuration                            |
| **2110** | Card Config Authorization Type cannot be changed           | Authorization type is immutable once card configuration is created; to use a different authorization type, create a new card configuration; existing cards will use the original authorization type |
| **2111** | CardDesignId is not supported by card configuration        | The specified card design ID is not compatible with this card configuration; verify card design ID is correct; check card design is enabled for this configuration                                  |
| **2112** | Multiple Card Config Found                                 | Query returned multiple card configurations when only one was expected; provide more specific search criteria such as exact configuration ID; verify configuration is not duplicated in the system  |
| **2113** | Setting Program Id is already associated with a Partner    | This program ID is already linked to another partner; each program ID can only be associated with one partner; use a different program ID or unlink from the existing partner first                 |
| **2114** | Setting CardDesign Id is already associated with a Partner | This card design ID is already linked to another partner; each card design can only be associated with one partner; use a different card design ID or unlink from the existing partner first        |

### Product configuration (2150-2154)

Errors related to product configuration changes and approvals.

| Code     | Description                                          | Resolution                                                                                                |
| -------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| **2150** | Change not approved                                  | Configuration change must be approved before applying; submit for approval first                          |
| **2151** | Product change not pending                           | Operation requires product change to be in pending status; verify change status                           |
| **2152** | Product config change approval requires dual control | Have a second authorized user approve the product configuration change                                    |
| **2153** | Product config required                              | Include product configuration object in the request                                                       |
| **2154** | Product Config Not Found                             | Product configuration does not exist; verify product configuration ID is correct; check product is active |

### Integration (2200)

Errors related to external system integrations.

| Code     | Description | Resolution                                                                            |
| -------- | ----------- | ------------------------------------------------------------------------------------- |
| **2200** | TCP Error   | Network communication error with card processor; check network connectivity and retry |

### Accounts (2301-2302)

Errors related to account operations and status.

| Code     | Description       | Resolution                                                                     |
| -------- | ----------------- | ------------------------------------------------------------------------------ |
| **2301** | Account not found | Verify the account number is correct and the account exists in the system      |
| **2302** | Account is closed | Account is in closed status; operations cannot be performed on closed accounts |

### Simulator (2350-2364)

Errors related to transaction simulation and testing.

| Code     | Description                                                                    | Resolution                                                                                                                                                                                                           |
| -------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **2350** | Authorization already been cleared                                             | Authorization has been cleared; cannot perform operation on cleared authorization                                                                                                                                    |
| **2351** | Auth was not found                                                             | Verify the authorization ID is correct; check if authorization exists                                                                                                                                                |
| **2352** | Error occurred generating referenceid                                          | System error generating reference ID; retry the operation                                                                                                                                                            |
| **2353** | Transaction was not found                                                      | Verify the transaction ID is correct; check if transaction exists                                                                                                                                                    |
| **2354** | Transaction has already been reversed                                          | Transaction has been reversed; cannot reverse again                                                                                                                                                                  |
| **2355** | Transaction Category is not valid                                              | Provide a valid transaction category from the allowed list                                                                                                                                                           |
| **2356** | Transaction Type is not valid with this Category                               | Transaction type does not match the specified category; verify type/category combination                                                                                                                             |
| **2357** | Authorization was reversed                                                     | Authorization has been reversed; cannot perform operations on reversed authorization                                                                                                                                 |
| **2358** | Auth was not found (duplicate of 2351, but for captures)                       | Authorization not found for capture operation; verify authorization ID is correct; ensure authorization exists and has not expired; check authorization was successful before attempting capture                     |
| **2359** | Host timeout already received for this transaction                             | A host timeout has already been recorded for this transaction; do not retry; transaction is in terminal state; query transaction status to determine final outcome                                                   |
| **2360** | Reversal amount cannot be more than the transaction amount                     | Reversal amount exceeds original transaction amount; verify reversal amount is correct; reversal amount must be less than or equal to the original transaction amount                                                |
| **2361** | Action requires card has been previously activated                             | This operation requires the card to be activated; activate the card first using [Activate card by ID](docId\:E_U42earZiwDZOiIXuunI) API endpoint; verify activation completed successfully before retrying operation |
| **2362** | Action requires card has not been previously activated                         | This operation cannot be performed on an activated card; verify card status; if card should not have been activated, issue a replacement card                                                                        |
| **2363** | Either retrieval reference number or system trace audit number must be present | Include either `retrievalReferenceNumber`<br />or `systemTraceAuditNumber` in the request; at least one identifier is required to process the transaction                                                            |
| **2364** | Either retrieval reference number or transaction identifier must be present    | Include either `retrievalReferenceNumber`<br />or `transactionId` in the request; at least one identifier is required to locate the transaction                                                                      |

### Bin sponsorship (2375-2380)

Errors related to BIN sponsorship card operations.

| Code     | Description                                                       | Resolution                                                                                 |
| -------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| **2375** | PrimaryCustomerId was not found                                   | Verify the primary customer ID is correct and customer exists in the system                |
| **2376** | ParentCustomerId was not found                                    | Verify the parent customer ID is correct and customer exists in the system                 |
| **2377** | Bin Sponsorship Card Already Exists                               | BIN sponsorship card already exists for this customer; use existing card or close it first |
| **2378** | Primary Customer and Parent Customer Must Have The Same PartnerId | Ensure both primary and parent customers are associated with the same partner              |
| **2380** | Bin Sponsorship Card was not found                                | Verify the BIN sponsorship card ID is correct; check if card exists                        |

### Partners (2400-2401)

Partner management and validation errors

| Code     | Description         | Resolution                                                                                                                                                                                  |
| -------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **2400** | Partner not found   | Partner ID does not exist in the system; verify partner ID is correct; ensure partner has been onboarded; check partner has not been deleted; use GET /partners to list available partners  |
| **2401** | Partner is inactive | Partner account is in inactive status; operations cannot be performed for inactive partners; contact partner administrator to activate partner account; verify partner agreement is current |

### COS card management (2450-2457)

| Code     | Description                                                | Resolution                                                                                                                                                                                                                       |
| -------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **2450** | LoanId is null or empty, cannot resolve account number     | LoanId is required but was not provided or is empty; include valid LoanId in the request                                                                                                                                         |
| **2451** | Failed to retrieve webhook secret from AWS Secrets Manager | Unable to access webhook secret from AWS Secrets Manager; verify AWS credentials are configured correctly; check Secrets Manager permissions; ensure secret exists in the correct AWS region; verify network connectivity to AWS |
| **2452** | Webhook secret key not found in AWS Secrets Manager        | Webhook secret does not exist in AWS Secrets Manager; verify secret name is correct; ensure secret has been created in Secrets Manager; check secret is in the correct AWS region and account                                    |
| **2453** | Unknown monetary event type                                | Webhook contains an unrecognized monetary event type; verify event type is supported; API documentation for valid event types; ensure webhook payload format matches expected schema                                             |
| **2454** | No account configuration found for LoanId                  | LoanId does not have an associated account configuration; create account configuration for this LoanId                                                                                                                           |
| **2455** | Webhook payload is missing                                 | Webhook request body is empty or null; ensure webhook payload is included in POST request body; verify Content-Type header is set to application/json; check webhook is configured correctly                                     |
| **2456** | Webhook payload is missing event\_id                       | Required field `event_id` is missing from webhook payload; verify webhook payload includes `event_id` field; check  webhook configuration; ensure webhook format matches expected schema                                         |
| **2457** | Webhook payload is missing event\_type                     | Required field `event_id` is missing from webhook payload; verify webhook payload includes `event_id `field; check  webhook configuration; ensure webhook format matches expected schema                                         |

### Security - configuration (3001)

Security-related errors for configuration operations.

| Code     | Description       | Resolution                                                                                      |
| -------- | ----------------- | ----------------------------------------------------------------------------------------------- |
| **3000** | General exception |                                                                                                 |
| **3001** | Access denied     | User lacks permission to access configuration; verify user has appropriate role and permissions |

### Security - cards (3100)

Security-related errors for card operations.

| Code     | Description             | Resolution                                                                  |
| -------- | ----------------------- | --------------------------------------------------------------------------- |
| **3100** | Card is locked by admin | Card has been locked by administrator; contact administrator to unlock card |


[title] Simulate tokenization completion
[path] Cards/APIs/Wallet Tokenization APIs/

## API reference

Simulate completion of tokenization process.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/tokenization/token-completed",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/token-completed",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/token-completed' \\\n--data '{\n    \"tokenRequestorId\": \"40010030273\",\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"\n}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'POST',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/token-completed',\n  'headers': {\n  },\n  body: '{\\r\\n    \"tokenRequestorId\": \"40010030273\",\\r\\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"\\r\\n}'\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/token-completed\"\n\npayload = \"{\\r\\n    \\\"tokenRequestorId\\\": \\\"40010030273\\\",\\r\\n    \\\"tokenReferenceId\\\": \\\"DNITHE9081730203478143\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/token-completed\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n    \\\"tokenRequestorId\\\": \\\"40010030273\\\",\\r\\n    \\\"tokenReferenceId\\\": \\\"DNITHE9081730203478143\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/token-completed\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"tokenRequestorId\": \"40010030273\",`+\"\n\"+`\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"tokenRequestorId\": \"40010030273\",\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "tokenRequesterId",
        "kind": "required",
        "type": "string",
        "description": "Identifier of the token service provider requesting tokenization.",
        "": "Identifier of the token service provider requesting tokenization."
      },
      {
        "name": "tokenReferenceId",
        "kind": "required",
        "type": "string",
        "description": "Unique reference identifier assigned by the token service provider.",
        "": "Unique reference identifier assigned by the token service provider."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "tokenRequesterId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier of the token service provider requesting tokenization."
    },
    {
      "name": "tokenReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique reference identifier assigned by the token service provider.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulatetokenizationtoken",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] 3DS authentication details
[path] Cards/APIs/Authentication APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- Cards.3ds.OtpTransactionReceived
- Cards.3ds.OutOfBandTransactionReceived

## API reference

This API enables you to get your webhook event details.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/3ds/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/3ds/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b',\n  'headers': {\n  }\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"ca9cff74-796b-4a22-9e30-b45600a9783b\",\n    \"authenticationId\": \"c03c5399-d0ff-4622-aac9-cf102df2edb6\",\n    \"transactionId\": \"9a8d9109-fd4d-4c29-afdf-02d97367e196\",\n    \"stepUpRequestId\": \"7664f11a-4a0b-44cb-8551-d277e51a6068\",\n    \"stepUpCounter\": 0,\n    \"stepUpType\": \"OUTOFBANDOTHER\",\n    \"merchantId\": \"MERCH_12345678\",\n    \"merchantName\": \"ACME\",\n    \"merchantUrl\": \"https://www.examplestore.com\",\n    \"merchantCategoryCode\": \"5411\",\n    \"cardId\": \"89a3ca77-10dc-4b88-b0a7-b4480095d104\",\n    \"transactionAmount\": 10,\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "This ID is obtained from the webhook callback - it is the first parameter in the details block.  This is a GUID format identifier that uniquely identifies a 3DS authentication session.",
        "": "This ID is obtained from the webhook callback - it is the first parameter in the details block.  This is a GUID format identifier that uniquely identifies a 3DS authentication session."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The authentication ID obtained from the webhook callback (not from the authenticate response). This is a GUID format identifier that uniquely identifies a 3DS authentication session."
    },
    {
      "name": "authenticationId",
      "kind": "optional",
      "type": "string",
      "description": "The unique identifier for this 3DS authentication session. GUID format. This value is sent to your webhook endpoint after calling simulate authenticate.",
      "children": []
    },
    {
      "name": "transactionId",
      "kind": "optional",
      "type": "string",
      "description": "A unique string (32 hex characters) that identifies the transaction in a definite way. The payment card network passes this identifier, without changing it, throughout the entire interbank chain.",
      "children": []
    },
    {
      "name": "stepUpRequestId",
      "kind": "optional",
      "type": "string",
      "description": "Internal identifier for the step-up authentication request. Used to track the specific authentication attempt within the system.",
      "children": []
    },
    {
      "name": "stepUpCounter",
      "kind": "optional",
      "type": "integer",
      "description": "Counter which tracks the number of step-up authentication attempts made for this transaction. It increments with each retry attempt.",
      "children": []
    },
    {
      "name": "stepUpType",
      "kind": "optional",
      "type": "string",
      "description": "Select from the following types:\n\nOTPSMS:  The customer receives a one-time password via SMS text message and enters it to authenticate the transaction.\nOTPEMAIL: The customer receives a one-time password via email and enters it to authenticate the transaction.\nOUTOFBANDOTHER: The customer authenticates using an external method (mobile app, phone call, etc.). Authentication must be explicitly validated via API using data from a webhook callback.\n",
      "children": []
    },
    {
      "name": "verificationToken",
      "kind": "optional",
      "type": "string",
      "description": "Token used internally for verification purposes. Generated by the system to validate the authentication flow.",
      "children": []
    },
    {
      "name": "otpReferenceCode",
      "kind": "optional",
      "type": "string",
      "description": "Reference code associated with OTP-based authentication (OTPSMS or OTPEMAIL). Null for OUTOFBANDOTHER authentication type. Customer might this see code as reference in their SMS/Email.",
      "children": []
    },
    {
      "name": "merchantId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier of the merchant partner",
      "children": []
    },
    {
      "name": "merchantName",
      "kind": "optional",
      "type": "string",
      "description": "Name of the merchant",
      "children": []
    },
    {
      "name": "merchantUrl",
      "kind": "optional",
      "type": "string",
      "description": "The URL/domain of the merchant's website. Used for fraud detection and customer awareness during authentication.",
      "children": []
    },
    {
      "name": "merchantCategoryCode",
      "kind": "optional",
      "type": "string",
      "description": "ISO-defined 4-digit number that classifies a business by the goods they sell or the services they provide. nn characters maximum.",
      "children": []
    },
    {
      "name": "merchantCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "Country code of the merchant",
      "children": []
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": "GUID format card ID in the Cross River system, which is the ID attribute value of the response to Create a card. This is not the number that appears on the card.",
      "children": []
    },
    {
      "name": "transactionAmount",
      "kind": "optional",
      "type": "integer",
      "description": "Funds requested by the cardholder in the local currency of either the acquirer or source location of the transaction, exclusive of the transaction fee amount.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv13dsid",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Validate OUTOFBANDOTHER
[path] Cards/APIs/Authentication APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- Cards.3ds.OutOfBandTransactionReceived

## API reference

Enables you to proactively notify when a transaction has completed. OOB (Out-of-Band) authentication SCA (Strong Customer Authentication) challenges the result and informs the 3DS ACS (Access Control Server) about the cardholder authentication decision.

**This endpoint is only required for OUTOFBANDOTHER**

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/3ds/{id}/validate",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/3ds/{id}/validate",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b/validate' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q' \\\n--data '{  \n\"authenticationId\": \"c03c5399-d0ff-4622-aac9-cf102df2edb6\",        \n\"transactionId\": \"9a8d9109-fd4d-4c29-afdf-02d97367e196\",   \n \"stepUpRequestId\": \"7664f11a-4a0b-44cb-8551-d277e51a6068\",    \n\"status\": \"SUCCESS\"  \n}\n\n'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'POST',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b/validate',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q'\n  },\n  body: JSON.stringify({\n    \"authentication_id\": \"c03c5399-d0ff-4622-aac9-cf102df2edb6\",\n    \"transaction_id\": \"9a8d9109-fd4d-4c29-afdf-02d97367e196\",\n    \"stepup_request_id\": \"7664f11a-4a0b-44cb-8551-d277e51a6068\",\n    \"status\": \"SUCCESS\"\n  })\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b/validate\"\n\npayload = json.dumps({\n  \"authentication_id\": \"c03c5399-d0ff-4622-aac9-cf102df2edb6\",\n  \"transaction_id\": \"9a8d9109-fd4d-4c29-afdf-02d97367e196\",\n  \"stepup_request_id\": \"7664f11a-4a0b-44cb-8551-d277e51a6068\",\n  \"status\": \"SUCCESS\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b/validate\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q\"\nrequest.body = JSON.dump({\n  \"authentication_id\": \"c03c5399-d0ff-4622-aac9-cf102df2edb6\",\n  \"transaction_id\": \"9a8d9109-fd4d-4c29-afdf-02d97367e196\",\n  \"stepup_request_id\": \"7664f11a-4a0b-44cb-8551-d277e51a6068\",\n  \"status\": \"SUCCESS\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b/validate\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{  `+\"\n\"+`\n\"authentication_id\": \"c03c5399-d0ff-4622-aac9-cf102df2edb6\",        `+\"\n\"+`\n\"transaction_id\": \"9a8d9109-fd4d-4c29-afdf-02d97367e196\",   `+\"\n\"+`\n \"stepup_request_id\": \"7664f11a-4a0b-44cb-8551-d277e51a6068\",    `+\"\n\"+`\n\"status\": \"SUCCESS\"  `+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3OTc4OTIzOCwiaWF0IjoxNzc5Nzg5MjM4LCJleHAiOjE3Nzk3OTI4MzgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJhMDAxODZlNzFkN2I0YTU0OWZmNTc0ZmJlM2ZhNDg5ZiIsImp0aSI6IjJFMTI0MjFFQTM4RDdDQ0E4QTRGN0VEMjhFODMyNzAyIn0.oy11RlzjT1TamzpfR6rC9oeVNhPcMQrj0KclmzBQjKV0Mo99j9W3m8P0xjZLzmtlwDEq9t-6q5S3U9LbIeGtHP0NbzJCKM5yjARPt6OWSBBZ7su3jM_DI-rHIzV3w5wVu2dsj8KcMMXZBdwMyZ9eHUVE8pW1q-WLVsIa2RT-_G8ON3pMegPP3q8jYVoVIpyQ1oO6K66WwAkpyI908Lnf-EwWVhktiIGD-oRMmxHFjY4TYsIWC69bM39frut7WScrOAyZ63DYlmKHmPJ219zUZI03wq2WmlNljEkGB4eHa1uzbRK2rPciYkyGTd-rCLK5b8NhUSK79OMmzv85ggo_4Q\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"authenticationId\": \"c03c5399-d0ff-4622-aac9-cf102df2edb6\",\n    \"transactionId\": \"9a8d9109-fd4d-4c29-afdf-02d97367e196\"\n}",
        "customLabel": ""
      },
      {
        "id": "5G74pCBgnrgPCMfxGmeKR",
        "language": "404_NAME",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2000,\n            \"message\": \"Resource not found\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "This is the first id returned in the Cards.3ds.OutOfBandTransactionReceived webhook event (in the details array).",
        "": "This is the first id returned in the Cards.3ds.OutOfBandTransactionReceived webhook event (in the details array)."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "authenticationId",
        "kind": "required",
        "type": "string",
        "description": "The unique identifier for this 3DS authentication session. GUID format. This value is sent to your webhook endpoint after calling simulate authenticate. Can be included in the request body but not required since it is in the URL path",
        "": "authenticationId"
      },
      {
        "name": "transactionId",
        "kind": "required",
        "type": "string",
        "description": "A unique string (32 hex characters with hyphens 8-4-4-4-12) that identifies the transaction in a definite way. The payment card network passes this identifier, without changing it, throughout the entire interbank chain.",
        "": "A unique string (32 hex characters with hyphens 8-4-4-4-12) that identifies the transaction in a definite way. The payment card network passes this identifier, without changing it, throughout the entire interbank chain."
      },
      {
        "name": "stepUpRequestId",
        "kind": "required",
        "type": "string",
        "description": "Internal identifier for the step-up authentication request. Used to track the specific authentication attempt within the system.",
        "": "stepUpRequestId"
      },
      {
        "name": "status",
        "kind": "required",
        "type": "string",
        "description": "- SUCCESS\n- FAILURE\n- ERROR",
        "": "required"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "authenticationId",
      "kind": "optional",
      "type": "string",
      "description": "The unique identifier for this 3DS authentication session. Confirms with authentication was validated. GUID format. "
    },
    {
      "name": "transactionId",
      "kind": "optional",
      "type": "string",
      "description": "A unique string (32 hex characters) that identifies the transaction in a definite way. The payment card network passes this identifier, without changing it, throughout the entire interbank chain.",
      "children": []
    },
    {
      "name": "stepUpRequestId",
      "kind": "optional",
      "type": "string",
      "description": "Internal identifier for the step-up authentication request. Used to track the specific authentication attempt within the system.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "- SUCCESS\n- FAILURE\n- ERROR",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv13dsidvalidate",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Credit card application decisioning API
[path] Cards/APIs/

## Preapproval v2

PreApproval V2 provides an API set used to **validate**, **submit**, and **supplement** credit application data. These APIs are tailored, schema-driven, and real-time, designed to support the full lifecycle of credit applications under versioned credit policies.

Partners are required to send the **entire population of credit applications** through the PreApproval APIs, including those that are:&#x20;

- Funded&#x20;
- Approved but not accepted&#x20;
- Denied&#x20;
- Incomplete&#x20;
- Withdrawn&#x20;
- Prequalifications

Providing all application outcomes ensures that Cross River Bank (CRB) can perform the   statistical analyses required under regulatory guidance. This complete dataset enables monitoring for potential disparities, supports model governance, and ensures compliance with Fair Banking and fair lending obligations.

Each endpoint includes a schemaId in the URL, representing the data model and validation rules agreed upon between CRB and the partner for that schema version. Schema updates are requested through the change management process (via Jira) and updated on our schema builder UI.

:::hint{type="warning"}
**IMPORTANT**
To access the links below you must have the following IP addresses allowlisted:

Sandbox - 66.206.202.39 , 66.206.202.12

Production -66.206.202.62 , 66.206.202.15
:::

## Schema builder and data dictionary UI

The schema builder UI is an interface where partners can view and build together with Cross River, the data schema that will be used for their API, according to the partner-specific model.
Each schema defines the required and optional fields for the Application Submission and dry-run APIs, including data types, validation rules, and field descriptions.
Partners can use this interface to confirm their integration aligns with the agreed-upon schema before submitting applications under the finalized and approved schema.

::Image[Swagger: [https://lendingsandbox.crbcos.com/preapproval/swagger](https://lendingsandbox.crbcos.com/preapproval/swagger)]{src="https://app.archbee.com/api/optimize/4hvUOg5mU1sCngl0n0Has/ozULMQmaut3sicwFhmV3S_image.png" size="100" width="1575" height="826" position="center" caption="Pav2 Partner Schema example" darkWidth="1575" darkHeight="826" showCaption="true" indent="1"}

## Access to Schema UI

**Schema UI URL**: [https://lendingappsandbox.crbcos.com/preapproval/schemas](https://lendingappsandbox.crbcos.com/preapproval/schemas)

**Application UI:** [https://lendingappsandbox.crbcos.com/preapproval/applications](https://lendingappsandbox.crbcos.com/preapproval/applications)

Gaining access to the Preapproval v2 Schema UI is done via self-service on [Org management portal](docId\:C90JfVUQ2MwiRVdsAwxgr). Your IT Manager should have Admin access, and must add the following to your user:

- Role: **Lending Preapproval v2 ReadOnly**
- Partner: **Associate the partner created for Preapproval with your user&#x20;**

## API suite

An application in Pav2, is identified by the partner's **application\_id,&#x20;**&#x77;hich should be unique for each application in the partner's system.&#x20;

- Base URL for sandbox: [https://lendingsandbox.crbcos.com/preapproval](https://lendingsandbox.crbcos.com/preapproval)
- Base URL for production: [https://lending.crbcos.com/preapproval](https://lending.crbcos.com/preapproval)
- API scope for sandbox is: CosLending\:PreApproval\:stg
- API scope for production is: CosLending\:PreApproval\:prd

| API                                                                             | Description                                                                                                                                                   |
| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [POST /api/v2/applications/\{Partner Schema ID} ](docId\:PTX0F232EfVCVLbsYzT6I) | Post or update an application, including the final decision. You can call this multiple times, and we will only use the latest, according to application\_id. |
| **POST /api/v2/applications/\{Partner Schema ID}/dryrun**                       | This is identical to the above API, but is used only to test the validations and not actually submit the application.                                         |
| [Attachments by appID](docId\:IGXXXxmWhG0xi-eKGsVRd)                            | Post file attachments to an application. Attachments are sent in a zip file.                                                                                  |

**Notes:**

- During implementation, Cross River and the partner will agree on additional fields to be passed to Cross River based on the partner's unique operating model.
- Data types and schemas are available directly in the Schema UI, as well as descriptions and other goodies that will help you build your API integration.&#x20;
- Partners should ultimately send their final decision when using the API.
- The integrations and rules that run when sending in the PreApproval API are informational. They do not change the status of the application automatically.

## Integrations in PAV2

In PAV2, an **integration** is a configurable connection from a partner schema/application flow to another system or service. When a partner submits an application, PAV2 validates the application against the partner-specific JSON schema, loads the integrations configured for that schema, evaluates any “execute when” conditions, maps fields from the application into the integration’s expected parameters, and then executes the integration.

Integrations are intended to make PAV2 an orchestration point for lending workflows, rather than only a schema-validation and application-storage system. Examples can include compliance screening, loan origination, account/customer creation, decisioning, and reporting handoffs.



### How integrations are configured

- **Integration definition:** There is a hard set of integrations available in Pav2. Over time, we will add more integrations and integration types for our partners.&#x20;
- **Integration configuration:** CRB Users can configure the integration for a specific partner schema, map schema fields to the required integration parameters, and define when the integration should run.&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/4hvUOg5mU1sCngl0n0Has/w6Th7xDbIyB7QWHhksCPP_image.png" size="60" width="911" height="794" position="center" caption="Configuration mapping is per schema" darkWidth="911" darkHeight="794" showCaption="true"}

- **Validation:** PAV2 validates mappings against the partner schema. Invalid configurations should show field-level validation errors; some type conversions may be allowed with warnings depending on the integration parameter rules.
- **Enablement:** Integrations are enabled for schemas only after the configuration is valid and follows the schema lifecycle / approval rules.
- **Testing:&#x20;**&#x49;ntegrations should not run when running a dry-run, as this can incur unwanted costs and processes to be kicked off. To test connectivity and the integration, you may ask CRB to enable the integration temporarily in dry-run calls as well.&#x20;

### Runtime behavior

1. Partner submits an application to PAV2.
2. PAV2 authenticates the request and validates the payload against the relevant partner schema.
3. If schema validation fails, PAV2 returns validation errors and does not run downstream integrations.
4. If validation succeeds, PAV2 loads the enabled integrations for that partner schema and evaluates the "execute when" condition for each enabled integration.
5. If the condition is true, Pav2 calls the integration and returns the result in the Submit Application API response. The responses are in the integration\_results array.

::Image[]{src="https://api.archbee.com/api/optimize/4hvUOg5mU1sCngl0n0Has/9UMbbMxFNvRVq_KbLyMYB_image.png" size="60" width="631" height="309" position="center" caption="Example of Create Loan integration response, within the Pav2 response" darkWidth="631" darkHeight="309" showCaption="true"}

### Current and planned examples

- **Internal list screening:** Runs internal screening logic and returns compliance-related results.
- **Arix loan origination:** Maps PAV2 application fields into the Arix loan dictionary and calls Arix to create a loan, so that the partner does not need to maintain two separate data dictionaries. This replaces the need for [Create and update a loan](docId\:v8cArTCqMmQrYCIYHUf7f)&#x20;
- **COS customer/account opening:** Potential integration path for creating customers and accounts as part of credit card or embedded finance flows.
- **Decisioning / data enrichment:** Future integrations may include vendors such as 2nd- look decision vendors, credit bureau pulls, KYC/CIP, fraud, or other waterfall-style services.

## Cross River rules on preapproval

When posting an application using the Preapproval API, Cross River can check the data against a set of regulatory rules and return the rule results in the API response. The response body includes rule results in the `rule_results` object, which includes information about the rule and the data used when running the rule. If one of the rules fails on Preapproval, you can assume it will also fail in Arix. Speak to your \{\{}}, if you would like rules to run in preapproval.

- Currently, there are no webhooks in preapproval.
- The results of the rules are returned synchronously in the response.
- Cross River Ops cannot manually override the result of a rule in pre-approval, as these results are purely informational for our partners to use.
- Pre-approval rules do not alter the status of an application in pre-approval sent in by an MPL.

The following is an example of a `rule_results` object that contains the Cross River Internal List Rule.

```json
"rule_results": [
            {
                "status": "Success",
                "rule_process_date": "2023-09-06",
                "rule_results": [
                    {
                        "ruleId": "92bc95b5-fa3c-468a-b28b-b06800bdb9d7",
                        "version": "v1",
                        "ruleName": "Internal List Check",
                        "ruleDescription": "Borrower information should not be on Bank's Internal List",
                        "passed": true,
                        "data": "Anita Loan 693952XXX,Scrooge McDuck 014512994,UNONX7ENMOKLDCOXSEAUXW28SERFP3XNELOLPL2KOPNZCQ9N8Y )}k;b,)Sv8jco_78(yh^eu4|B:",
                        "resultInfo": null
                    }
                ]
            }
        ]

```




[title] Required fields list
[path] Payments/International payments/APIs/

## API reference

Returns the country-specific fields you need to submit when requesting a quote.

:::hint{type="warning"}
The attributes in the response are required for the quote with the parameters defined in the request for this call (except where indicated in the table below). The values provided describe the required responses. For example, for` lastName` the value is **^.\{1,255}**, indicating that the regular expression characters are permitted, up to 255 characters maximum. The `bankCountryCode` is **fr**, as provided in the request.
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /international/v1/meta/quote-requirements",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/International/v1/meta/quote-requirements",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "G8Ia4wm6rTQr4l9fPzQg1",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/International/v1/meta/quote-requirements?filter.currency=GBP&filter.beneficiaryCountryCode=US&filter.bankCountryCode=GB&filter.entityType=Individual' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "_ns1988xPOp5Y9nnPYMDC",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/International/v1/meta/quote-requirements?filter.currency=GBP&filter.beneficiaryCountryCode=US&filter.bankCountryCode=GB&filter.entityType=Individual',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "0J3s7fZEHK4jHP8cfMID4",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/International/v1/meta/quote-requirements?filter.currency=GBP&filter.beneficiaryCountryCode=US&filter.bankCountryCode=GB&filter.entityType=Individual\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "FQWhV7lt4Ufgfm8lSQCAa",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/International/v1/meta/quote-requirements?filter.currency=GBP&filter.beneficiaryCountryCode=US&filter.bankCountryCode=GB&filter.entityType=Individual\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "wkTNNWt_Wud99YHioDl2B",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/International/v1/meta/quote-requirements?filter.currency=GBP&filter.beneficiaryCountryCode=US&filter.bankCountryCode=GB&filter.entityType=Individual\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "G8Ia4wm6rTQr4l9fPzQg1"
  },
  "results": {
    "languages": [
      {
        "id": "I0GtWMksfeLWmEbteqiFJ",
        "language": "200",
        "customLabel": "",
        "code": "[\n    {\n        \"firstName\": \"^([^0-9]{2,255})$\",\n        \"lastName\": \"^([^0-9]{2,255})$\",\n        \"currency\": \"gbp\",\n        \"address\": \"^.{1,255}\",\n        \"city\": \"^.{1,255}\",\n        \"postalCode\": \"^.{1,12}$\",\n        \"countryCode\": \"US\",\n        \"routingCodeType1\": \"SortCode\",\n        \"routingCodeValue1\": \"^\\\\d{6}$\",\n        \"bankName\": \"^.{1,255}\",\n        \"bankCountryCode\": \"GB\",\n        \"receiverAccountNumber\": \"^\\\\d{8}$\",\n        \"entityType\": \"Individual\",\n        \"paymentNetwork\": \"Regular\",\n        \"priority\": false\n    }\n]"
      }
    ],
    "selectedLanguageId": "I0GtWMksfeLWmEbteqiFJ"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "currency",
        "kind": "required",
        "type": "string",
        "description": "Currency the customer is converting funds into. 3-letter ISO currency code.",
        "": "Currency the customer is converting funds into. 3-letter ISO currency code."
      },
      {
        "name": "beneficiaryCountryCode",
        "kind": "required",
        "type": "string",
        "description": "Two-letter ISO home bank country code. For a company entity, the country where it's registered. For an individual, the country where they're based.",
        "": "Two-letter ISO home bank country code. For a company entity, the country where it's registered. For an individual, the country where they're based."
      },
      {
        "name": "bankCountryCode",
        "kind": "required",
        "type": "string",
        "description": "Two-letter ISO transfer bank country code. For a company entity, the country where it's registered. For an individual, the country where they're based.",
        "": "Two-letter ISO transfer bank country code. For a company entity, the country where it's registered. For an individual, the country where they're based."
      },
      {
        "name": "entityType",
        "kind": "required",
        "type": "string",
        "description": "Legal status of the entity, whether beneficiary or originator:\n- Individual\n- Company\n- The default value is individual.",
        "": "required"
      },
      {
        "name": "priority",
        "kind": "required",
        "type": "Boolean",
        "description": "True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.",
        "": "required"
      },
      {
        "name": "pageNumber",
        "kind": "optional",
        "type": "integer",
        "description": "Number of items per page in a paginated response.",
        "": "Number of items per page in a paginated response."
      },
      {
        "name": "pageSize",
        "kind": "optional",
        "type": "integer",
        "description": "Number of items per page in a paginated response.",
        "": "Number of items per page in a paginated response."
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "First name of the beneficiary of the funds. Required if entityType is individual."
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Last name of the beneficiary of the funds. Required if entityType is individual.",
      "children": []
    },
    {
      "name": "companyName",
      "kind": "optional",
      "type": "string",
      "description": "Name of the beneficiary company. Required if entityType is company.",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency the customer is converting funds into. 3-letter ISO currency code.",
      "children": []
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "string",
      "description": "Complete beneficiary street address.",
      "children": []
    },
    {
      "name": "city",
      "kind": "optional",
      "type": "string",
      "description": "Beneficiary city.",
      "children": []
    },
    {
      "name": "stateProvince",
      "kind": "optional",
      "type": "string",
      "description": "Beneficiary state or province",
      "children": []
    },
    {
      "name": "postalCode",
      "kind": "optional",
      "type": "string",
      "description": "Beneficiary postal or ZIP code.",
      "children": []
    },
    {
      "name": "countryCode",
      "kind": "optional",
      "type": "string",
      "description": "Two-letter ISO country code. For a company entity, the country where it's registered. For an individual, the country where they're based.",
      "children": []
    },
    {
      "name": "routingCodeType1",
      "kind": "optional",
      "type": "string",
      "description": "Local payment routing system type. If supplied, you must also give the actual code for routingCodeValue1.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc",
      "children": []
    },
    {
      "name": "routingCodeValue1",
      "kind": "optional",
      "type": "string",
      "description": "Routing code of the routing code type.\nRequired if you supply a value for routingCodeType1.",
      "children": []
    },
    {
      "name": "routingCodeType2",
      "kind": "optional",
      "type": "string",
      "description": "Sometimes certain corridors will require 2 routing codes. In that case, use this attribute for the second code type. If supplied, you must also give the actual code for routingCodeValue2.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc",
      "children": []
    },
    {
      "name": "routingCodeValue2",
      "kind": "optional",
      "type": "string",
      "description": "Routing code of the routing code type.\nRequired if you supplied a value for routingCodeType2.",
      "children": []
    },
    {
      "name": "bicSwift",
      "kind": "optional",
      "type": "string",
      "description": "BIC/SWIFT code of the beneficiary FI",
      "children": []
    },
    {
      "name": "iban",
      "kind": "optional",
      "type": "string",
      "description": "IBAN number of the beneficiary FI",
      "children": []
    },
    {
      "name": "bankName",
      "kind": "optional",
      "type": "string",
      "description": "Name of the beneficiary's bank",
      "children": []
    },
    {
      "name": "bankCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "Two-letter code for the country where the beneficiary's bank account is held",
      "children": []
    },
    {
      "name": "bankAddress",
      "kind": "optional",
      "type": "string",
      "description": "Street address of the Beneficiary's bank",
      "children": []
    },
    {
      "name": "receiverAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of the beneficiary",
      "children": []
    },
    {
      "name": "entityType",
      "kind": "optional",
      "type": "string",
      "description": "Legal status of the entity, whether beneficiary or originator:\n\n- Individual\n- Company\n\nThe default value is individual.",
      "children": []
    },
    {
      "name": "paymentNetwork",
      "kind": "optional",
      "type": "string",
      "description": "- Regular\n- Priority",
      "children": []
    },
    {
      "name": "priority",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-internationalv1metaquote-requirements",
  "legacyHash": "aSJIHnjS0UOnLRznNXnBQ"
}
```
:::

:::hint{type="info"}
For additional information, refer to our International payments [tutorial](docId:0mIEXzUcyTurPvZq13y1Z).
:::


[title] Return reject
[path] Payments/Instant payments/APIs/

## API reference

Rejects an inbound return request previously received on a real-time payment.

:::hint{type="warning"}
This endpoint is strictly used to reject a return requests for inbound Instant Payments. This endpoint is only used to reject PaymentType: ReturnRequest It cannot be used for rejecting any other types of payments.

This action can also be done via [return rejects](docId\:N5Dy7Sv1CXLV682KMjtSz) in COS Explorer
:::

### SLA for Inbound Return Request Response

Inbound return requests must be approved or rejected within the following service level timelines, based on the payment rail:

**FedNow:**

- A response is required by the end of the next business day after the return request is received.

**RTP:**

- If the original credit transfer was a standard payment: Response is required **within 10 business days** of receiving the return request.
- If the original credit transfer was initiated through a Request for Payment (RfP): Response is required **within 20 business days** of receiving the return request.

:::hint{type="danger"}
Failure to respond within these SLAs will result in automatic rejection of the inbound return request.
:::

### Important Note on Fraud-Related Return Requests

Any **incoming return request** with a **Reason Code of FRAD (Fraud)** will be **reviewed by Cross River** and **cannot be actioned directly by the partner**. Cross River will evaluate the request and determine next steps internally.



:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/v1/payments/{id}/reject",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/reject",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "tiU4cYZv2OBskCr5TaQ-D",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/rtp/v1/payments//return-request' \\\n--data '{\n    \"reasonCode\": \"CUST\",\n    \"additionalInfo\": \"Some additional information\"\n    \"clientIdentifier\": 123456789\n}'",
        "customLabel": ""
      },
      {
        "id": "2YWx4qreq-R5gXud3QE83",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/rtp/v1/payments//return-request',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n    \\\"reasonCode\\\": \\\"CUST\\\",\\r\\n    \\\"additionalInfo\\\": \\\"Some additional information\\\"\\r\\n    \\\"clientIdentifier\\\": 123456789\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "YOHQfOuM8rgbNoWxp-x0u",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/rtp/v1/payments//return-request\"\n\npayload = \"{\\r\\n    \\\"reasonCode\\\": \\\"CUST\\\",\\r\\n    \\\"additionalInfo\\\": \\\"Some additional information\\\"\\r\\n    \\\"clientIdentifier\\\": 123456789\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "PO3dR-zN2juLY7vnhKT_l",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/rtp/v1/payments//return-request\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n    \\\"reasonCode\\\": \\\"CUST\\\",\\r\\n    \\\"additionalInfo\\\": \\\"Some additional information\\\"\\r\\n    \\\"clientIdentifier\\\": 123456789\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "PuudTHa7YBQRHtGMWLBRm",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/rtp/v1/payments//return-request\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"reasonCode\": \"CUST\",`+\"\n\"+`\n    \"additionalInfo\": \"Some additional information\"`+\"\n\"+`\n    \"clientIdentifier\": 123456789`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tiU4cYZv2OBskCr5TaQ-D"
  },
  "results": {
    "languages": [
      {
        "id": "ZA7E-VGG1EUptPxfRE3CS",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"bec31570-e8eb-4a99-a540-b30e00d84a1a\",\n    \"originalPaymentId\": \"af46b521-ffce-496e-a45d-b2d500e75f21\",\n    \"referenceId\": \"R183O5070P1UM\",\n    \"accountNumber\": \"319130192085\",\n    \"amount\": 3000,\n    \"direction\": \"Outbound\",\n    \"status\": \"Created\",\n    \"paymentType\": \"ReturnResponse\",\n    \"source\": \"Phone\",\n    \"transactionAccountContext\": \"NotSubmitted\",\n    \"debtor\": {\n    },\n    \"creditor\": {\n    },\n    \"network\": {\n        \"businessMessageId\": \"B20250702021214273T1BFEH94831209802\",\n        \"messageId\": \"M20250702021214273T1BATG82744535279\",\n        \"createdAt\": \"2025-07-02T09:07:29.1502333-04:00\",\n        \"numberOfTransactions\": 0,\n        \"interbankSettlementAmount\": 0,\n        \"instructionId\": \"M20250702990000001S1BUOO30780762671\",\n        \"fromParticipantId\": \"021214273T1\",\n        \"toParticipantId\": \"990000001S1\",\n        \"instructingRoutingNumber\": \"020202020\",\n        \"instructedRoutingNumber\": \"021214891\",\n        \"headerCreationDate\": \"2025-07-02T09:07:29.1502333-04:00\",\n        \"messageCreationDateTime\": \"2025-07-02T09:07:29.1502333-04:00\"\n    },\n    \"transactionInfo\": {\n        \"status\": \"RJCR\",\n        \"reasonCode\": \"AM04\"\n    },\n    \"wasRefunded\": false,\n    \"wasPaid\": false,\n    \"createdAt\": \"2025-07-02T09:07:29.1502333-04:00\",\n    \"canceledAt\": \"2025-07-02T09:07:29.1502333-04:00\",\n    \"productId\": \"09fba5b0-3b96-4925-b626-af630153c893\",\n    \"partnerId\": \"16ec26e2-259b-4c35-a792-af63010ed9d7\",\n    \"lastModifiedAt\": \"2025-07-02T09:07:29.1502333-04:00\",\n    \"sendAttemptCount\": 0,\n    \"result\": {\n        \"code\": \"AM04\"\n    },\n    \"awaitingResponse\": false,\n    \"referencedPaymentId\": \"880bbd72-cea3-4ef8-b4ef-b30e00d7c003\",\n    \"networkPlatform\": \"TCH\"\n}"
      },
      {
        "id": "on1Q4ouoLk2zFiLK12wlc",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2045,\n            \"message\": \"Receiver does not support Request For Payment\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ZA7E-VGG1EUptPxfRE3CS"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The ID of the inbound return request being rejected",
        "": "The ID of the inbound return request being rejected"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "requestBody",
        "kind": "required",
        "type": "object",
        "description": "",
        "": "required",
        "children": [
          {
            "name": "reasonCode",
            "kind": "required",
            "type": "string",
            "description": "A code that specifies the reason for rejecting the payment. Refer to the list of reason codes for more details."
          },
          {
            "name": "additionalInfo",
            "kind": "optional",
            "type": "string",
            "description": "Provides supplementary details regarding the request. Maximum 105 characters."
          },
          {
            "name": "clientIdentifier",
            "kind": "optional",
            "type": "string",
            "description": "Optional client-generated ID for tracking or reference purposes."
          }
        ],
        "schema": [
          {
            "name": "reasonCode",
            "kind": "required",
            "type": "string",
            "description": "A code that specifies the reason for rejecting the payment. Refer to the list of reason codes for more details."
          },
          {
            "name": "additionalInfo",
            "kind": "optional",
            "type": "string",
            "description": "Provides supplementary details regarding the request. Maximum 105 characters."
          },
          {
            "name": "clientIdentifier",
            "kind": "optional",
            "type": "string",
            "description": "Optional client-generated ID for tracking or reference purposes."
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the rejected return request. Assigned by Cross River."
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the originally received inbound payment that was attempted to be returned.",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Cross River’s unique reference ID for the rejected return. Begins with R for RTP.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account at Cross River that received the original inbound payment.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of return request in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Outbound to indicate the return (which is now rejected) would have left Cross River",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Transaction status:\n\n-Created\n-Pending\n-Processing\n-Completed\n-Rejected\n-Canceled\n-Hold\n-TimedOut\n-Finalizing\n-Failed\n-ResearchRequired\n-Expired\n-Authorized",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Always ReturnResponse for return payments.",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Indicates how the rejection was triggered — e.g., Api, Phone, PartnerPortal.",
      "children": []
    },
    {
      "name": "transactionAccountContext",
      "kind": "optional",
      "type": "string",
      "description": "Account-level transaction status for the rejected return:\n\n-NotSubmitted\n-Pending\n-Processing\n-Complete\n-Reversal\n-MemoPost\n-TimedOut\n-Canceled\n-Rejected\n-AuthOnly\n-NotSet",
      "children": []
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "Object",
      "description": "Network information",
      "children": [
        {
          "name": "businessMessageId",
          "kind": "optional",
          "type": "string",
          "description": "RTP business message ID for the return that was rejected."
        },
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the message"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Indicates when the rejection message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "instructionId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID assigned by the instructing agent for the return payment while it remains active within the RTP system. \n\nThis ID serves as the unique identifier for the return payment request within the Instant Payments network."
        },
        {
          "name": "fromParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "Cross River’s RTP participant ID as sender"
        },
        {
          "name": "toParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "RTP participant ID of the institution that originally sent the return"
        },
        {
          "name": "instructingRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Routing number of Cross River"
        },
        {
          "name": "instructedRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Routing number of the return-originating FI"
        },
        {
          "name": "headerCreationDate",
          "kind": "optional",
          "type": "string",
          "description": "Timestamp for the message header creation"
        },
        {
          "name": "messageCreationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time when the return rejection message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    },
    {
      "name": "transactionInfo",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the transaction",
      "children": [
        {
          "name": "status",
          "kind": "optional",
          "type": "String",
          "description": "RTP status indicating rejection. Example: RJCR."
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code provided for rejecting the return (e.g., AM04)."
        }
      ]
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was refunded. True if refunded, otherwise False.",
      "children": []
    },
    {
      "name": "wasPaid",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was received. True if received, otherwise False.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time if the return request was canceled, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "The GUID representing the ID of your specific product type associated with the account. This is provided by CR and identifies the CR account involved in the transfer.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "sendAttemptCount",
      "kind": "optional",
      "type": "Integer",
      "description": "The total count of attempts to send the payment request",
      "children": []
    },
    {
      "name": "result",
      "kind": "optional",
      "type": "object",
      "description": "Result of the response request",
      "children": [
        {
          "name": "code",
          "kind": "optional",
          "type": "string",
          "description": "The rejection reason code sent to the originating FI."
        }
      ]
    },
    {
      "name": "awaitingResponse",
      "kind": "optional",
      "type": "Boolean",
      "description": "Whether Cross River is awaiting response from the network (typically false after rejection).",
      "children": []
    },
    {
      "name": "referencedPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original return request ID which is now being rejected.",
      "children": []
    },
    {
      "name": "networkPlatform",
      "kind": "optional",
      "type": "string",
      "description": "The payment network platform used to process the payment. Possible values are: TCH (for RTP via The Clearing House)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtpv1paymentsidreject",
  "legacyHash": "4cMYEKYCRZYXTowV_a4Tv"
}
```
:::


[title] 
[path] Payments/Card payments/


[title] Sync Payments APIs
[path] Payments/Card payments/


[title] APIs
[path] Payments/Checks/


[title] 
[path] Payments/Untitled/


[title] Drawdown response
[path] Payments/Wires/APIs/

## API reference

:::hint{type="warning"}
In November 2027, the Fedwire Funds Service will remove the fully unstructured postal address option in favor of a single hybrid postal address format. **All parties** (intermediaryFi, beneficiaryFi, beneficiary, originator)  across **all message types** must transition from free-text address lines (address1, address2, address3) to a new **postalAddress object** with mandatory adrLine1, country and city fields.

In advance of the Fedwire enforcement date, all partners must use the new **postalAddress&#x20;**&#x73;tructure in production no later tha&#x6E;**&#x20;October 2027.&#x20;**&#x4D;essages sent in the old format after this date will be rejected.
:::

Responds to a wires drawdown request by sending payment.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /wires/v1/payments/{id}/drawdown-responses",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/wires/v1/payments/{id}/drawdown-responses",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "Fu-JmSOym0_w8yAF18kYP",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/wires/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/drawdown-responses' ^\n-H 'Content-Type: application/json' ^\n-H 'Authorization: Bearer token' ^\n-d '{\n    \"originator\": {\n        \"idCode\": \"D\",\n        \"identifier\": \"2955057589\",\n        \"name\": \"PMR Corp\",\n        \"address1\": \"10431 Howe Drive\",\n        \"address2\": \"Shawnee Mission KS 66206\",\n        \"address3\": \"US\"\n    },\n    \"beneficiaryReference\": \"testref\",\n    \"originatorToBeneficiary1\": \"1string\",\n    \"originatorToBeneficiary2\": \"2string\",\n    \"originatorToBeneficiary3\": \"3string\",\n    \"originatorToBeneficiary4\": \"4string\"\n}'",
        "customLabel": ""
      },
      {
        "id": "5H6I2_MAYQS_zeaNcjUGa",
        "language": "nodejs",
        "code": "curl -L 'https://sandbox.crbcos.com/wires/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/drawdown-responses' ^\n-H 'Content-Type: application/json' ^\n-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTk3MjM3MiwiaWF0IjoxNzUxOTcyMzcyLCJleHAiOjE3NTE5NzU5NzIsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJiNzk5OTUxZDQ3ZWI0MTBkOTJiOWRhOTAxYjhmZmE2OSIsImp0aSI6IjBFMTE0MEJERTQwRDk3NDM2REQzQkQxMjYzMDY3ODUyIn0.FcqK7nGmaihcHdjIyk9HIpxanSIUYv-mgtth_s0p3exkSfuquUwIBoH5mCfUuokC7Z0LtqLIbxVmwh79Ter0pP3pfC8K-fMUBag2xRNyfZ6e4RFnP-QbnyjWe9mIjWXonMLCdNS5OY0OJ-CllaKXaPq8cS87DUGGRYpnfx04KXvgF-Tk-yQjfb7AGrbLUol2rV5vgTUG8THICuuaZgSVKTDgNdpMOOO9lZSIXFG2Syh5j-4gBH_Fa46do-lNGkJJG3c-ISHkpqtvkEe2mvP5kOMRMhEa4nVs9YSpup9Jl1odjnVZ_D_QeKVSypVobVfKP_iaFbnwDGz_N4ORL3y3kg' ^\n-d '{\n    \"originator\": {\n        \"idCode\": \"D\",\n        \"identifier\": \"2955057589\",\n        \"name\": \"PMR Corp\",\n        \"address1\": \"10431 Howe Drive\",\n        \"address2\": \"Shawnee Mission KS 66206\",\n        \"address3\": \"US\"\n    },\n    \"beneficiaryReference\": \"testref\",\n    \"originatorToBeneficiary1\": \"1string\",\n    \"originatorToBeneficiary2\": \"2string\",\n    \"originatorToBeneficiary3\": \"3string\",\n    \"originatorToBeneficiary4\": \"4string\"\n}'",
        "customLabel": ""
      },
      {
        "id": "qX7hBJetYArVjQ-vL3Q4Z",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/wires/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/drawdown-responses\"\n\npayload = json.dumps({\n  \"originator\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"2955057589\",\n    \"name\": \"PMR Corp\",\n    \"address1\": \"10431 Howe Drive\",\n    \"address2\": \"Shawnee Mission KS 66206\",\n    \"address3\": \"US\"\n  },\n  \"beneficiaryReference\": \"testref\",\n  \"originatorToBeneficiary1\": \"1string\",\n  \"originatorToBeneficiary2\": \"2string\",\n  \"originatorToBeneficiary3\": \"3string\",\n  \"originatorToBeneficiary4\": \"4string\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTk3MjM3MiwiaWF0IjoxNzUxOTcyMzcyLCJleHAiOjE3NTE5NzU5NzIsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJiNzk5OTUxZDQ3ZWI0MTBkOTJiOWRhOTAxYjhmZmE2OSIsImp0aSI6IjBFMTE0MEJERTQwRDk3NDM2REQzQkQxMjYzMDY3ODUyIn0.FcqK7nGmaihcHdjIyk9HIpxanSIUYv-mgtth_s0p3exkSfuquUwIBoH5mCfUuokC7Z0LtqLIbxVmwh79Ter0pP3pfC8K-fMUBag2xRNyfZ6e4RFnP-QbnyjWe9mIjWXonMLCdNS5OY0OJ-CllaKXaPq8cS87DUGGRYpnfx04KXvgF-Tk-yQjfb7AGrbLUol2rV5vgTUG8THICuuaZgSVKTDgNdpMOOO9lZSIXFG2Syh5j-4gBH_Fa46do-lNGkJJG3c-ISHkpqtvkEe2mvP5kOMRMhEa4nVs9YSpup9Jl1odjnVZ_D_QeKVSypVobVfKP_iaFbnwDGz_N4ORL3y3kg'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "A-2mzRsX9VX6ukolcIfc2",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/wires/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/drawdown-responses\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTk3MjM3MiwiaWF0IjoxNzUxOTcyMzcyLCJleHAiOjE3NTE5NzU5NzIsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJiNzk5OTUxZDQ3ZWI0MTBkOTJiOWRhOTAxYjhmZmE2OSIsImp0aSI6IjBFMTE0MEJERTQwRDk3NDM2REQzQkQxMjYzMDY3ODUyIn0.FcqK7nGmaihcHdjIyk9HIpxanSIUYv-mgtth_s0p3exkSfuquUwIBoH5mCfUuokC7Z0LtqLIbxVmwh79Ter0pP3pfC8K-fMUBag2xRNyfZ6e4RFnP-QbnyjWe9mIjWXonMLCdNS5OY0OJ-CllaKXaPq8cS87DUGGRYpnfx04KXvgF-Tk-yQjfb7AGrbLUol2rV5vgTUG8THICuuaZgSVKTDgNdpMOOO9lZSIXFG2Syh5j-4gBH_Fa46do-lNGkJJG3c-ISHkpqtvkEe2mvP5kOMRMhEa4nVs9YSpup9Jl1odjnVZ_D_QeKVSypVobVfKP_iaFbnwDGz_N4ORL3y3kg\"\nrequest.body = JSON.dump({\n  \"originator\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"2955057589\",\n    \"name\": \"PMR Corp\",\n    \"address1\": \"10431 Howe Drive\",\n    \"address2\": \"Shawnee Mission KS 66206\",\n    \"address3\": \"US\"\n  },\n  \"beneficiaryReference\": \"testref\",\n  \"originatorToBeneficiary1\": \"1string\",\n  \"originatorToBeneficiary2\": \"2string\",\n  \"originatorToBeneficiary3\": \"3string\",\n  \"originatorToBeneficiary4\": \"4string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "6DAMdL5ThmPEWqlaPJC0D",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/wires/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/drawdown-responses\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"originator\": {`+\"\n\"+`\n        \"idCode\": \"D\",`+\"\n\"+`\n        \"identifier\": \"2955057589\",`+\"\n\"+`\n        \"name\": \"PMR Corp\",`+\"\n\"+`\n        \"address1\": \"10431 Howe Drive\",`+\"\n\"+`\n        \"address2\": \"Shawnee Mission KS 66206\",`+\"\n\"+`\n        \"address3\": \"US\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"beneficiaryReference\": \"testref\",`+\"\n\"+`\n    \"originatorToBeneficiary1\": \"1string\",`+\"\n\"+`\n    \"originatorToBeneficiary2\": \"2string\",`+\"\n\"+`\n    \"originatorToBeneficiary3\": \"3string\",`+\"\n\"+`\n    \"originatorToBeneficiary4\": \"4string\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTk3MjM3MiwiaWF0IjoxNzUxOTcyMzcyLCJleHAiOjE3NTE5NzU5NzIsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJiNzk5OTUxZDQ3ZWI0MTBkOTJiOWRhOTAxYjhmZmE2OSIsImp0aSI6IjBFMTE0MEJERTQwRDk3NDM2REQzQkQxMjYzMDY3ODUyIn0.FcqK7nGmaihcHdjIyk9HIpxanSIUYv-mgtth_s0p3exkSfuquUwIBoH5mCfUuokC7Z0LtqLIbxVmwh79Ter0pP3pfC8K-fMUBag2xRNyfZ6e4RFnP-QbnyjWe9mIjWXonMLCdNS5OY0OJ-CllaKXaPq8cS87DUGGRYpnfx04KXvgF-Tk-yQjfb7AGrbLUol2rV5vgTUG8THICuuaZgSVKTDgNdpMOOO9lZSIXFG2Syh5j-4gBH_Fa46do-lNGkJJG3c-ISHkpqtvkEe2mvP5kOMRMhEa4nVs9YSpup9Jl1odjnVZ_D_QeKVSypVobVfKP_iaFbnwDGz_N4ORL3y3kg\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Fu-JmSOym0_w8yAF18kYP"
  },
  "results": {
    "languages": [
      {
        "id": "spCzOi4OiMl0CermKUzVr",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"cb9bd5f3-e720-47dc-ab9b-af7100fe54d4\",\n  \"accountNumber\": \"2805121064\",\n  \"coreTransactionId\": \"e3e7a91e-fe43-40c4-a264-af710135d35d\",\n  \"referenceId\": \"W2235435X38\",\n  \"fedBatchId\": \"0259951e-e377-4940-b312-af71013af155\",\n  \"fedBatchSequence\": 1,\n  \"direction\": \"Outbound\",\n  \"paymentType\": \"DrawdownResponse\",\n  \"source\": \"OpsPortal\",\n  \"status\": \"Completed\",\n  \"posting\": \"Posted\",\n  \"partnerAuthorization\": \"NotRequired\",\n  \"partnerAuthorization2\": \"NotRequired\",\n  \"amount\": 1248098147,\n  \"currency\": \"usd\",\n  \"purpose\": \"ENTERED BY #61AA4FE6014AFB01143EBB35#\",\n  \"imad\": \"20221220QMGFT009000933\",\n  \"omad\": \"20221220B1QGC01R06123612201412\",\n  \"businessFunctionCode\": \"DRW\",\n  \"typeCode\": \"1032\",\n  \"senderRoutingNumber\": \"021214891\",\n  \"senderName\": \"CROSS RIVER BK\",\n  \"senderReference\": \"W2235435X38\",\n  \"receiverRoutingNumber\": \"021000021\",\n  \"receiverName\": \"JPMORGAN CHASE\",\n  \"originator\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"2805121064\",\n    \"name\": \"CRB FBO RPPS Settlement\",\n    \"address1\": \"885 Teaneck Rd\",\n    \"address2\": \"Teaneck, NJ 07666 US\"\n  },\n  \"beneficiary\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"014053007\",\n    \"name\": \"MASTERCARD INTERNATIONAL\",\n    \"address1\": \"INCORPORATE/SERVICES\",\n    \"address2\": \"2200 MASTERCARD BOULEVARD\",\n    \"address3\": \"O'FALLON MO 63366- US\"\n  },\n  \"beneficiaryReference\": \"1097200354JO\",\n  \"receiptDate\": \"1220\",\n  \"receiptTime\": \"1412\",\n  \"wasReversed\": false,\n  \"isInternational\": false,\n  \"createdAt\": \"2022-12-20T10:25:59.53-05:00\",\n  \"processedAt\": \"2022-12-20T14:07:01.817-05:00\",\n  \"effectiveDate\": \"2022-12-20T00:00:00-05:00\",\n  \"completedAt\": \"2022-12-20T14:46:58.82-05:00\",\n  \"postedAt\": \"2022-12-20T13:48:02.473-05:00\",\n  \"originalPaymentId\": \"5beea7ed-e9a1-4914-9bdc-af7100eb4dbd\",\n  \"partnerId\": \"6ee82269-9e89-450e-9065-a9e5012c2645\",\n  \"productId\": \"701d116d-ceec-4868-94f0-ab3c00e82bde\",\n  \"lastModifiedAt\": \"2022-12-20T14:46:58.8208426-05:00\",\n  \"postingCode\": \"OK\"\n}"
      }
    ],
    "selectedLanguageId": "spCzOi4OiMl0CermKUzVr"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The payment ID of the drawdown request. This is in GUID format.",
        "": "The payment ID of the drawdown request. This is in GUID format."
      }
    ],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "originator",
        "kind": "required",
        "type": "object",
        "description": "Details of the party sending the wire",
        "children": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Specifies the type of value in the identifier field that follows it. Maximum 1 character.\n\nFor outbound payments where originator details are submitted with your payment request, the value of this field should be \"D\". Otherwise, the system will automatically populate this field."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "A number or string that provides unique identification, such as a driver's license number for an individual, or a Fed routing number for an FI. Maximum 34 characters.\n\nFor outbound payments where originator details are submitted with the payment request, this is the customer account number. Otherwise, the system automatically populates this field using the account/product configuration."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Originator name. Maximum 140 characteres."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire."
          }
        ],
        "schema": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Specifies the type of value in the identifier field that follows it. Maximum 1 character.\n\nFor outbound payments where originator details are submitted with your payment request, the value of this field should be \"D\". Otherwise, the system will automatically populate this field."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "A number or string that provides unique identification, such as a driver's license number for an individual, or a Fed routing number for an FI. Maximum 34 characters.\n\nFor outbound payments where originator details are submitted with the payment request, this is the customer account number. Otherwise, the system automatically populates this field using the account/product configuration."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Originator name. Maximum 140 characteres."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire."
          }
        ]
      },
      {
        "name": "beneficiaryReference",
        "kind": "optional",
        "type": "string",
        "description": "Optional field for additional information. 35 characters maximum.",
        "": "Optional field for additional information. 35 characters maximum."
      },
      {
        "name": "originatorToBeneficiaryLine1",
        "kind": "optional",
        "type": "string",
        "description": "One of 4 fields, 35 characters each, to add additional information to be sent to the beneficiary.",
        "children": []
      },
      {
        "name": "originatorToBeneficiaryLine2",
        "kind": "optional",
        "type": "string",
        "description": "One of 4 fields, 35 characters each, to add additional information to be sent to the beneficiary.",
        "children": []
      },
      {
        "name": "originatorToBeneficiaryLine3",
        "kind": "optional",
        "type": "string",
        "description": "One of 4 fields, 35 characters each, to add additional information to be sent to the beneficiary.",
        "children": []
      },
      {
        "name": "originatorToBeneficiaryLine4",
        "kind": "optional",
        "type": "string",
        "description": "One of 4 fields, 35 characters each, to add additional information to be sent to the beneficiary.",
        "children": []
      }
    ]
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The payment ID. First appears in the initial response to the originate a payment request. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River Account number. In Cross River, depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier in GUID format for the Federal Reserve batch the payment went out on (or came in on for inbound payments)",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of payment in batch",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Inbound or outbound",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Transfer, Drawdown, DrawdownResponse, ServiceMessage, Reversal",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Method used to send payment instructions: Phone, fax, email, file, API, partner portal, Ops portal.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Payment status: Created, Pending, Hold, Batched, Processing, Completed, Rejected, Canceled, Blocked",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status: Pending, Posted, Failed, Canceled",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- OfacCancelUnableToDetermine\n- OfacConfirmed\n- OfacUnconfirmed\n- Other",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "Blocked because: OfacMatch, Other",
      "children": []
    },
    {
      "name": "partnerAuthorization",
      "kind": "optional",
      "type": "string",
      "description": "Partner authorization for out-of-band payment requests: NotRequired, Pending , Approved, Canceled",
      "children": []
    },
    {
      "name": "authorizedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the wire was authorized. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "authorizedById",
      "kind": "optional",
      "type": "string",
      "description": "Cross River user ID of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "authorizedByName",
      "kind": "optional",
      "type": "string",
      "description": "Cross River username of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "partnerAuthorization2",
      "kind": "optional",
      "type": "string",
      "description": "Second partner authorization for out-of-band payment requests: NotRequired, Pending , Approved, Canceled",
      "children": []
    },
    {
      "name": "authorizedAt2",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the wire was authorized. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "authorizedById2",
      "kind": "optional",
      "type": "string",
      "description": "Cross River user ID of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "authorizedByName2",
      "kind": "optional",
      "type": "string",
      "description": "Cross River username of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "integer",
      "description": "Dollar amount of wire transfer in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of funds transfer",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the wire transfer, such as \"daily settlement.\" Also use this field if you submit multiple wires for the same amount, such as \"1 of 2, 2 of 2.\" This data is not included with the outgoing FedWire message.",
      "children": []
    },
    {
      "name": "imad",
      "kind": "optional",
      "type": "string",
      "description": "Input Messaging Accountability Data. A combination of a date, source identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application. Unique to the payment.",
      "children": []
    },
    {
      "name": "omad",
      "kind": "optional",
      "type": "string",
      "description": "Output Messaging Accountability Data. A combination of a date, destination identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application.",
      "children": []
    },
    {
      "name": "businessFunctionCode",
      "kind": "optional",
      "type": "string",
      "description": "The business purpose of the wire transfer. The most common type is customer wire transfer (CTR) where the beneficiary isn't a bank. See the full list of codes and descriptions.",
      "children": []
    },
    {
      "name": "typeCode",
      "kind": "optional",
      "type": "string",
      "description": "The type code value provides information about the type of wire transfer sent (type code, first 2 digits) and more details about the transfer (subtype code, second 2 digits).",
      "children": []
    },
    {
      "name": "senderRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "Fedwire routing number for the sender's bank",
      "children": []
    },
    {
      "name": "senderName",
      "kind": "optional",
      "type": "string",
      "description": "Entity sending the wire",
      "children": []
    },
    {
      "name": "senderReference",
      "kind": "optional",
      "type": "string",
      "description": "Sender's assigned reference number",
      "children": []
    },
    {
      "name": "receiverRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The 9-digit Fedwire routing number of the financial institution receiving the wire drawdown request. The ABA directory provides financial institution routing numbers.",
      "children": []
    },
    {
      "name": "receiverName",
      "kind": "optional",
      "type": "string",
      "description": "Name of the FI receiving the funds",
      "children": []
    },
    {
      "name": "originatingFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of the financial institution sending the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier at the financial institution sending the wire"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originating financial institution"
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "object",
      "description": "Details of the party sending the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the party sending the wire. For outbound payments where originator details are submitted with the payment request, this is the customer account number. Otherwise, the system automatically populates this field."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Originator name. Maximum 140 characteres."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "intermediaryFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of any intermediary bank involved in the wire transaction. Not all wire transfers use an intermediary FI.",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the intermediary bank involved with the wire transaction."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Intermediary financial institution name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "beneficiaryFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of the financial institution receiving the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes.\n\nFor outbound payments, the value for the beneficiary FI is F to indicate the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the bank receiving the wire. For outbound payments, this is the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary financial institution name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "object",
      "description": "Details of the party receiving the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Identifier code for the party receiving the wire. For outbound payments, this is \"D\" to indicate a deposit account."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the party receiving the wire. For outbound payments, this is the beneficiary's account number."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "originatorToBeneficiary1",
      "kind": "optional",
      "type": "string",
      "description": "Field for additional information from the originator to the beneficiary.",
      "children": []
    },
    {
      "name": "beneficiaryReference",
      "kind": "optional",
      "type": "string",
      "description": "Optional field for additional information. 35 characters maximum.",
      "children": []
    },
    {
      "name": "receiptDate",
      "kind": "optional",
      "type": "string",
      "description": "Month and day the wire was received in the format mmdd",
      "children": []
    },
    {
      "name": "receiptTime",
      "kind": "optional",
      "type": "string",
      "description": "Time the wire was received, in the format hhmm",
      "children": []
    },
    {
      "name": "wasReversed",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the payment was reversed, otherwise false",
      "children": []
    },
    {
      "name": "isInternational",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the payment is international, otherwise false",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "releasedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was released in a distribution to the Fed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Business date on which the payment is effective",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was posted to the Cross River account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID of a previously sent wire that was reversed. Otherwise, the same as the payment ID.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, the Cross River account involved in the payment. More about Product IDs.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Includes OK (posted), RES (account restricted), NSF (insufficient funds in the account sending the wire)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-wiresv1paymentsiddrawdown-responses",
  "legacyHash": "OrzN0rBzz4aMbXxp-g-bt"
}
```
:::

### *Validation Rules*

- **Originator BIC Format**
  - If the Originator Id Code is "B" (SWIFT BIC Code) and the Identifier is not in valid BIC format, the request will be rejected.
  - **Error Message:** `OriginatorIdentifier is not a valid BIC.`

### *Default Values*

- **Beneficiary FI (if not provided in original DRC)**
  - Derived from the Receiver Routing Number:
    - ID Code: "F"
    - Identifier: Receiver’s routing number
    - Name: Receiver’s customer name
    - Address1: Receiver’s city and state
- **Originator FI (if not provided in original DRC)**
  - Derived from the Sender Routing Number:
    - ID Code: "F"
    - Identifier: Sender’s routing number
    - Name: Sender’s customer name
    - Address1: Sender’s city and state

#


[title] Drawdown request
[path] Payments/Wires/APIs/

## API reference

Request a payment from an external bank, to be sent by wire.

:::hint{type="warning"}
In November 2027, the Fedwire Funds Service will remove the fully unstructured postal address option in favor of a single hybrid postal address format. **All parties** (intermediaryFi, beneficiaryFi, beneficiary, originator)  across **all message types** must transition from free-text address lines (address1, address2, address3) to a new **postalAddress object** with mandatory adrLine1, country and city fields.

In advance of the Fedwire enforcement date, all partners must use the new **postalAddress&#x20;**&#x73;tructure in production no later tha&#x6E;**&#x20;October 2027.&#x20;**&#x4D;essages sent in the old format after this date will be rejected.
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /wires/v1/payments/corporate-drawdown-requests",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/wires/v1/payments/corporate-drawdown-requests",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "q2T4KKglH5k17NKxvjkXl",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/wires/v1/payments/corporate-drawdown-requests' ^\n-H 'Content-Type: application/json' ^\n-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTQ2MzYyNSwiaWF0IjoxNzUxNDYzNjI1LCJleHAiOjE3NTE0NjcyMjUsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJkZmYxMjQ5MzBhYzU0ZjI1YWRmMzY5OGNmNjk4NzQxZSIsImp0aSI6IkZDNjVBMjQ4NjQzNkEzNUQ3RjQyNkEyM0Q3ODQ1QUM3In0.fRpMlnR9xSOWcPRkHSuN2u8X5U6ZBpxsKPMZLKlZWmas5Gh0ClP0q_4j1ddEHzl8AhuLDzt9rkC7i8uF8cCN2af7XCZR0abiQd9ZbtuFjbMOw0y8wXQjzPTtiA2Rth1GmIJnrgH8OG-4k_FdbsU7pP8nK5NHaiUR9NrhvORh-_gfHtlk5Gc2g74ilDrZ-7mCCp96rdE34BDke0JaYiLZZFcW--ZSSr9Ue4YKM_cIQ8Hxl7zHtToZJIJY9Cf0R32QnWwwa6tyEJCmadpznf00Or2ldM0zTMNwgTbUPPAVKERPbKmVSV25GIIKhF5DnCiJBnsC26a1JmFoasSAgCqNDQ' ^\n-d '{\n  \"accountNumber\": \"\",\n  \"originator\":\n  {\n      \"idCode\": \"D\",\n      \"identifier\": \"\",\n      \"name\": \"PMR Corp\",\n      \"postalAddress\": {\n          \"adrLine1\": \"10431 Howe Drive\",\n          \"city\": \"Shawnee Mission\",\n          \"state\": \"KS\",\n          \"postalCode\": \"66206\",\n          \"country\": \"US\"\n      }\n  },\n  \"receiverRoutingNumber\": \"026009593\",\n  \"drawdownCreditAccountNumber\": \"021214891\",\n  \"beneficiaryFi\":\n  {\n      \"idCode\": \"D\",\n      \"identifier\": \"021214891\",\n      \"name\": \"Cross River Bank\",\n      \"postalAddress\": {\n          \"adrLine1\": \"400 KELBY STREET\",\n          \"city\": \"Fort Lee\",\n          \"state\": \"NJ\",\n          \"postalCode\": \"07024\",\n          \"country\": \"US\"\n      }\n  },\n  \"drawdownDebitAccount\":\n  {\n      \"idCode\": \"D\",\n      \"identifier\": \"777555333\",\n      \"name\": \"Lindberg Incorporated\",\n      \"postalAddress\": {\n          \"adrLine1\": \"5 Stop St\",\n          \"city\": \"New York\",\n          \"state\": \"NY\",\n          \"postalCode\": \"52555\",\n          \"country\": \"US\"\n      }\n  },\n  \"beneficiary\":\n  {\n      \"idCode\": \"D\",\n      \"identifier\": \"2714035231\",\n      \"name\": \"PMR Corp\",\n      \"postalAddress\": {\n          \"adrLine1\": \"10431 Howe Drive\",\n          \"city\": \"Shawnee Mission\",\n          \"state\": \"KS\",\n          \"postalCode\": \"66206\",\n          \"country\": \"US\"\n      }\n  },\n  \"beneficiaryReference\": \"testref\",\n  \"originatorToBeneficiary1\": \"1string\",\n  \"originatorToBeneficiary2\": \"2string\",\n  \"originatorToBeneficiary3\": \"3string\",\n  \"originatorToBeneficiary4\": \"4string\",\n  \"debitDrawdownAdviceCode\": \"WRE\",\n  \"debitDrawdownInformation1\": \"string1\",\n  \"debitDrawdownInformation2\": \"string2\",\n  \"debitDrawdownInformation3\": \"string3\",\n  \"debitDrawdownInformation4\": \"string4\",\n  \"debitDrawdownInformation5\": \"string5\",\n  \"receiverFiInformation1\": \"Astring\",\n  \"receiverFiInformation2\": \"Bstring\",\n  \"receiverFiInformation3\": \"Cstring\",\n  \"receiverFiInformation4\": \"Dstring\",\n  \"receiverFiInformation5\": \"Estring\",\n  \"fiToFiInformation1\": \"Hstring\",\n  \"fiToFiInformation2\": \"Istring\",\n  \"fiToFiInformation3\": \"Jstring\",\n  \"fiToFiInformation4\": \"Kstring\",\n  \"fiToFiInformation5\": \"Lstring\",\n  \"fiToFiInformation6\": \"Mstring\",\n  \"amount\": 50000000,\n  \"purpose\": \"drawdown testing\",\n  \"clientIdentifier\": \"40708c24-7dee-49c3-b4d2-c48d876f1f5e\"\n}'",
        "customLabel": ""
      },
      {
        "id": "mdrvzuw06tbYPMth0Alwp",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/wires/v1/payments/corporate-drawdown-requests',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTQ2MzYyNSwiaWF0IjoxNzUxNDYzNjI1LCJleHAiOjE3NTE0NjcyMjUsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJkZmYxMjQ5MzBhYzU0ZjI1YWRmMzY5OGNmNjk4NzQxZSIsImp0aSI6IkZDNjVBMjQ4NjQzNkEzNUQ3RjQyNkEyM0Q3ODQ1QUM3In0.fRpMlnR9xSOWcPRkHSuN2u8X5U6ZBpxsKPMZLKlZWmas5Gh0ClP0q_4j1ddEHzl8AhuLDzt9rkC7i8uF8cCN2af7XCZR0abiQd9ZbtuFjbMOw0y8wXQjzPTtiA2Rth1GmIJnrgH8OG-4k_FdbsU7pP8nK5NHaiUR9NrhvORh-_gfHtlk5Gc2g74ilDrZ-7mCCp96rdE34BDke0JaYiLZZFcW--ZSSr9Ue4YKM_cIQ8Hxl7zHtToZJIJY9Cf0R32QnWwwa6tyEJCmadpznf00Or2ldM0zTMNwgTbUPPAVKERPbKmVSV25GIIKhF5DnCiJBnsC26a1JmFoasSAgCqNDQ'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"accountNumber\": \"\",\n  \"originator\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"\",\n    \"name\": \"PMR Corp\",\n    \"address1\": \"10431 Howe Drive\",\n    \"address2\": \"Shawnee Mission KS 66206\",\n    \"address3\": \"US\"\n  },\n  \"receiverRoutingNumber\": \"026009593\",\n  \"drawdownCreditAccountNumber\": \"021214891\",\n  \"beneficiaryFi\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"021214891\",\n    \"name\": \"Cross River Bank\",\n    \"address1\": \"400 KELBY STREET\",\n    \"address2\": \"Fort Lee NJ 07024\",\n    \"address3\": \"US\"\n  },\n  \"drawdownDebitAccount\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"777555333\",\n    \"name\": \"Lindberg Incorporated\",\n    \"address1\": \"5 Stop St\",\n    \"address2\": \"New York NY 52555\",\n    \"address3\": \"US\"\n  },\n  \"beneficiary\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"2714035231\",\n    \"name\": \"PMR Corp\",\n    \"address1\": \"10431 Howe Drive\",\n    \"address2\": \"Shawnee Mission KS 66206\",\n    \"address3\": \"US\"\n  },\n  \"beneficiaryReference\": \"testref\",\n  \"originatorToBeneficiary1\": \"1string\",\n  \"originatorToBeneficiary2\": \"2string\",\n  \"originatorToBeneficiary3\": \"3string\",\n  \"originatorToBeneficiary4\": \"4string\",\n  \"debitDrawdownAdviceCode\": \"WRE\",\n  \"debitDrawdownInformation1\": \"string1\",\n  \"debitDrawdownInformation2\": \"string2\",\n  \"debitDrawdownInformation3\": \"string3\",\n  \"debitDrawdownInformation4\": \"string4\",\n  \"debitDrawdownInformation5\": \"string5\",\n  \"receiverFiInformation1\": \"Astring\",\n  \"receiverFiInformation2\": \"Bstring\",\n  \"receiverFiInformation3\": \"Cstring\",\n  \"receiverFiInformation4\": \"Dstring\",\n  \"receiverFiInformation5\": \"Estring\",\n  \"fiToFiInformation1\": \"Hstring\",\n  \"fiToFiInformation2\": \"Istring\",\n  \"fiToFiInformation3\": \"Jstring\",\n  \"fiToFiInformation4\": \"Kstring\",\n  \"fiToFiInformation5\": \"Lstring\",\n  \"fiToFiInformation6\": \"Mstring\",\n  \"amount\": 50000000,\n  \"purpose\": \"drawdown testing\",\n  \"clientIdentifier\": \"40708c24-7dee-49c3-b4d2-c48d876f1f5e\"\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "Irx1_JJR4aDCST2r8Fvn0",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/wires/v1/payments/corporate-drawdown-requests\"\n\npayload = json.dumps({\n  \"accountNumber\": \"\",\n  \"originator\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"\",\n    \"name\": \"PMR Corp\",\n    \"address1\": \"10431 Howe Drive\",\n    \"address2\": \"Shawnee Mission KS 66206\",\n    \"address3\": \"US\"\n  },\n  \"receiverRoutingNumber\": \"026009593\",\n  \"drawdownCreditAccountNumber\": \"021214891\",\n  \"beneficiaryFi\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"021214891\",\n    \"name\": \"Cross River Bank\",\n    \"address1\": \"400 KELBY STREET\",\n    \"address2\": \"Fort Lee NJ 07024\",\n    \"address3\": \"US\"\n  },\n  \"drawdownDebitAccount\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"777555333\",\n    \"name\": \"Lindberg Incorporated\",\n    \"address1\": \"5 Stop St\",\n    \"address2\": \"New York NY 52555\",\n    \"address3\": \"US\"\n  },\n  \"beneficiary\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"2714035231\",\n    \"name\": \"PMR Corp\",\n    \"address1\": \"10431 Howe Drive\",\n    \"address2\": \"Shawnee Mission KS 66206\",\n    \"address3\": \"US\"\n  },\n  \"beneficiaryReference\": \"testref\",\n  \"originatorToBeneficiary1\": \"1string\",\n  \"originatorToBeneficiary2\": \"2string\",\n  \"originatorToBeneficiary3\": \"3string\",\n  \"originatorToBeneficiary4\": \"4string\",\n  \"debitDrawdownAdviceCode\": \"WRE\",\n  \"debitDrawdownInformation1\": \"string1\",\n  \"debitDrawdownInformation2\": \"string2\",\n  \"debitDrawdownInformation3\": \"string3\",\n  \"debitDrawdownInformation4\": \"string4\",\n  \"debitDrawdownInformation5\": \"string5\",\n  \"receiverFiInformation1\": \"Astring\",\n  \"receiverFiInformation2\": \"Bstring\",\n  \"receiverFiInformation3\": \"Cstring\",\n  \"receiverFiInformation4\": \"Dstring\",\n  \"receiverFiInformation5\": \"Estring\",\n  \"fiToFiInformation1\": \"Hstring\",\n  \"fiToFiInformation2\": \"Istring\",\n  \"fiToFiInformation3\": \"Jstring\",\n  \"fiToFiInformation4\": \"Kstring\",\n  \"fiToFiInformation5\": \"Lstring\",\n  \"fiToFiInformation6\": \"Mstring\",\n  \"amount\": 50000000,\n  \"purpose\": \"drawdown testing\",\n  \"clientIdentifier\": \"40708c24-7dee-49c3-b4d2-c48d876f1f5e\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTQ2MzYyNSwiaWF0IjoxNzUxNDYzNjI1LCJleHAiOjE3NTE0NjcyMjUsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJkZmYxMjQ5MzBhYzU0ZjI1YWRmMzY5OGNmNjk4NzQxZSIsImp0aSI6IkZDNjVBMjQ4NjQzNkEzNUQ3RjQyNkEyM0Q3ODQ1QUM3In0.fRpMlnR9xSOWcPRkHSuN2u8X5U6ZBpxsKPMZLKlZWmas5Gh0ClP0q_4j1ddEHzl8AhuLDzt9rkC7i8uF8cCN2af7XCZR0abiQd9ZbtuFjbMOw0y8wXQjzPTtiA2Rth1GmIJnrgH8OG-4k_FdbsU7pP8nK5NHaiUR9NrhvORh-_gfHtlk5Gc2g74ilDrZ-7mCCp96rdE34BDke0JaYiLZZFcW--ZSSr9Ue4YKM_cIQ8Hxl7zHtToZJIJY9Cf0R32QnWwwa6tyEJCmadpznf00Or2ldM0zTMNwgTbUPPAVKERPbKmVSV25GIIKhF5DnCiJBnsC26a1JmFoasSAgCqNDQ'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "VHmZVmxL7wzAaNs2EsCiF",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/wires/v1/payments/corporate-drawdown-requests\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTQ2MzYyNSwiaWF0IjoxNzUxNDYzNjI1LCJleHAiOjE3NTE0NjcyMjUsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJkZmYxMjQ5MzBhYzU0ZjI1YWRmMzY5OGNmNjk4NzQxZSIsImp0aSI6IkZDNjVBMjQ4NjQzNkEzNUQ3RjQyNkEyM0Q3ODQ1QUM3In0.fRpMlnR9xSOWcPRkHSuN2u8X5U6ZBpxsKPMZLKlZWmas5Gh0ClP0q_4j1ddEHzl8AhuLDzt9rkC7i8uF8cCN2af7XCZR0abiQd9ZbtuFjbMOw0y8wXQjzPTtiA2Rth1GmIJnrgH8OG-4k_FdbsU7pP8nK5NHaiUR9NrhvORh-_gfHtlk5Gc2g74ilDrZ-7mCCp96rdE34BDke0JaYiLZZFcW--ZSSr9Ue4YKM_cIQ8Hxl7zHtToZJIJY9Cf0R32QnWwwa6tyEJCmadpznf00Or2ldM0zTMNwgTbUPPAVKERPbKmVSV25GIIKhF5DnCiJBnsC26a1JmFoasSAgCqNDQ\"\nrequest.body = JSON.dump({\n  \"accountNumber\": \"\",\n  \"originator\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"\",\n    \"name\": \"PMR Corp\",\n    \"address1\": \"10431 Howe Drive\",\n    \"address2\": \"Shawnee Mission KS 66206\",\n    \"address3\": \"US\"\n  },\n  \"receiverRoutingNumber\": \"026009593\",\n  \"drawdownCreditAccountNumber\": \"021214891\",\n  \"beneficiaryFi\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"021214891\",\n    \"name\": \"Cross River Bank\",\n    \"address1\": \"400 KELBY STREET\",\n    \"address2\": \"Fort Lee NJ 07024\",\n    \"address3\": \"US\"\n  },\n  \"drawdownDebitAccount\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"777555333\",\n    \"name\": \"Lindberg Incorporated\",\n    \"address1\": \"5 Stop St\",\n    \"address2\": \"New York NY 52555\",\n    \"address3\": \"US\"\n  },\n  \"beneficiary\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"2714035231\",\n    \"name\": \"PMR Corp\",\n    \"address1\": \"10431 Howe Drive\",\n    \"address2\": \"Shawnee Mission KS 66206\",\n    \"address3\": \"US\"\n  },\n  \"beneficiaryReference\": \"testref\",\n  \"originatorToBeneficiary1\": \"1string\",\n  \"originatorToBeneficiary2\": \"2string\",\n  \"originatorToBeneficiary3\": \"3string\",\n  \"originatorToBeneficiary4\": \"4string\",\n  \"debitDrawdownAdviceCode\": \"WRE\",\n  \"debitDrawdownInformation1\": \"string1\",\n  \"debitDrawdownInformation2\": \"string2\",\n  \"debitDrawdownInformation3\": \"string3\",\n  \"debitDrawdownInformation4\": \"string4\",\n  \"debitDrawdownInformation5\": \"string5\",\n  \"receiverFiInformation1\": \"Astring\",\n  \"receiverFiInformation2\": \"Bstring\",\n  \"receiverFiInformation3\": \"Cstring\",\n  \"receiverFiInformation4\": \"Dstring\",\n  \"receiverFiInformation5\": \"Estring\",\n  \"fiToFiInformation1\": \"Hstring\",\n  \"fiToFiInformation2\": \"Istring\",\n  \"fiToFiInformation3\": \"Jstring\",\n  \"fiToFiInformation4\": \"Kstring\",\n  \"fiToFiInformation5\": \"Lstring\",\n  \"fiToFiInformation6\": \"Mstring\",\n  \"amount\": 50000000,\n  \"purpose\": \"drawdown testing\",\n  \"clientIdentifier\": \"40708c24-7dee-49c3-b4d2-c48d876f1f5e\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "8xFk1Z5b7tlXtYkqblpHh",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/wires/v1/payments/corporate-drawdown-requests\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"accountNumber\": \"\",`+\"\n\"+`\n  \"originator\":`+\"\n\"+`\n  {`+\"\n\"+`\n      \"idCode\": \"D\",`+\"\n\"+`\n      \"identifier\": \"\",`+\"\n\"+`\n      \"name\": \"PMR Corp\",`+\"\n\"+`\n      \"address1\": \"10431 Howe Drive\",`+\"\n\"+`\n      \"address2\": \"Shawnee Mission KS 66206\",`+\"\n\"+`\n      \"address3\": \"US\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"receiverRoutingNumber\": \"026009593\",`+\"\n\"+`\n  \"drawdownCreditAccountNumber\": \"021214891\",`+\"\n\"+`\n  \"beneficiaryFi\":`+\"\n\"+`\n  {`+\"\n\"+`\n      \"idCode\": \"D\",`+\"\n\"+`\n      \"identifier\": \"021214891\",`+\"\n\"+`\n      \"name\": \"Cross River Bank\",`+\"\n\"+`\n      \"address1\": \"400 KELBY STREET\",`+\"\n\"+`\n      \"address2\": \"Fort Lee NJ 07024\",`+\"\n\"+`\n      \"address3\": \"US\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"drawdownDebitAccount\":`+\"\n\"+`\n  {`+\"\n\"+`\n      \"idCode\": \"D\",`+\"\n\"+`\n      \"identifier\": \"777555333\",`+\"\n\"+`\n      \"name\": \"Lindberg Incorporated\",`+\"\n\"+`\n      \"address1\": \"5 Stop St\",`+\"\n\"+`\n      \"address2\": \"New York NY 52555\",`+\"\n\"+`\n      \"address3\": \"US\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"beneficiary\":`+\"\n\"+`\n  {`+\"\n\"+`\n      \"idCode\": \"D\",`+\"\n\"+`\n      \"identifier\": \"2714035231\",`+\"\n\"+`\n      \"name\": \"PMR Corp\",`+\"\n\"+`\n      \"address1\": \"10431 Howe Drive\",`+\"\n\"+`\n      \"address2\": \"Shawnee Mission KS 66206\",`+\"\n\"+`\n      \"address3\": \"US\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"beneficiaryReference\": \"testref\",`+\"\n\"+`\n  \"originatorToBeneficiary1\": \"1string\",`+\"\n\"+`\n  \"originatorToBeneficiary2\": \"2string\",`+\"\n\"+`\n  \"originatorToBeneficiary3\": \"3string\",`+\"\n\"+`\n  \"originatorToBeneficiary4\": \"4string\",`+\"\n\"+`\n  \"debitDrawdownAdviceCode\": \"WRE\",`+\"\n\"+`\n  \"debitDrawdownInformation1\": \"string1\",`+\"\n\"+`\n  \"debitDrawdownInformation2\": \"string2\",`+\"\n\"+`\n  \"debitDrawdownInformation3\": \"string3\",`+\"\n\"+`\n  \"debitDrawdownInformation4\": \"string4\",`+\"\n\"+`\n  \"debitDrawdownInformation5\": \"string5\",`+\"\n\"+`\n  \"receiverFiInformation1\": \"Astring\",`+\"\n\"+`\n  \"receiverFiInformation2\": \"Bstring\",`+\"\n\"+`\n  \"receiverFiInformation3\": \"Cstring\",`+\"\n\"+`\n  \"receiverFiInformation4\": \"Dstring\",`+\"\n\"+`\n  \"receiverFiInformation5\": \"Estring\",`+\"\n\"+`\n  \"fiToFiInformation1\": \"Hstring\",`+\"\n\"+`\n  \"fiToFiInformation2\": \"Istring\",`+\"\n\"+`\n  \"fiToFiInformation3\": \"Jstring\",`+\"\n\"+`\n  \"fiToFiInformation4\": \"Kstring\",`+\"\n\"+`\n  \"fiToFiInformation5\": \"Lstring\",`+\"\n\"+`\n  \"fiToFiInformation6\": \"Mstring\",`+\"\n\"+`\n  \"amount\": 50000000,`+\"\n\"+`\n  \"purpose\": \"drawdown testing\",`+\"\n\"+`\n  \"clientIdentifier\": \"40708c24-7dee-49c3-b4d2-c48d876f1f5e\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTQ2MzYyNSwiaWF0IjoxNzUxNDYzNjI1LCJleHAiOjE3NTE0NjcyMjUsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJkZmYxMjQ5MzBhYzU0ZjI1YWRmMzY5OGNmNjk4NzQxZSIsImp0aSI6IkZDNjVBMjQ4NjQzNkEzNUQ3RjQyNkEyM0Q3ODQ1QUM3In0.fRpMlnR9xSOWcPRkHSuN2u8X5U6ZBpxsKPMZLKlZWmas5Gh0ClP0q_4j1ddEHzl8AhuLDzt9rkC7i8uF8cCN2af7XCZR0abiQd9ZbtuFjbMOw0y8wXQjzPTtiA2Rth1GmIJnrgH8OG-4k_FdbsU7pP8nK5NHaiUR9NrhvORh-_gfHtlk5Gc2g74ilDrZ-7mCCp96rdE34BDke0JaYiLZZFcW--ZSSr9Ue4YKM_cIQ8Hxl7zHtToZJIJY9Cf0R32QnWwwa6tyEJCmadpznf00Or2ldM0zTMNwgTbUPPAVKERPbKmVSV25GIIKhF5DnCiJBnsC26a1JmFoasSAgCqNDQ\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "q2T4KKglH5k17NKxvjkXl"
  },
  "results": {
    "languages": [
      {
        "id": "JFAdTnmhb--M6gu1WD2vL",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"00000000-0000-0000-0000-000000000000\",\n  \"accountNumber\": \"string\",\n  \"coreTransactionId\": \"00000000-0000-0000-0000-000000000000\",\n  \"referenceId\": \"string\",\n  \"clientBatchId\": \"00000000-0000-0000-0000-000000000000\",\n  \"clientBatchSequence\": 0,\n  \"fedBatchId\": \"00000000-0000-0000-0000-000000000000\",\n  \"fedBatchSequence\": 0,\n  \"direction\": \"Inbound\",\n  \"paymentType\": \"Transfer\",\n  \"source\": \"Phone\",\n  \"status\": \"Created\",\n  \"posting\": \"Pending\",\n  \"rejectionReason\": \"OfacCancelUnableToDetermine\",\n  \"blockedReason\": \"OfacMatch\",\n  \"partnerAuthorization\": \"NotRequired\",\n  \"authorizedAt\": \"2022-12-28T08:03:53.686Z\",\n  \"authorizedById\": \"string\",\n  \"authorizedByName\": \"string\",\n  \"partnerAuthorization2\": \"NotRequired\",\n  \"authorizedAt2\": \"2022-12-28T08:03:53.686Z\",\n  \"authorizedById2\": \"string\",\n  \"authorizedByName2\": \"string\",\n  \"amount\": 0,\n  \"currency\": \"string\",\n  \"purpose\": \"string\",\n  \"imad\": \"string\",\n  \"omad\": \"string\",\n  \"businessFunctionCode\": \"string\",\n  \"typeCode\": \"string\",\n  \"senderRoutingNumber\": \"string\",\n  \"senderName\": \"string\",\n  \"senderReference\": \"string\",\n  \"receiverRoutingNumber\": \"string\",\n  \"receiverName\": \"string\",\n  \"originatingFi\": {\n    \"idCode\": \"string\",\n    \"identifier\": \"string\",\n    \"name\": \"string\",\n    \"address1\": \"string\",\n    \"address2\": \"string\",\n    \"address3\": \"string\"\n  },\n  \"originator\": {\n    \"idCode\": \"string\",\n    \"identifier\": \"string\",\n    \"name\": \"string\",\n    \"address1\": \"string\",\n    \"address2\": \"string\",\n    \"address3\": \"string\"\n  },\n  \"intermediaryFi\": {\n    \"idCode\": \"string\",\n    \"identifier\": \"string\",\n    \"name\": \"string\",\n    \"address1\": \"string\",\n    \"address2\": \"string\",\n    \"address3\": \"string\"\n  },\n  \"beneficiaryFi\": {\n    \"idCode\": \"string\",\n    \"identifier\": \"string\",\n    \"name\": \"string\",\n    \"address1\": \"string\",\n    \"address2\": \"string\",\n    \"address3\": \"string\"\n  },\n  \"beneficiary\": {\n    \"idCode\": \"string\",\n    \"identifier\": \"string\",\n    \"name\": \"string\",\n    \"address1\": \"string\",\n    \"address2\": \"string\",\n    \"address3\": \"string\"\n  },\n  \"originatorToBeneficiary1\": \"string\",\n  \"originatorToBeneficiary2\": \"string\",\n  \"originatorToBeneficiary3\": \"string\",\n  \"originatorToBeneficiary4\": \"string\",\n  \"beneficiaryReference\": \"string\",\n  \"receiptDate\": \"string\",\n  \"receiptTime\": \"string\",\n  \"wasReversed\": true,\n  \"isInternational\": true,\n  \"clientIdentifier\": \"string\",\n  \"createdAt\": \"2022-12-28T08:03:53.686Z\",\n  \"releasedAt\": \"2022-12-28T08:03:53.686Z\",\n  \"processedAt\": \"2022-12-28T08:03:53.686Z\",\n  \"canceledAt\": \"2022-12-28T08:03:53.686Z\",\n  \"rejectedAt\": \"2022-12-28T08:03:53.686Z\",\n  \"blockedAt\": \"2022-12-28T08:03:53.686Z\",\n  \"effectiveDate\": \"2022-12-28T08:03:53.686Z\",\n  \"completedAt\": \"2022-12-28T08:03:53.686Z\",\n  \"postedAt\": \"2022-12-28T08:03:53.686Z\",\n  \"originalPaymentId\": \"00000000-0000-0000-0000-000000000000\",\n  \"partnerId\": \"00000000-0000-0000-0000-000000000000\",\n  \"productId\": \"00000000-0000-0000-0000-000000000000\",\n  \"lastModifiedAt\": \"2022-12-28T08:03:53.686Z\",\n  \"postingCode\": \"string\"\n}"
      }
    ],
    "selectedLanguageId": "JFAdTnmhb--M6gu1WD2vL"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "The account number being used to originate the outbound wire drawdown request .",
        "": "The account number being used to originate the outbound wire drawdown request ."
      },
      {
        "name": "originator",
        "kind": "optional",
        "type": "object",
        "description": "Originator of the payment.\n\nWhen calling the API, the originator on the outbound wire is either Cross River by default or the name of the account, depending on the configuration of your product.",
        "": "Originator of the payment.\n\nWhen calling the API, the originator on the outbound wire is either Cross River by default or the name of the account, depending on the configuration of your product.",
        "children": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Always use \"D\" for this field for the idCode object."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "Identifier for the party sending the wire. For outbound payments where originator details are submitted with the payment request, this is the customer account number. Otherwise, the system automatically populates this field."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Originator name. Maximum 140 characteres."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire."
          }
        ]
      },
      {
        "name": "receiverRoutingNumber",
        "kind": "required",
        "type": "string",
        "description": "The 9-digit Fedwire routing number of the financial institution receiving the wire drawdown request. The ABA directory provides financial institution routing numbers.",
        "children": []
      },
      {
        "name": "drawdownCreditAccountNumber",
        "kind": "required",
        "type": "string",
        "description": "The account number of the initiator (the party requesting the funds) that will receive the credit when the transfer is ultimately completed",
        "": "The account number of the initiator (the party requesting the funds) that will receive the credit when the transfer is ultimately completed"
      },
      {
        "name": "drawdownDebitAccount",
        "kind": "required",
        "type": "object",
        "description": "Details of the account from which the funds will be debited.",
        "children": [
          {
            "name": "idCode",
            "kind": "optional",
            "type": "string",
            "description": "Always use \"D\" for this field for the idCode object."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "Identifier for the account from which the funds will be withdrawn."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name on the account from which the funds will be withdrawn."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire."
          }
        ],
        "schema": [
          {
            "name": "idCode",
            "kind": "optional",
            "type": "string",
            "description": "Always use \"D\" for this field for the idCode object."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "Identifier for the account from which the funds will be withdrawn."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name on the account from which the funds will be withdrawn."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire."
          }
        ]
      },
      {
        "name": "beneficiary",
        "kind": "required",
        "type": "object",
        "description": "For a drawdown request, this is the same as the originator object.",
        "": "required",
        "children": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Always use \"D\" for this field for the idCode object."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "Identifier for the account to which the funds will be deposited. Maximum 34 characters."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Beneficiary name. Maximum 140 characteres."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire."
          }
        ],
        "schema": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Always use \"D\" for this field for the idCode object."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "Identifier for the account to which the funds will be deposited. Maximum 34 characters."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Beneficiary name. Maximum 140 characteres."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire."
          }
        ]
      },
      {
        "name": "beneficiaryReference",
        "kind": "optional",
        "type": "string",
        "description": "Optional field for additional information. 35 characters maximum.",
        "": "Optional field for additional information. 35 characters maximum."
      },
      {
        "name": "originatorToBeneficiary1",
        "kind": "optional",
        "type": "string",
        "description": "One of 4 fields, 35 characters each, to add additional information to be sent to the beneficiary.",
        "children": []
      },
      {
        "name": "originatorToBeneficiary2",
        "kind": "optional",
        "type": "string",
        "description": "One of 4 fields, 35 characters each, to add additional information to be sent to the beneficiary.",
        "children": []
      },
      {
        "name": "originatorToBeneficiary3",
        "kind": "optional",
        "type": "string",
        "description": "One of 4 fields, 35 characters each, to add additional information to be sent to the beneficiary.",
        "children": []
      },
      {
        "name": "originatorToBeneficiary4",
        "kind": "optional",
        "type": "string",
        "description": "One of 4 fields, 35 characters each, to add additional information to be sent to the beneficiary.",
        "children": []
      },
      {
        "name": "debitDrawdownAdviceCode",
        "kind": "optional",
        "type": "string",
        "description": "Additional wire information. One of:\n\n- HLD (hold)\n- LTR (letter)\n- PHN (phone)",
        "children": []
      },
      {
        "name": "debitDrawdownInformation1",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the drawdown debit account. 26 characters maximum.",
        "children": []
      },
      {
        "name": "debitDrawdownInformation2",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the drawdown debit account. 33 characters maximum.",
        "children": []
      },
      {
        "name": "debitDrawdownInformation3",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the drawdown debit account. 33 characters maximum.",
        "children": []
      },
      {
        "name": "debitDrawdownInformation4",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the drawdown debit account. 33 characters maximum.",
        "children": []
      },
      {
        "name": "debitDrawdownInformation5",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the drawdown debit account. 33 characters maximum.",
        "children": []
      },
      {
        "name": "receiverFiInformation1",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the receiver financial institution. 30 characters maximum.",
        "children": []
      },
      {
        "name": "receiverFiInformation2",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the receiver financial institution. 33 characters maximum.",
        "children": []
      },
      {
        "name": "receiverFiInformation3",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the receiver financial institution. 33 characters maximum.",
        "children": []
      },
      {
        "name": "receiverFiInformation4",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the receiver financial institution. 33 characters maximum.",
        "children": []
      },
      {
        "name": "receiverFiInformation5",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information about the receiver financial institution. 33 characters maximum.",
        "children": []
      },
      {
        "name": "fiToFiInformation1",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information to be sent from one financial institution to another. 35 characters maximum.",
        "children": []
      },
      {
        "name": "fiToFiInformation2",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information to be sent from one financial institution to another. 35 characters maximum.",
        "children": []
      },
      {
        "name": "fiToFiInformation3",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information to be sent from one financial institution to another. 35 characters maximum.",
        "children": []
      },
      {
        "name": "fiToFiInformation4",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information to be sent from one financial institution to another. 35 characters maximum.",
        "children": []
      },
      {
        "name": "fiToFiInformation5",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information to be sent from one financial institution to another. 35 characters maximum.",
        "children": []
      },
      {
        "name": "fiToFiInformation6",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information to be sent from one financial institution to another. 35 characters maximum.",
        "children": []
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "Dollar amount of wire transfer in positive integral cents. For example, write $1.00 as 100.",
        "children": []
      },
      {
        "name": "purpose",
        "kind": "required",
        "type": "string",
        "description": "Reason for the wire transfer, such as \"daily settlement.\" Also use this field if you submit multiple wires for the same amount, such as \"1 of 2, 2 of 2.\" This data is not included with the outgoing FedWire message.",
        "": "Reason for the wire transfer, such as \"daily settlement.\" Also use this field if you submit multiple wires for the same amount, such as \"1 of 2, 2 of 2.\" This data is not included with the outgoing FedWire message."
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
        "children": []
      }
    ]
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The payment ID. First appears in the initial response to the originate a payment request. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River Account number. In Cross River, depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier in GUID format for the Federal Reserve batch the payment went out on (or came in on for inbound payments)",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of payment in batch",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Inbound or outbound",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Transfer, Drawdown, DrawdownResponse, ServiceMessage, Reversal",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Method used to send payment instructions: Phone, fax, email, file, API, partner portal, Ops portal.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Payment status: Created, Pending, Hold, Batched, Processing, Completed, Rejected, Canceled, Blocked",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status: Pending, Posted, Failed, Canceled",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- OfacCancelUnableToDetermine\n- OfacConfirmed\n- OfacUnconfirmed\n- Other",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "Blocked because: OfacMatch, Other",
      "children": []
    },
    {
      "name": "partnerAuthorization",
      "kind": "optional",
      "type": "string",
      "description": "Partner authorization for out-of-band payment requests: NotRequired, Pending , Approved, Canceled",
      "children": []
    },
    {
      "name": "authorizedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the wire was authorized. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "authorizedById",
      "kind": "optional",
      "type": "string",
      "description": "Cross River user ID of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "authorizedByName",
      "kind": "optional",
      "type": "string",
      "description": "Cross River username of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "partnerAuthorization2",
      "kind": "optional",
      "type": "string",
      "description": "Second partner authorization for out-of-band payment requests: NotRequired, Pending , Approved, Canceled",
      "children": []
    },
    {
      "name": "authorizedAt2",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the wire was authorized. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "authorizedById2",
      "kind": "optional",
      "type": "string",
      "description": "Cross River user ID of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "authorizedByName2",
      "kind": "optional",
      "type": "string",
      "description": "Cross River username of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "integer",
      "description": "Dollar amount of wire transfer in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of funds transfer",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the wire transfer, such as \"daily settlement.\" Also use this field if you submit multiple wires for the same amount, such as \"1 of 2, 2 of 2.\" This data is not included with the outgoing FedWire message.",
      "children": []
    },
    {
      "name": "imad",
      "kind": "optional",
      "type": "string",
      "description": "Input Messaging Accountability Data. A combination of a date, source identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application. Unique to the payment.",
      "children": []
    },
    {
      "name": "omad",
      "kind": "optional",
      "type": "string",
      "description": "Output Messaging Accountability Data. A combination of a date, destination identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application.",
      "children": []
    },
    {
      "name": "businessFunctionCode",
      "kind": "optional",
      "type": "string",
      "description": "The business purpose of the wire transfer. The most common type is customer wire transfer (CTR) where the beneficiary isn't a bank. See the full list of codes and descriptions.",
      "children": []
    },
    {
      "name": "typeCode",
      "kind": "optional",
      "type": "string",
      "description": "The type code value provides information about the type of wire transfer sent (type code, first 2 digits) and more details about the transfer (subtype code, second 2 digits).",
      "children": []
    },
    {
      "name": "senderRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "Fedwire routing number for the sender's bank",
      "children": []
    },
    {
      "name": "senderName",
      "kind": "optional",
      "type": "string",
      "description": "Entity sending the wire",
      "children": []
    },
    {
      "name": "senderReference",
      "kind": "optional",
      "type": "string",
      "description": "Sender's assigned reference number",
      "children": []
    },
    {
      "name": "receiverRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The 9-digit Fedwire routing number of the financial institution receiving the wire drawdown request. The ABA directory provides financial institution routing numbers.",
      "children": []
    },
    {
      "name": "receiverName",
      "kind": "optional",
      "type": "string",
      "description": "Name of the FI receiving the funds",
      "children": []
    },
    {
      "name": "originatingFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of the financial institution sending the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier at the financial institution sending the wire"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originating financial institution"
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "object",
      "description": "Details of the party sending the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the party sending the wire. For outbound payments where originator details are submitted with the payment request, this is the customer account number. Otherwise, the system automatically populates this field."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Originator name. Maximum 140 characteres."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "intermediaryFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of any intermediary bank involved in the wire transaction. Not all wire transfers use an intermediary FI.",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the intermediary bank involved with the wire transaction."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Intermediary financial institution name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "beneficiaryFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of the financial institution receiving the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes.\n\nFor outbound payments, the value for the beneficiary FI is F to indicate the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the bank receiving the wire. For outbound payments, this is the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary financial institution name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "object",
      "description": "Details of the party receiving the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Identifier code for the party receiving the wire. For outbound payments, this is \"D\" to indicate a deposit account."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the party receiving the wire. For outbound payments, this is the beneficiary's account number."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "originatorToBeneficiary1",
      "kind": "optional",
      "type": "string",
      "description": "Field for additional information from the originator to the beneficiary.",
      "children": []
    },
    {
      "name": "beneficiaryReference",
      "kind": "optional",
      "type": "string",
      "description": "Optional field for additional information. 35 characters maximum.",
      "children": []
    },
    {
      "name": "receiptDate",
      "kind": "optional",
      "type": "string",
      "description": "Month and day the wire was received in the format mmdd",
      "children": []
    },
    {
      "name": "receiptTime",
      "kind": "optional",
      "type": "string",
      "description": "Time the wire was received, in the format hhmm",
      "children": []
    },
    {
      "name": "wasReversed",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the payment was reversed, otherwise false",
      "children": []
    },
    {
      "name": "isInternational",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the payment is international, otherwise false",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "releasedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was released in a distribution to the Fed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Business date on which the payment is effective",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was posted to the Cross River account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID of a previously sent wire that was reversed. Otherwise, the same as the payment ID.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, the Cross River account involved in the payment.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Includes OK (posted), RES (account restricted), NSF (insufficient funds in the account sending the wire)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-wiresv1paymentscorporate-drawdown-request",
  "legacyHash": "Rh6PQ9xYPqNRA4aBWpTxc"
}
```
:::

### *Validation Rules*

- **Beneficiary FI and Intermediary FI Not Allowed**
  - If either field is populated, the request will be rejected.
  - **Error Message:** `{EntityName} not available with ISO format.`

#


[title] Monitor limit utilization
[path] Payments/Instant payments/

## Instant Payment limits

Cross River sets a **daily send limit** for Instant Payments per partner to ensure smooth operations and prevent disruptions. Tracking utilization helps manage limits and prevent payment disruptions. We provide a webhooks to monitor usage and be aware when you are approaching your daily send limit.

Use the `RTP.Limits.Utilization.Changed` webhook to track your usage and remaining limit.

- The webhook notifies you of:
  - **utilizationPercent** – The percentage of your limit that has been used.
  - **previousUtilizationPercent** – The percentage of your limit used before the most recent webhook event.
  - The webhook triggers when utilization reaches 5% and fires at every 5% increment (10%, 15%, 20%, etc.).

Regularly monitoring limit utilization helps prevent disruptions to your Instant Payment services.

:::CodeblockTabs
&#x20; RTP.Limits.Utilization.Change

```json
"eventName": "Rtp.Limits.Utilization.Changed",
"metaFields":
[
    "productId",
    "utilizationPercent",
    "previousUtilizationPercent"
]
```
:::

**Webhook Notifications**

- [Register](docId\:BN5XtgkJogBe-CtwomCbS) for the `RTP.Limits.Utilization.Changed` webhook.


[title] Limits utilization by limit date
[path] Payments/ACH/APIs/

## API reference

Returns the percentage of your ACH payment limit used according to limit date.

:::ApiMethodV2
```json
{
  "name": "Endpoint: ach/v1/limits-utilization/{productId}/{limitDate}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/ach/v1/limits-utilization/{productId}/{limitDate}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "eu7zyTdFsC0yQ9chnsH7r",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb/2025-07-10' \\\n--header 'Authorization: Bearer <token>'",
        "customLabel": ""
      },
      {
        "id": "OQVBPfWx0RIQu4mACPFIc",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb/2025-07-10',\n  'headers': {\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "MpjiF1EdiWS_c_OLJaOqk",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"GET\", \"/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb/2025-07-10\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "L3RNCBaMDlMJcddx4Ucl3",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb/2025-07-10\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Authorization\"] = \"Bearer <token>\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "FF1GP-nFBFW1M534T40BQ",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb/2025-07-10\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "eu7zyTdFsC0yQ9chnsH7r"
  },
  "results": {
    "languages": [
      {
        "id": "Kv_dhgC5D91C1_TZnk7YQ",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"productId\": \"a68a0fa5-98fe-4cd5-b626-af5b0137e0cb\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"limitDate\": \"2025-07-10T00:00:00-04:00\",\n    \"pullPercent\": 0,\n    \"pushPercent\": 0,\n    \"totalCountPercent\": 0\n}"
      }
    ],
    "selectedLanguageId": "Kv_dhgC5D91C1_TZnk7YQ"
  },
  "request": {
    "pathParameters": [
      {
        "name": "productId",
        "kind": "required",
        "type": "string",
        "description": "ID in GUID format of the product used to initiate ACH payments",
        "": "ID in GUID format of the product used to initiate ACH payments"
      },
      {
        "name": "limitDate ",
        "kind": "required",
        "type": "string",
        "description": "Date the limit is set for. This attribute is data type DateTime. Use the format YYYY-MM-DD.",
        "": "Date the limit is set for. This attribute is data type DateTime. Use the format YYYY-MM-DD."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the product used to initiate ACH payments"
    },
    {
      "name": "partnerId ",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "limitDate ",
      "kind": "optional",
      "type": "string",
      "description": "Date the limit is set for. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "pullPercent",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the daily limit already used for incoming (credit) payments",
      "children": []
    },
    {
      "name": "pushPercent",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the daily limit already used for outgoing (debit) payments",
      "children": []
    },
    {
      "name": "totalCountPercent",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the total count of transactions",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-achv1limits-utilizationproductidlimitdate",
  "legacyHash": "36ViEgJZyn8Osw4Z_YPdO"
}
```
:::

****

[title] Book transfer
[path] Payments/

:::CtaButton{label="Book transfer concepts" docId="99m0-kn7KT4CQoTQrONZy" openInNewTab="true"}

:::

## &#x20;Cross River book transfer

Transfer funds between Cross River accounts created with your products.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

## API calls

| Action                                         | API Call                     | Description                                                                                                         |
| ---------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| [Transfers](docId\:MgJSLAYpYs5LGkXIs0J3k)      | `POST /core/v1/transfers`    | Transfer funds is used to effect a book transfer within Cross River system.                                         |
| [Transactions](docId\:n4nww9wNTwf93qt_vdLvh)   | `POST /core/v1/transactions` | This is an extended version of the transfer endpoint. It allows you to provide a description and transaction code.  |

## Related topics

- [Webhook events: Book transfer](docId:22cGpVRdjKtGy2FmOKpHg)&#x20;
- [Request and response codes: Book transfer](docId\:XAmMcj1nto5YT-0-Vtpw-)&#x20;




[title] Sync Payment
[path] Payments/Card payments/Sync Payments APIs/

## API reference

Send a push or pull sync payment

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/syncpayments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/syncpayments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "m2Ue7Qz6dVWcDZ36gKpPo",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/v1/syncpayments' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--data '{\n    \"cardId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"cardToken\": \"11FB445C487140A9BEA51457A796172A000000\",\n    \"accountNumber\": \"98752973255888149\",\n    \"amount\": 99999999999999,\n    \"paymentType\": \"Push\",\n    \"correspondingEntity\": {\n        \"firstName\": \"John\",\n        \"lastName\": \"Johnsom\",\n        \"externalAccountIdentifier\": \"njkKPji4hDx16ZvUqEB\",\n        \"address\": {\n            \"street1\": \"S?treet1\",\n            \"street2\": \"Street2\",\n            \"city\": \"New York\",\n            \"state\": \"NY\",\n            \"postalCode\": \"10128\",\n            \"countryCode\": \"US\"\n        }\n    },\n    \"mcc\": \"1234\",\n    \"cvv\": \"0917\",\n    \"clientIdentifier\": \"dkdkdkddkdkdkkd\",\n    \"businessType\": \"BB\",\n    \"purposeOfPayment\": \"ISACCT\",\n    \"paymentId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n}'",
        "customLabel": ""
      },
      {
        "id": "VeeGmwkA_clEzxjzmMBUK",
        "language": "nodejs",
        "code": "curl --location 'https://sandbox.crbcos.com/v1/syncpayments' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--data '{\n    \"cardId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"cardToken\": \"11FB445C487140A9BEA51457A796172A000000\",\n    \"accountNumber\": \"98752973255888149\",\n    \"amount\": 99999999999999,\n    \"paymentType\": \"Push\",\n    \"correspondingEntity\": {\n        \"firstName\": \"John\",\n        \"lastName\": \"Johnsom\",\n        \"externalAccountIdentifier\": \"njkKPji4hDx16ZvUqEB\",\n        \"address\": {\n            \"street1\": \"S?treet1\",\n            \"street2\": \"Street2\",\n            \"city\": \"New York\",\n            \"state\": \"NY\",\n            \"postalCode\": \"10128\",\n            \"countryCode\": \"US\"\n        }\n    },\n    \"mcc\": \"1234\",\n    \"cvv\": \"0917\",\n    \"clientIdentifier\": \"dkdkdkddkdkdkkd\",\n    \"businessType\": \"BB\",\n    \"purposeOfPayment\": \"ISACCT\",\n    \"paymentId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n}'",
        "customLabel": ""
      },
      {
        "id": "BP-IjxQK-9xJ_YCWNyGNx",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/v1/syncpayments\"\n\npayload = json.dumps({\n  \"cardId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  \"cardToken\": \"11FB445C487140A9BEA51457A796172A000000\",\n  \"accountNumber\": \"98752973255888149\",\n  \"amount\": 99999999999999,\n  \"paymentType\": \"Push\",\n  \"correspondingEntity\": {\n    \"firstName\": \"John\",\n    \"lastName\": \"Johnsom\",\n    \"externalAccountIdentifier\": \"njkKPji4hDx16ZvUqEB\",\n    \"address\": {\n      \"street1\": \"S?treet1\",\n      \"street2\": \"Street2\",\n      \"city\": \"New York\",\n      \"state\": \"NY\",\n      \"postalCode\": \"10128\",\n      \"countryCode\": \"US\"\n    }\n  },\n  \"mcc\": \"1234\",\n  \"cvv\": \"0917\",\n  \"clientIdentifier\": \"dkdkdkddkdkdkkd\",\n  \"businessType\": \"BB\",\n  \"purposeOfPayment\": \"ISACCT\",\n  \"paymentId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "xu3xbbWT_a-_Y7mcgL0S3",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/v1/syncpayments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Accept\"] = \"application/json\"\nrequest.body = JSON.dump({\n  \"cardId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  \"cardToken\": \"11FB445C487140A9BEA51457A796172A000000\",\n  \"accountNumber\": \"98752973255888149\",\n  \"amount\": 99999999999999,\n  \"paymentType\": \"Push\",\n  \"correspondingEntity\": {\n    \"firstName\": \"John\",\n    \"lastName\": \"Johnsom\",\n    \"externalAccountIdentifier\": \"njkKPji4hDx16ZvUqEB\",\n    \"address\": {\n      \"street1\": \"S?treet1\",\n      \"street2\": \"Street2\",\n      \"city\": \"New York\",\n      \"state\": \"NY\",\n      \"postalCode\": \"10128\",\n      \"countryCode\": \"US\"\n    }\n  },\n  \"mcc\": \"1234\",\n  \"cvv\": \"0917\",\n  \"clientIdentifier\": \"dkdkdkddkdkdkkd\",\n  \"businessType\": \"BB\",\n  \"purposeOfPayment\": \"ISACCT\",\n  \"paymentId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "yes-XNvEAr36pmLaxLh_p",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/v1/syncpayments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"cardId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",`+\"\n\"+`\n    \"cardToken\": \"11FB445C487140A9BEA51457A796172A000000\",`+\"\n\"+`\n    \"accountNumber\": \"98752973255888149\",`+\"\n\"+`\n    \"amount\": 99999999999999,`+\"\n\"+`\n    \"paymentType\": \"Push\",`+\"\n\"+`\n    \"correspondingEntity\": {`+\"\n\"+`\n        \"firstName\": \"John\",`+\"\n\"+`\n        \"lastName\": \"Johnsom\",`+\"\n\"+`\n        \"externalAccountIdentifier\": \"njkKPji4hDx16ZvUqEB\",`+\"\n\"+`\n        \"address\": {`+\"\n\"+`\n            \"street1\": \"S?treet1\",`+\"\n\"+`\n            \"street2\": \"Street2\",`+\"\n\"+`\n            \"city\": \"New York\",`+\"\n\"+`\n            \"state\": \"NY\",`+\"\n\"+`\n            \"postalCode\": \"10128\",`+\"\n\"+`\n            \"countryCode\": \"US\"`+\"\n\"+`\n        }`+\"\n\"+`\n    },`+\"\n\"+`\n    \"mcc\": \"1234\",`+\"\n\"+`\n    \"cvv\": \"0917\",`+\"\n\"+`\n    \"clientIdentifier\": \"dkdkdkddkdkdkkd\",`+\"\n\"+`\n    \"businessType\": \"BB\",`+\"\n\"+`\n    \"purposeOfPayment\": \"ISACCT\",`+\"\n\"+`\n    \"paymentId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"application/json\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "m2Ue7Qz6dVWcDZ36gKpPo"
  },
  "results": {
    "languages": [
      {
        "id": "qaLRHBp_njcq9NhtL7R3X",
        "language": "200",
        "code": "{\n    \"id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"originalPaymentId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"clientIdentifier\": \"dkdkdkddkdkdkkd\",\n    \"amount\": 0,\n    \"paymentType\": \"Push\",\n    \"status\": \"Created\",\n    \"source\": \"Api\",\n    \"productId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"partnerId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"cardId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"cardToken\": \"11FB445C487140A9BEA51457A796172A000000\",\n    \"network\": \"string\",\n    \"rail\": \"string\",\n    \"cardBrand\": \"AmericanExpress\",\n    \"panLastFour\": \"string\",\n    \"issuerCountryCode\": \"string\",\n    \"retrievalReferenceId\": \"string\",\n    \"reasonCode\": \"string\",\n    \"reasonDescription\": \"string\",\n    \"traceNumber\": \"string\",\n    \"correspondingEntity\": {\n        \"firstName\": \"string\",\n        \"lastName\": \"string\",\n        \"externalAccountIdentifier\": \"6h9tKToLnBJYJotBs83\",\n        \"address\": {\n            \"street1\": \"string\",\n            \"street2\": \"string\",\n            \"city\": \"string\",\n            \"state\": \"st\",\n            \"postalCode\": \"string\",\n            \"countryCode\": \"string\"\n        }\n    },\n    \"mcc\": \"string\",\n    \"merchantVerificationValue\": \"string\",\n    \"accountNumber\": \"string\",\n    \"businessType\": \"BB\",\n    \"purposeOfPayment\": \"ISACCT\",\n    \"coreTransactionId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"memoPostId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"memoPostRemovedAt\": \"2026-06-07T07:04:31.973Z\",\n    \"wasRefunded\": true,\n    \"refundPaymentId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"createdAt\": \"2026-06-07T07:04:31.973Z\",\n    \"authorizedOn\": \"2026-06-07T07:04:31.973Z\",\n    \"submittedOn\": \"2026-06-07T07:04:31.973Z\",\n    \"rejectedAt\": \"2026-06-07T07:04:31.973Z\",\n    \"completedAt\": \"2026-06-07T07:04:31.973Z\",\n    \"failedAt\": \"2026-06-07T07:04:31.973Z\",\n    \"limitsEligibleOn\": \"2026-06-07T07:04:31.973Z\",\n    \"lastModifiedAt\": \"2026-06-07T07:04:31.973Z\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "qaLRHBp_njcq9NhtL7R3X"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "paymentId",
        "kind": "optional",
        "type": "string",
        "description": "",
        "": "paymentId"
      },
      {
        "name": "cardId",
        "kind": "optional",
        "type": "string",
        "description": " A UUID that identifies the card used",
        "": " A UUID that identifies the card used"
      },
      {
        "name": "cardToken",
        "kind": "optional",
        "type": "string",
        "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters)",
        "": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters)"
      },
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "The account number associated with the payment",
        "": "The account number associated with the payment"
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "Integer",
        "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
        "children": []
      },
      {
        "name": "paymentType",
        "kind": "required",
        "type": "string",
        "description": "The type of payment. Value is either \"Push\" or \"Pull\"",
        "": "required"
      },
      {
        "name": "correspondingEntity",
        "kind": "optional",
        "type": "object",
        "description": "",
        "": "optional",
        "children": [
          {
            "name": "firstName",
            "kind": "required",
            "type": "string",
            "description": "First name. Min 1 character, max 35 characters"
          },
          {
            "name": "lastName",
            "kind": "required",
            "type": "string",
            "description": "Last name. Min 1 character, max 35 characters"
          },
          {
            "name": "externalAccountIdentifier",
            "kind": "required",
            "type": "string",
            "description": "Account number to ensure the money movement is routed to the correct destination."
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "object",
            "description": "Address of card holder",
            "children": [
              {
                "name": "street1",
                "kind": "required",
                "type": "string",
                "description": "Street address line 1. Max length 60"
              },
              {
                "name": "street2",
                "kind": "optional",
                "type": "string",
                "description": "Street address line 2. Max length 60"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Name of the city. Max length 60"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "State code. 2 characters"
              },
              {
                "name": "postalCode",
                "kind": "required",
                "type": "string",
                "description": "Max 10 characters"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": " 2-letter ISO country code"
              }
            ]
          }
        ],
        "schema": [
          {
            "name": "firstName",
            "kind": "required",
            "type": "string",
            "description": "First name. Min 1 character, max 35 characters"
          },
          {
            "name": "lastName",
            "kind": "required",
            "type": "string",
            "description": "Last name. Min 1 character, max 35 characters"
          },
          {
            "name": "externalAccountIdentifier",
            "kind": "required",
            "type": "string",
            "description": "Account number to ensure the money movement is routed to the correct destination."
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "object",
            "description": "Address of card holder",
            "children": [
              {
                "name": "street1",
                "kind": "required",
                "type": "string",
                "description": "Street address line 1. Max length 60"
              },
              {
                "name": "street2",
                "kind": "optional",
                "type": "string",
                "description": "Street address line 2. Max length 60"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Name of the city. Max length 60"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "State code. 2 characters"
              },
              {
                "name": "postalCode",
                "kind": "required",
                "type": "string",
                "description": "Max 10 characters"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": " 2-letter ISO country code"
              }
            ]
          }
        ]
      },
      {
        "name": "mcc",
        "kind": "optional",
        "type": "string",
        "description": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card.",
        "": "mcc"
      },
      {
        "name": "initiatorName",
        "kind": "optional",
        "type": "string",
        "description": "Per-payment merchant/sender name override for the cardholder's bank statement. Max 17 chars",
        "": "Per-payment merchant/sender name override for the cardholder's bank statement. Max 17 chars"
      },
      {
        "name": "cvv",
        "kind": "optional",
        "type": "string",
        "description": "Card Verification Value, a 3 or 4 digit security code printed on your debit card ",
        "": "Card Verification Value, a 3 or 4 digit security code printed on your debit card "
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "A string that identifies the client associated with the payment. Max 50 characters",
        "": "A string that identifies the client associated with the payment. Max 50 characters"
      },
      {
        "name": "businessType",
        "kind": "optional",
        "type": "string",
        "description": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'",
        "": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'"
      },
      {
        "name": "purposeOfPayment",
        "kind": "optional",
        "type": "string",
        "description": "The reason for the transaction. e.g. payroll. Needed for international. ",
        "": "The reason for the transaction. e.g. payroll. Needed for international. "
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID of the payment you want to retrieve",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that is the primary identifier for the payment.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": " A string that identifies the client associated with the payment.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "string",
      "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the direction of the payment:\nPush -  Money sent out (e.g. disbursement to a customer)\nPull -  Money received (e.g. a charge to a customer's card)",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "How the payment was initiated e.g. API ",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "One of  \"Created\",\n                        \"Pending\",\n                        \"Authorized\",\n                        \"Submitted\",\n                        \"Processing\",\n                        \"Completed\",\n                        \"Rejected\",\n                        \"Failed\"",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the product, as defined in COS.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the partner, as defined in COS.",
      "children": []
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the card used.",
      "children": []
    },
    {
      "name": "cardToken",
      "kind": "optional",
      "type": "string",
      "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters)",
      "children": []
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "string",
      "description": "The network through which the payment is processed (e.g. Visa, Mastercard).",
      "children": []
    },
    {
      "name": "cardBrand",
      "kind": "optional",
      "type": "string",
      "description": "One of  \"AmericanExpress\",\n                        \"ChinaUnionPay\",\n                        \"Dankort\",\n                        \"DinersClub\",\n                        \"Discover\",\n                        \"Hipercard\",\n                        \"JCB\",\n                        \"Laser\",\n                        \"Maestro\",\n                        \"MasterCard\",\n                        \"RuPay\",\n                        \"Solo\",\n                        \"Switch\",\n                        \"Visa\",\n                        \"Unknown\"",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "The last four digits of the Primary Account Number (card number).",
      "children": []
    },
    {
      "name": "issuerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "A string representing the country code of the card issuer.",
      "children": []
    },
    {
      "name": "retrievalReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier used for retrieving transaction details, often used in disputes or reconciliation.",
      "children": []
    },
    {
      "name": "reasonCode",
      "kind": "optional",
      "type": "string",
      "description": "A 2-digit code signifying the transaction result (approved or decline). For example, 00 means successful.",
      "children": []
    },
    {
      "name": "reasonDescription",
      "kind": "optional",
      "type": "string",
      "description": "A string describing the transaction result. For example, Approved.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "A unique number assigned to a transaction from the time it leaves the merchant bank until it arrives at the cardholder bank",
      "children": []
    },
    {
      "name": "correspondingEntity",
      "kind": "optional",
      "type": "object",
      "description": "References information about who initiated the transaction, linking to an OriginatorInfo object.",
      "children": [
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "externalAccountIdentifier",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "object",
          "description": "",
          "children": [
            {
              "name": "street1",
              "kind": "optional",
              "type": "string",
              "description": "street1"
            },
            {
              "name": "street2",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": ""
            }
          ]
        }
      ]
    },
    {
      "name": "mcc",
      "kind": "optional",
      "type": "string",
      "description": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card.",
      "children": []
    },
    {
      "name": "initiatorName",
      "kind": "optional",
      "type": "string",
      "description": "Per-payment merchant/sender name override for the cardholder's bank statement. Max 17 chars",
      "children": []
    },
    {
      "name": "merchantVerificationValue",
      "kind": "optional",
      "type": "string",
      "description": "A value used to verify the merchant's identity.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number associated with the payment.",
      "children": []
    },
    {
      "name": "businessType",
      "kind": "optional",
      "type": "string",
      "description": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that links the payment to the core banking system.",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the corresponding memo post (a temporary transaction posting).",
      "children": []
    },
    {
      "name": "memoPostRemovedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the memo post was removed. I.e. When the temporary hold was released.",
      "children": []
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "boolean",
      "description": "Boolean value indicating whether the payment has been refunded.",
      "children": []
    },
    {
      "name": "refundPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the refund transaction associated with the payment.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was created",
      "children": []
    },
    {
      "name": "authorizedOn",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was authorized by the issuing bank.",
      "children": []
    },
    {
      "name": "submittedOn",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was submitted to the network.",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was rejected.",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was successfully completed.",
      "children": []
    },
    {
      "name": "failedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment failed to process.",
      "children": []
    },
    {
      "name": "limitsEligibleOn",
      "kind": "optional",
      "type": "string",
      "description": "When the transaction becomes eligible for limit calculations.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment record was last modified.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1syncpayments",
  "legacyHash": "AhHh_9ZYMt-U1G3BS7Rdj"
}
```
:::


[title] International payments
[path] Payments/

:::CtaButton{label="International payments concepts" docId="3EvRgfMqC_15mbLV_j3cp" openInNewTab="true"}

:::

## International payments APIs

The Cross River International Payments APIs enable cross border money movement for International Payments.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId\:IPfs2Poaow-MlHLbo0Yc3) to control presentation of your results.

## API calls

| Action                                                  | API Call                                        | Description                                                                                                   |
| ------------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| [Exchange rate estimate](docId:13BVdESRAI7mGFGTl8FjF)   | `GET /International/v1/estimates`               | Returns the estimated cost of sending an international payment, including the exchange rate                   |
| [Required fields list](docId\:tFujxIwREvywNETqogCv-)    | `GET /International/v1/meta/quote-requirements` | Returns country-specific fields you need to submit when requesting a quote                                    |
| [Request payment quote](docId\:OnbkGeBIHVb4ihvB1haKL)   | `POST /International/v1/quotes`                 | Requests an executable payment quote for sending either USD or foreign currency before actually sending funds |
| [Send payment](docId\:eVBwhQlRGZlamLd2hRwVd)            | `POST /International/v1/payments`               | Executes a payment quote to send funds internationally                                                        |
| [Cancel payment](docId\:SwyRh0F0e40q1DOFZmuNr)          | `POST /International/v1/payments/{id}/cancel}`  | Cancel a remittance payment<br />                                                                             |

## Related topics

- [Webhook events: International payments](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;
- [Error codes: International payments](docId\:fSileGUuETELL525B5Xtu)&#x20;

## Tutorials

See our API tutorial to learn how to prepare and send:

- [International payments](docId:0mIEXzUcyTurPvZq13y1Z)&#x20;


[title] Payments
[path] Payments/Card payments/Payments APIs/

## API reference

Retrieve multiple payment details by payment filtered by various parameters

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/payments",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "5MLOXLPBPeXUktSCT2Ta_",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardpayments//v1/payments' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer Token'"
      },
      {
        "id": "WeoCP3fIgCEZY3ivis9H-",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardpayments//v1/payments',\n  'headers': {\n    'Accept': 'application/json',\n    'Authorization': 'Bearer Token'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();"
      },
      {
        "id": "BP-IjxQK-9xJ_YCWNyGNx",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Accept': 'application/json',\n  'Authorization': 'Bearer Token'\n}\nconn.request(\"GET\", \"/cardpayments//v1/payments\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "lSVsEkAmekolix20f9NvH",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardpayments//v1/payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer Token\"\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "0wBle41sQOrPfl57gufY7",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardpayments//v1/payments\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer Token\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "5MLOXLPBPeXUktSCT2Ta_"
  },
  "results": {
    "languages": [
      {
        "id": "qaLRHBp_njcq9NhtL7R3X",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"aed71b6c-84ab-4556-bba1-b419007f0a06\",\n            \"clientIdentifier\": \"20240815-4\",\n            \"amount\": 200,\n            \"paymentType\": \"Push\",\n            \"status\": \"Completed\",\n            \"source\": \"OpsPortal\",\n            \"productId\": \"a4169307-3f97-4db9-9747-b14d00a4c08e\",\n            \"partnerId\": \"f3d41d07-183e-4c73-90cd-b14d00a4089a\",\n            \"cardId\": \"5583ec45-8870-4570-a2a7-b3ef0164e605\",\n            \"cardToken\": \"DBB451DC5A624A32A27694C4732CCFFA000000\",\n            \"network\": \"Visa\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"9904\",\n            \"issuerCountryCode\": \"US\",\n            \"retrievalReferenceId\": \"608507788796\",\n            \"reasonCode\": \"00\",\n            \"reasonDescription\": \"Approved\",\n            \"traceNumber\": \"788796\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Corresponding\",\n                \"lastName\": \"Entity\",\n                \"externalAccountIdentifier\": \"123456***0000\",\n                \"address\": {\n                    \"street1\": \"2 Main st.\",\n                    \"city\": \"Fort Lee\",\n                    \"state\": \"NJ\",\n                    \"postalCode\": \"12345\",\n                    \"countryCode\": \"US\"\n                }\n            },\n            \"mcc\": \"1324\",\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2661828414\",\n            \"businessType\": \"BB\",\n            \"coreTransactionId\": \"f85f3ebe-d951-448c-a357-b4190082684d\",\n            \"memoPostId\": \"aed71b6c-84ab-4556-bba1-b419007f0a06\",\n            \"memoPostRemovedAt\": \"2026-03-26T03:54:53.967-04:00\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-03-26T03:42:32.127-04:00\",\n            \"authorizedOn\": \"2026-03-26T03:54:31.85-04:00\",\n            \"submittedOn\": \"2026-03-26T03:54:47.53-04:00\",\n            \"completedAt\": \"2026-03-26T03:54:49.59-04:00\",\n            \"limitsEligibleOn\": \"2026-03-26T03:42:32.127-04:00\",\n            \"lastModifiedAt\": \"2026-03-26T03:54:54.0817536-04:00\"\n        },\n        {\n            \"id\": \"237e2216-3872-47ad-919c-b41c007e7dd5\",\n            \"clientIdentifier\": \"20240815-4\",\n            \"amount\": 200,\n            \"paymentType\": \"Push\",\n            \"status\": \"Failed\",\n            \"source\": \"OpsPortal\",\n            \"productId\": \"a4169307-3f97-4db9-9747-b14d00a4c08e\",\n            \"partnerId\": \"f3d41d07-183e-4c73-90cd-b14d00a4089a\",\n            \"cardId\": \"5583ec45-8870-4570-a2a7-b3ef0164e605\",\n            \"cardToken\": \"DBB451DC5A624A32A27694C4732CCFFA000000\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"9904\",\n            \"issuerCountryCode\": \"US\",\n            \"reasonCode\": \"9999\",\n            \"reasonDescription\": \"Gateway request timed out\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Corresponding\",\n                \"lastName\": \"Entity\",\n                \"externalAccountIdentifier\": \"123456***0000\",\n                \"address\": {\n                    \"street1\": \"2 Main st.\",\n                    \"city\": \"Fort Lee\",\n                    \"state\": \"NJ\",\n                    \"postalCode\": \"12345\",\n                    \"countryCode\": \"US\"\n                }\n            },\n            \"mcc\": \"1324\",\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2661828414\",\n            \"businessType\": \"BB\",\n            \"memoPostId\": \"237e2216-3872-47ad-919c-b41c007e7dd5\",\n            \"memoPostRemovedAt\": \"2026-03-29T04:01:56.673-04:00\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-03-29T03:40:32.497-04:00\",\n            \"authorizedOn\": \"2026-03-29T04:01:51.96-04:00\",\n            \"submittedOn\": \"2026-03-29T04:01:55.44-04:00\",\n            \"failedAt\": \"2026-03-29T04:01:55.527-04:00\",\n            \"lastModifiedAt\": \"2026-03-29T04:01:57.6155383-04:00\"\n        },\n        {\n            \"id\": \"2c0090c2-60aa-4585-9efc-b41c0085866e\",\n            \"clientIdentifier\": \"20240815-4\",\n            \"amount\": 200,\n            \"paymentType\": \"Push\",\n            \"status\": \"Failed\",\n            \"source\": \"OpsPortal\",\n            \"productId\": \"a4169307-3f97-4db9-9747-b14d00a4c08e\",\n            \"partnerId\": \"f3d41d07-183e-4c73-90cd-b14d00a4089a\",\n            \"cardId\": \"5583ec45-8870-4570-a2a7-b3ef0164e605\",\n            \"cardToken\": \"DBB451DC5A624A32A27694C4732CCFFA000000\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"9904\",\n            \"issuerCountryCode\": \"US\",\n            \"reasonCode\": \"05\",\n            \"reasonDescription\": \"Error\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Corresponding\",\n                \"lastName\": \"Entity\",\n                \"externalAccountIdentifier\": \"123456***0000\",\n                \"address\": {\n                    \"street1\": \"2 Main st.\",\n                    \"city\": \"Fort Lee\",\n                    \"state\": \"NJ\",\n                    \"postalCode\": \"12345\",\n                    \"countryCode\": \"US\"\n                }\n            },\n            \"mcc\": \"1324\",\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2661828414\",\n            \"businessType\": \"BB\",\n            \"coreTransactionId\": \"f4854aa2-05a0-40c1-b2fc-b41c0089f7fc\",\n            \"memoPostId\": \"2c0090c2-60aa-4585-9efc-b41c0085866e\",\n            \"memoPostRemovedAt\": \"2026-03-29T04:33:15.08-04:00\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-03-29T04:06:09.007-04:00\",\n            \"authorizedOn\": \"2026-03-29T04:22:06.24-04:00\",\n            \"submittedOn\": \"2026-03-29T04:31:04.27-04:00\",\n            \"completedAt\": \"2026-03-29T04:22:19.947-04:00\",\n            \"failedAt\": \"2026-03-29T04:31:04.273-04:00\",\n            \"lastModifiedAt\": \"2026-03-29T04:33:17.4110852-04:00\"\n        },\n        {\n            \"id\": \"c11179d6-eb35-4baa-8e40-b424015ffaee\",\n            \"amount\": 10000,\n            \"paymentType\": \"Push\",\n            \"status\": \"Hold\",\n            \"source\": \"OpsPortal\",\n            \"productId\": \"a2eac905-3f73-4cad-aebd-b06e00d945b7\",\n            \"partnerId\": \"f176a518-381f-487b-9507-b06e00d8cd18\",\n            \"cardId\": \"e34f6f70-454c-40e8-8b13-b424015e24fa\",\n            \"cardToken\": \"21BF6577F1D042A7AD01D1193C8627B7000000\",\n            \"cardBrand\": \"MasterCard\",\n            \"panLastFour\": \"9905\",\n            \"issuerCountryCode\": \"US\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Edwin\",\n                \"lastName\": \"Melendez\",\n                \"externalAccountIdentifier\": \"400758***9953\",\n                \"address\": {\n                    \"street1\": \"123 Tester Ln\",\n                    \"city\": \"Tampa\",\n                    \"state\": \"FL\",\n                    \"postalCode\": \"33635\",\n                    \"countryCode\": \"US\"\n                }\n            },\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2532733231\",\n            \"businessType\": \"AA\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-04-06T17:21:31.24-04:00\",\n            \"limitsEligibleOn\": \"2026-04-06T17:21:31.24-04:00\",\n            \"lastModifiedAt\": \"2026-04-06T17:23:46.1452536-04:00\"\n        },\n        {\n            \"id\": \"b407e757-7811-45d4-ad97-b42500583679\",\n            \"clientIdentifier\": \"9a8b6f79-16bc-522e-a0a0-a57af848e5ad\",\n            \"amount\": 100,\n            \"paymentType\": \"Pull\",\n            \"status\": \"Failed\",\n            \"source\": \"Api\",\n            \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n            \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n            \"cardId\": \"febe40ae-cbe7-4428-9aab-b41b004159eb\",\n            \"cardToken\": \"7D30206F4D3848D387564F4FFDC3D151000000\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"1111\",\n            \"issuerCountryCode\": \"US\",\n            \"reasonCode\": \"9999\",\n            \"reasonDescription\": \"Gateway request timed out\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Randy\",\n                \"lastName\": \"Marsh\",\n                \"externalAccountIdentifier\": \"411111***1111\",\n                \"address\": {\n                    \"street1\": \"260 Avenue De Los Mexicanos\",\n                    \"city\": \"South Park\",\n                    \"state\": \"CO\",\n                    \"postalCode\": \"81241\",\n                    \"countryCode\": \"US\"\n                }\n            },\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2287979807\",\n            \"businessType\": \"AA\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-04-07T01:21:10.377-04:00\",\n            \"authorizedOn\": \"2026-04-07T01:21:15.6-04:00\",\n            \"submittedOn\": \"2026-04-07T01:21:19.133-04:00\",\n            \"failedAt\": \"2026-04-07T01:21:19.133-04:00\",\n            \"lastModifiedAt\": \"2026-04-07T01:21:25.524934-04:00\"\n        },\n        {\n            \"id\": \"818e26cc-a5fe-4299-be9f-b42501142de4\",\n            \"clientIdentifier\": \"90d0038c-8659-5a9a-bddb-e35b786dbe5d\",\n            \"amount\": 100,\n            \"paymentType\": \"Pull\",\n            \"status\": \"Failed\",\n            \"source\": \"Api\",\n            \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n            \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n            \"cardId\": \"febe40ae-cbe7-4428-9aab-b41b004159eb\",\n            \"cardToken\": \"7D30206F4D3848D387564F4FFDC3D151000000\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"1111\",\n            \"issuerCountryCode\": \"US\",\n            \"reasonCode\": \"9999\",\n            \"reasonDescription\": \"CVV not found\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Randy\",\n                \"lastName\": \"Marsh\",\n                \"externalAccountIdentifier\": \"411111***1111\",\n                \"address\": {\n                    \"street1\": \"260 Avenue De Los Mexicanos\",\n                    \"city\": \"South Park\",\n                    \"state\": \"CO\",\n                    \"postalCode\": \"81241\",\n                    \"countryCode\": \"US\"\n                }\n            },\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2287979807\",\n            \"businessType\": \"AA\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-04-07T12:45:32.273-04:00\",\n            \"authorizedOn\": \"2026-04-07T12:52:25.813-04:00\",\n            \"submittedOn\": \"2026-04-07T12:54:47.323-04:00\",\n            \"failedAt\": \"2026-04-07T12:54:47.333-04:00\",\n            \"lastModifiedAt\": \"2026-04-07T12:54:53.0371308-04:00\"\n        },\n        {\n            \"id\": \"2d31bab7-1c87-46d8-a581-b42501329f57\",\n            \"clientIdentifier\": \"395673a4-d91d-5f82-993d-9e1a9e5ef2a3\",\n            \"amount\": 100,\n            \"paymentType\": \"Pull\",\n            \"status\": \"Failed\",\n            \"source\": \"Api\",\n            \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n            \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n            \"cardId\": \"febe40ae-cbe7-4428-9aab-b41b004159eb\",\n            \"cardToken\": \"7D30206F4D3848D387564F4FFDC3D151000000\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"1111\",\n            \"issuerCountryCode\": \"US\",\n            \"reasonCode\": \"9999\",\n            \"reasonDescription\": \"CVV not found\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Randy\",\n                \"lastName\": \"Marsh\",\n                \"externalAccountIdentifier\": \"411111***1111\"\n            },\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2287979807\",\n            \"businessType\": \"AA\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-04-07T14:36:22.687-04:00\",\n            \"authorizedOn\": \"2026-04-07T14:40:49.503-04:00\",\n            \"submittedOn\": \"2026-04-07T14:40:57.753-04:00\",\n            \"failedAt\": \"2026-04-07T14:40:57.753-04:00\",\n            \"lastModifiedAt\": \"2026-04-07T14:41:03.0925585-04:00\"\n        },\n        {\n            \"id\": \"a80bbd5b-503d-440b-9bd8-b4250132b239\",\n            \"clientIdentifier\": \"395673a4-d91d-5f82-993d-9e1a9e5ef2a3\",\n            \"amount\": 100,\n            \"paymentType\": \"Pull\",\n            \"status\": \"Failed\",\n            \"source\": \"Api\",\n            \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n            \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n            \"cardId\": \"febe40ae-cbe7-4428-9aab-b41b004159eb\",\n            \"cardToken\": \"7D30206F4D3848D387564F4FFDC3D151000000\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"1111\",\n            \"issuerCountryCode\": \"US\",\n            \"reasonCode\": \"9999\",\n            \"reasonDescription\": \"CVV not found\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Randy\",\n                \"lastName\": \"Marsh\",\n                \"externalAccountIdentifier\": \"411111***1111\"\n            },\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2287979807\",\n            \"businessType\": \"AA\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-04-07T14:36:38.8-04:00\",\n            \"authorizedOn\": \"2026-04-07T14:42:07.887-04:00\",\n            \"submittedOn\": \"2026-04-07T14:44:18.63-04:00\",\n            \"failedAt\": \"2026-04-07T14:44:18.64-04:00\",\n            \"lastModifiedAt\": \"2026-04-07T14:46:33.3188773-04:00\"\n        },\n        {\n            \"id\": \"5b239697-b8da-401b-8b8a-b425013315fe\",\n            \"clientIdentifier\": \"395673a4-d91d-5f82-993d-9e1a9e5ef2a3\",\n            \"amount\": 100,\n            \"paymentType\": \"Pull\",\n            \"status\": \"Failed\",\n            \"source\": \"Api\",\n            \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n            \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n            \"cardId\": \"febe40ae-cbe7-4428-9aab-b41b004159eb\",\n            \"cardToken\": \"7D30206F4D3848D387564F4FFDC3D151000000\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"1111\",\n            \"issuerCountryCode\": \"US\",\n            \"reasonCode\": \"9999\",\n            \"reasonDescription\": \"CVV not found\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Randy\",\n                \"lastName\": \"Marsh\",\n                \"externalAccountIdentifier\": \"411111***1111\"\n            },\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2287979807\",\n            \"businessType\": \"AA\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-04-07T14:38:03.933-04:00\",\n            \"authorizedOn\": \"2026-04-07T14:42:30.687-04:00\",\n            \"submittedOn\": \"2026-04-07T14:42:30.793-04:00\",\n            \"failedAt\": \"2026-04-07T14:42:30.793-04:00\",\n            \"lastModifiedAt\": \"2026-04-07T14:42:33.0879676-04:00\"\n        },\n        {\n            \"id\": \"5124e2c1-4660-4cc2-a38f-b42501346965\",\n            \"clientIdentifier\": \"395673a4-d91d-5f82-993d-9e1a9e5ef2a3\",\n            \"amount\": 100,\n            \"paymentType\": \"Pull\",\n            \"status\": \"Failed\",\n            \"source\": \"Api\",\n            \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n            \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n            \"cardId\": \"febe40ae-cbe7-4428-9aab-b41b004159eb\",\n            \"cardToken\": \"7D30206F4D3848D387564F4FFDC3D151000000\",\n            \"cardBrand\": \"Visa\",\n            \"panLastFour\": \"1111\",\n            \"issuerCountryCode\": \"US\",\n            \"reasonCode\": \"9999\",\n            \"reasonDescription\": \"CVV not found\",\n            \"correspondingEntity\": {\n                \"firstName\": \"Randy\",\n                \"lastName\": \"Marsh\",\n                \"externalAccountIdentifier\": \"411111***1111\",\n                \"address\": {\n                    \"street1\": \"260 Avenue De Los Mexicanos\",\n                    \"city\": \"South Park\",\n                    \"state\": \"CO\",\n                    \"postalCode\": \"81241\",\n                    \"countryCode\": \"US\"\n                }\n            },\n            \"merchantVerificationValue\": \"123456\",\n            \"accountNumber\": \"2287979807\",\n            \"businessType\": \"AA\",\n            \"wasRefunded\": false,\n            \"createdAt\": \"2026-04-07T14:42:53.557-04:00\",\n            \"authorizedOn\": \"2026-04-07T14:45:09.44-04:00\",\n            \"submittedOn\": \"2026-04-07T14:45:10.397-04:00\",\n            \"failedAt\": \"2026-04-07T14:45:10.397-04:00\",\n            \"lastModifiedAt\": \"2026-04-07T14:47:22.3277117-04:00\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 10,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": true\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "qaLRHBp_njcq9NhtL7R3X"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "from",
        "kind": "optional",
        "type": "string",
        "description": "From date",
        "": "From date"
      },
      {
        "name": "to",
        "kind": "optional",
        "type": "string",
        "description": "To date",
        "": "To date"
      },
      {
        "name": "partnerId",
        "kind": "optional",
        "type": "string",
        "description": " A UUID that identifies the partner, as defined in COS.",
        "": " A UUID that identifies the partner, as defined in COS."
      },
      {
        "name": "productId",
        "kind": "optional",
        "type": "string",
        "description": " A UUID that identifies the product, as defined in COS.",
        "": " A UUID that identifies the product, as defined in COS."
      },
      {
        "name": "cardBrand",
        "kind": "optional",
        "type": "string",
        "description": "One of  \"AmericanExpress\",\n                        \"ChinaUnionPay\",\n                        \"Dankort\",\n                        \"DinersClub\",\n                        \"Discover\",\n                        \"Hipercard\",\n                        \"JCB\",\n                        \"Laser\",\n                        \"Maestro\",\n                        \"MasterCard\",\n                        \"RuPay\",\n                        \"Solo\",\n                        \"Switch\",\n                        \"Visa\",\n                        \"Unknown\"",
        "": "One of  \"AmericanExpress\",\n                        \"ChinaUnionPay\",\n                        \"Dankort\",\n                        \"DinersClub\",\n                        \"Discover\",\n                        \"Hipercard\",\n                        \"JCB\",\n                        \"Laser\",\n                        \"Maestro\",\n                        \"MasterCard\",\n                        \"RuPay\",\n                        \"Solo\",\n                        \"Switch\",\n                        \"Visa\",\n                        \"Unknown\""
      },
      {
        "name": "paymentType",
        "kind": "optional",
        "type": "string",
        "description": "Indicates the direction of the payment:\nPush -  Money sent out (e.g. disbursement to a customer)\nPull -  Money received (e.g. a charge to a customer's card)",
        "": "Indicates the direction of the payment:\nPush -  Money sent out (e.g. disbursement to a customer)\nPull -  Money received (e.g. a charge to a customer's card)"
      },
      {
        "name": "status",
        "kind": "optional",
        "type": "string",
        "description": "One of  \"Created\",\n                        \"Pending\",\n                        \"Authorized\",\n                        \"Submitted\",\n                        \"Processing\",\n                        \"Completed\",\n                        \"Rejected\",\n                        \"Failed\"",
        "": "One of  \"Created\",\n                        \"Pending\",\n                        \"Authorized\",\n                        \"Submitted\",\n                        \"Processing\",\n                        \"Completed\",\n                        \"Rejected\",\n                        \"Failed\""
      },
      {
        "name": "issuerCountryCode",
        "kind": "optional",
        "type": "string",
        "description": "A string representing the country code of the card issuer.",
        "": "A string representing the country code of the card issuer."
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "A string that identifies the client associated with the payment. Max 50 characters",
        "": "A string that identifies the client associated with the payment. Max 50 characters"
      },
      {
        "name": "pageNumber",
        "kind": "optional",
        "type": "number",
        "description": "The desired index in a paginated list.",
        "": "The desired index in a paginated list."
      },
      {
        "name": "pageSize",
        "kind": "optional",
        "type": "number",
        "description": "The desired number of items returned per page.",
        "": "The desired number of items returned per page."
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "results",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "The GUID of the payment you want to retrieve",
          "children": []
        },
        {
          "name": "originalPaymentId",
          "kind": "optional",
          "type": "string",
          "description": " A UUID that is the primary identifier for the payment.",
          "children": []
        },
        {
          "name": "clientIdentifier",
          "kind": "optional",
          "type": "string",
          "description": " A string that identifies the client associated with the payment.",
          "children": []
        },
        {
          "name": "amount",
          "kind": "optional",
          "type": "string",
          "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
          "children": []
        },
        {
          "name": "paymentType",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the direction of the payment:\nPush -  Money sent out (e.g. disbursement to a customer)\nPull -  Money received (e.g. a charge to a customer's card)",
          "children": []
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "One of  \"Created\",\n                        \"Pending\",\n                        \"Authorized\",\n                        \"Submitted\",\n                        \"Processing\",\n                        \"Completed\",\n                        \"Rejected\",\n                        \"Failed\"",
          "children": []
        },
        {
          "name": "productId",
          "kind": "optional",
          "type": "string",
          "description": " A UUID that identifies the product, as defined in COS.",
          "children": []
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": " A UUID that identifies the partner, as defined in COS.",
          "children": []
        },
        {
          "name": "cardId",
          "kind": "optional",
          "type": "string",
          "description": " A UUID that identifies the card used.",
          "children": []
        },
        {
          "name": "network",
          "kind": "optional",
          "type": "string",
          "description": "The network through which the payment is processed (e.g. Visa, Mastercard).",
          "children": []
        },
        {
          "name": "cardBrand",
          "kind": "optional",
          "type": "string",
          "description": "One of  \"AmericanExpress\",\n                        \"ChinaUnionPay\",\n                        \"Dankort\",\n                        \"DinersClub\",\n                        \"Discover\",\n                        \"Hipercard\",\n                        \"JCB\",\n                        \"Laser\",\n                        \"Maestro\",\n                        \"MasterCard\",\n                        \"RuPay\",\n                        \"Solo\",\n                        \"Switch\",\n                        \"Visa\",\n                        \"Unknown\"",
          "children": []
        },
        {
          "name": "panLastFour",
          "kind": "optional",
          "type": "string",
          "description": "The last four digits of the Primary Account Number (card number).",
          "children": []
        },
        {
          "name": "issuerCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "A string representing the country code of the card issuer.",
          "children": []
        },
        {
          "name": "retrievalReferenceId",
          "kind": "optional",
          "type": "string",
          "description": "A unique identifier used for retrieving transaction details, often used in disputes or reconciliation.",
          "children": []
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "A 2-digit code signifying the transaction result (approved or decline). For example, 00 means successful.",
          "children": []
        },
        {
          "name": "resonDescription",
          "kind": "optional",
          "type": "string",
          "description": "A string describing the transaction result. For example, Approved.",
          "children": []
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "A unique number assigned to a transaction from the time it leaves the merchant bank until it arrives at the cardholder bank",
          "children": []
        },
        {
          "name": "originator",
          "kind": "optional",
          "type": "object",
          "description": "References information about who initiated the transaction, linking to an OriginatorInfo object.",
          "children": []
        },
        {
          "name": "mcc",
          "kind": "optional",
          "type": "string",
          "description": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card.",
          "children": []
        },
        {
          "name": "merchantVerificationValue",
          "kind": "optional",
          "type": "string",
          "description": "A value used to verify the merchant's identity.",
          "children": []
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "The account number associated with the payment.",
          "children": []
        },
        {
          "name": "coreTransactionId",
          "kind": "optional",
          "type": "string",
          "description": "A UUID that links the payment to the core banking system.",
          "children": []
        },
        {
          "name": "memoPostId",
          "kind": "optional",
          "type": "string",
          "description": "A UUID that identifies the corresponding memo post (a temporary transaction posting).",
          "children": []
        },
        {
          "name": "memoPostRemovedAt",
          "kind": "optional",
          "type": "string",
          "description": "When the memo post was removed. I.e. When the temporary hold was released.",
          "children": []
        },
        {
          "name": "wasRefunded",
          "kind": "optional",
          "type": "boolean",
          "description": "Boolean value indicating whether the payment has been refunded.",
          "children": []
        },
        {
          "name": "refundPaymentId",
          "kind": "optional",
          "type": "string",
          "description": "A UUID that identifies the refund transaction associated with the payment.",
          "children": []
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "When the payment was created",
          "children": []
        },
        {
          "name": "authorizedOn",
          "kind": "optional",
          "type": "string",
          "description": "When the payment was authorized by the issuing bank.",
          "children": []
        },
        {
          "name": "submittedOn",
          "kind": "optional",
          "type": "string",
          "description": "When the payment was submitted to the network.",
          "children": []
        },
        {
          "name": "rejectedAt",
          "kind": "optional",
          "type": "string",
          "description": "When the payment was rejected.",
          "children": []
        },
        {
          "name": "completedAt",
          "kind": "optional",
          "type": "string",
          "description": "When the payment was successfully completed.",
          "children": []
        },
        {
          "name": "failedAt",
          "kind": "optional",
          "type": "string",
          "description": "When the payment failed to process.",
          "children": []
        },
        {
          "name": "limitsEligibleOn",
          "kind": "optional",
          "type": "string",
          "description": "When the transaction becomes eligible for limit calculations.",
          "children": []
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "When the payment record was last modified.",
          "children": []
        },
        {
          "name": "businessType",
          "kind": "optional",
          "type": "string",
          "description": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'"
        }
      ]
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1payments",
  "legacyHash": "YYSTqR8zkE1QUBkQdhV-w"
}
```
:::


[title] Simulations
[path] Payments/Instant payments/APIs/


[title] Simulate inbound request for info
[path] Payments/Instant payments/APIs/Simulations/

## API reference

Simulate receiving a request for additional information about a payment you sent or received

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/payments/{id}/simulated-inbound-request-for-info",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-request-for-info",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-request-for-info \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\""
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "const axios = require('axios');\n\nconst options = {\n  method: 'POST',\n  url: 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-request-for-info',\n  headers: {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n  },\n};\n\naxios(options)\n  .then(response => console.log(response.data))\n  .catch(error => console.error(error));"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-request-for-info'\nheaders = {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n}\n\nresponse = requests.post(url, headers=headers)\nprint(response.json())"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require 'net/http'\nrequire 'json'\n\nuri = URI('https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-request-for-info')\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\nrequest['Content-Type'] = 'application/json'\n\nresponse = http.request(request)\nputs JSON.parse(response.body)"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n    \"bytes\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n)\n\nfunc main() {\n    req, _ := http.NewRequest(\"POST\", \"https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-request-for-info\", nil)\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n    req.Header.Add(\"Content-Type\", \"application/json\")\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := ioutil.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}"
      }
    ]
  },
  "results": {
    "languages": [
      {
        "id": "202",
        "language": "202",
        "code": ""
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ]
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "type": "string",
        "kind": "required",
        "description": "Unique identifier for the loan. GUID"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": []
  },
  "response": [],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtppaymentsidsimulated-inbound-request-fo",
  "legacyHash": "xXEo9XmlHwxMELrTnwBHx"
}
```
:::

## Use cases

- Test compliance investigation workflows in sandbox
- Validate automated RFI response generation
- Develop fraud inquiry handling processes
- Train compliance team on RFI scenarios

## Error codes

| Code | Scenario                                                     | Resolution                                             |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------ |
| 2018 | Invalid Debtor                                               | Verify request parameters and retry                    |
| 2017 | Payments of $3,000 or more require a complete debtor address | Verify request parameters and retry                    |
| 2007 | Direction not inbound                                        | Verify request parameters and retry                    |
| 3001 | Unauthorized                                                 | Verify Bearer token is valid and not expired           |
| 3002 | Insufficient permissions                                     | Verify user has required permission for this operation |

## Business rules

- Requires valid Bearer token with permissions: Permissions.Payments.Simulate
- Request validation performed before processing
- Errors return 400 Bad Request with detailed error information
- Rate limiting may apply to prevent abuse

[title] Simulate inbound return request
[path] Payments/Instant payments/APIs/Simulations/

## API reference

Simulate receiving a request to return funds from the receiving bank after payment settlement

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/payments/{id}/simulated-inbound-return-request",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-return-request",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-return-request \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\" \\\\\n  -d '{\n  \"additionalInfo\": \"sample_value\",\n  \"caseCreatorName\": \"John Doe\",\n  \"originatorOrgAnyBIC\": \"CHASUS33XXX\",\n  \"originatorOrgLEI\": \"sample_value\",\n  \"originatorOrgOtherId\": \"sample_value\"\n}'"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "const axios = require('axios');\n\nconst options = {\n  method: 'POST',\n  url: 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-return-request',\n  headers: {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n  },\n  data: {\n    \"additionalInfo\": \"sample_value\",\n    \"caseCreatorName\": \"John Doe\",\n    \"originatorOrgAnyBIC\": \"CHASUS33XXX\",\n    \"originatorOrgLEI\": \"sample_value\",\n    \"originatorOrgOtherId\": \"sample_value\"\n}\n};\n\naxios(options)\n  .then(response => console.log(response.data))\n  .catch(error => console.error(error));"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-return-request'\nheaders = {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n}\ndata = {\n    \"additionalInfo\": \"sample_value\",\n    \"caseCreatorName\": \"John Doe\",\n    \"originatorOrgAnyBIC\": \"CHASUS33XXX\",\n    \"originatorOrgLEI\": \"sample_value\",\n    \"originatorOrgOtherId\": \"sample_value\"\n}\n\nresponse = requests.post(url, headers=headers, json=data)\nprint(response.json())"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require 'net/http'\nrequire 'json'\n\nuri = URI('https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-return-request')\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\nrequest['Content-Type'] = 'application/json'\nrequest.body = {\n  \"additionalInfo\": \"sample_value\",\n  \"caseCreatorName\": \"John Doe\",\n  \"originatorOrgAnyBIC\": \"CHASUS33XXX\",\n  \"originatorOrgLEI\": \"sample_value\",\n  \"originatorOrgOtherId\": \"sample_value\"\n}.to_json\n\nresponse = http.request(request)\nputs JSON.parse(response.body)"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n    \"bytes\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n)\n\nfunc main() {\n    payload := []byte(`{\n        \"additionalInfo\": \"sample_value\",\n        \"caseCreatorName\": \"John Doe\",\n        \"originatorOrgAnyBIC\": \"CHASUS33XXX\",\n        \"originatorOrgLEI\": \"sample_value\",\n        \"originatorOrgOtherId\": \"sample_value\"\n}`)\n\n    req, _ := http.NewRequest(\"POST\", \"https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-return-request\", bytes.NewBuffer(payload))\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n    req.Header.Add(\"Content-Type\", \"application/json\")\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := ioutil.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}"
      }
    ]
  },
  "results": {
    "languages": [
      {
        "id": "202",
        "language": "202",
        "code": ""
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ]
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "type": "string",
        "kind": "required",
        "description": "Unique identifier for the loan. GUID"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "additionalInfo",
        "kind": "optional",
        "type": "string",
        "description": "Provides supplementary details regarding the status report"
      },
      {
        "name": "caseCreatorName",
        "kind": "required",
        "type": "string",
        "description": "CaseCreatorName"
      },
      {
        "name": "originatorOrgAnyBIC",
        "kind": "optional",
        "type": "string",
        "description": "OriginatorOrgAnyBIC"
      },
      {
        "name": "originatorOrgLEI",
        "kind": "optional",
        "type": "string",
        "description": "OriginatorOrgLEI"
      },
      {
        "name": "originatorOrgOtherId",
        "kind": "optional",
        "type": "string",
        "description": "Unique identifier for originatororgother (UUID format)"
      }
    ]
  },
  "response": [],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtppaymentsidsimulated-inbound-return-req",
  "legacyHash": "hpdfhvMnCHeSKN2aubf0m"
}
```
:::

## Use cases

- Test payment return handling in sandbox environment
- Validate return reason code processing
- Develop return dispute workflows without affecting real payments
- Train staff on various return scenarios (fraud, closed account, incorrect account)

## Error codes

| Code | Scenario                                                                    | Resolution                                             |
| ---- | --------------------------------------------------------------------------- | ------------------------------------------------------ |
| 2021 | Only Credit Transfers can be refunded                                       | Verify request parameters and retry                    |
| 2015 | Payment had already been refunded                                           | Verify request parameters and retry                    |
| 2019 | Return can not be requested for a Credit Transfer due to payment status     | Verify request parameters and retry                    |
| 2028 | Simulator-Credit Transfer must be inbound                                   | Verify request parameters and retry                    |
| 2022 | Payment already has an existing return of funds in process                  | Verify request parameters and retry                    |
| 2039 | ReasonCode is missing or invalid                                            | Verify request parameters and retry                    |
| 2063 | Reason code UAPA only available for RTP v5.0.  Please use reason code FRAD. | Verify request parameters and retry                    |
| 2042 | AdditionalInfo is required for specified ReasonCode                         | Verify request parameters and retry                    |
| 2066 | Case creator name can only be used for FedNow payments.                     | Verify request parameters and retry                    |
| 3001 | Unauthorized                                                                | Verify Bearer token is valid and not expired           |
| 3002 | Insufficient permissions                                                    | Verify user has required permission for this operation |

## Business rules

- Requires valid Bearer token with permissions: Permissions.Payments.Simulate
- Request validation performed before processing
- Errors return 400 Bad Request with detailed error information
- Rate limiting may apply to prevent abuse

[title] Simulate inbound remit advice
[path] Payments/Instant payments/APIs/Simulations/

## API reference

Simulate receiving detailed remittance information for a payment transaction

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/payments/{id}/simulated-inbound-remit-advice",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-remit-advice",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-remit-advice \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\""
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "const axios = require('axios');\n\nconst options = {\n  method: 'POST',\n  url: 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-remit-advice',\n  headers: {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n  },\n};\n\naxios(options)\n  .then(response => console.log(response.data))\n  .catch(error => console.error(error));"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-remit-advice'\nheaders = {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n}\n\nresponse = requests.post(url, headers=headers)\nprint(response.json())"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require 'net/http'\nrequire 'json'\n\nuri = URI('https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-remit-advice')\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\nrequest['Content-Type'] = 'application/json'\n\nresponse = http.request(request)\nputs JSON.parse(response.body)"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n    \"bytes\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n)\n\nfunc main() {\n    req, _ := http.NewRequest(\"POST\", \"https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-remit-advice\", nil)\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n    req.Header.Add(\"Content-Type\", \"application/json\")\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := ioutil.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}"
      }
    ]
  },
  "results": {
    "languages": [
      {
        "id": "202",
        "language": "202",
        "code": ""
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ]
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "type": "string",
        "kind": "required",
        "description": "Unique identifier for the loan. GUID"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": []
  },
  "response": [],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtppaymentsidsimulated-inbound-remit-advi",
  "legacyHash": "fDxJx3xaIhLulXGVSHmX8"
}
```
:::

## Use cases

- Test payment flows in sandbox environment without real network transmission
- Validate integration with Cross River APIs before production
- Develop and debug payment handling workflows
- Train staff on payment processing scenarios

## Error codes

| Code | Scenario                                                     | Resolution                                             |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------ |
| 2018 | Invalid Debtor                                               | Verify request parameters and retry                    |
| 2017 | Payments of $3,000 or more require a complete debtor address | Verify request parameters and retry                    |
| 2007 | Direction not inbound                                        | Verify request parameters and retry                    |
| 3001 | Unauthorized                                                 | Verify Bearer token is valid and not expired           |
| 3002 | Insufficient permissions                                     | Verify user has required permission for this operation |

## Business rules

- Requires valid Bearer token with permissions: Permissions.Payments.Simulate
- Request validation performed before processing
- Errors return 400 Bad Request with detailed error information
- Rate limiting may apply to prevent abuse

[title] Simulate inbound payment status request
[path] Payments/Instant payments/APIs/Simulations/

## API reference

Simulate receiving an inquiry about the status of a payment transaction

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/payments/{id}/simulated-inbound-payment-status-request",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-status-request",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-status-request \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\""
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "const axios = require('axios');\n\nconst options = {\n  method: 'POST',\n  url: 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-status-request',\n  headers: {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n  },\n};\n\naxios(options)\n  .then(response => console.log(response.data))\n  .catch(error => console.error(error));"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = 'https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-status-request'\nheaders = {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n}\n\nresponse = requests.post(url, headers=headers)\nprint(response.json())"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require 'net/http'\nrequire 'json'\n\nuri = URI('https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-status-request')\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\nrequest['Content-Type'] = 'application/json'\n\nresponse = http.request(request)\nputs JSON.parse(response.body)"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n    \"bytes\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n)\n\nfunc main() {\n    req, _ := http.NewRequest(\"POST\", \"https://sandbox.crbcos.com/rtp/v1/payments/{id}/simulated-inbound-payment-status-request\", nil)\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n    req.Header.Add(\"Content-Type\", \"application/json\")\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := ioutil.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}"
      }
    ]
  },
  "results": {
    "languages": [
      {
        "id": "202",
        "language": "202",
        "code": ""
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ]
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "type": "string",
        "kind": "required",
        "description": "Unique identifier for the loan. GUID"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": []
  },
  "response": [],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtppaymentsidsimulated-inbound-payment-st",
  "legacyHash": "jwkKszfiF3bQlZRE2atN6"
}
```
:::

## Use cases

- Test payment flows in sandbox environment without real network transmission
- Validate integration with Cross River APIs before production
- Develop and debug payment handling workflows
- Train staff on payment processing scenarios

## Error codes

| Code | Scenario                                                     | Resolution                                             |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------ |
| 2018 | Invalid Debtor                                               | Verify request parameters and retry                    |
| 2017 | Payments of $3,000 or more require a complete debtor address | Verify request parameters and retry                    |
| 2007 | Direction not inbound                                        | Verify request parameters and retry                    |
| 3001 | Unauthorized                                                 | Verify Bearer token is valid and not expired           |
| 3002 | Insufficient permissions                                     | Verify user has required permission for this operation |

## Business rules

- Requires valid Bearer token with permissions: Permissions.Payments.Simulate
- Request validation performed before processing
- Errors return 400 Bad Request with detailed error information
- Rate limiting may apply to prevent abuse

[title] Returns
[path] Payments/ACH/APIs/

## API reference

Initiates a return for an existing ACH payment. Returns must include a valid Nacha return code, can also include descriptive metadata. Returned payments reference the original transaction and include updated payment details.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /ach/v1/payments/{id}/returns",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/ach/v1/payments/{id}/returns",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "HRBR9MsKSwwyH-NYrjwNM",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/ach/v1/payments/2df92265-858e-451d-be22-b30600e8b7f4/returns' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '{\n\"returnCode\": \"R05\"\n}'",
        "customLabel": ""
      },
      {
        "id": "rhlhBl0lH_-sKxYWG10hY",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/payments/2df92265-858e-451d-be22-b30600e8b7f4/returns',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n\\\"returnCode\\\": \\\"R08\\\",\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "01EAUmZhFaKN3XxMZuqni",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n\\\"returnCode\\\": \\\"R08\\\",\\r\\n}\"\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"POST\", \"/ach/v1/payments/2df92265-858e-451d-be22-b30600e8b7f4/returns\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "-7OM1zQkyA59P-nPRF842",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/payments/2df92265-858e-451d-be22-b30600e8b7f4/returns\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = \"{\\r\\n\\\"returnCode\\\": \\\"R08\\\",\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "op6XkX6kKMbOFkqTvmpPk",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/payments/2df92265-858e-451d-be22-b30600e8b7f4/returns\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n\"returnCode\": \"R08\",`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MDY1ODE5MCwiaWF0IjoxNzUwNjU4MTkwLCJleHAiOjE3NTA2OTQxOTAsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJrZmN1bGZnREF0TkJFVHpSbTFHWUhyazlDemN3ZUg0VSIsImp0aSI6IkU3OTJFNkVCQzMyQjAyODM3Q0FGNzFCREJCNjI0MkY4In0.vsG1iXkB9RkWexd7XcRhL9GTUTU8RhWbVwM8W3ov2em3RSePtcC8jK7c2O9qrWjVTs54lMyEqWhByZYJXIPlGXF8OwiNyoxiy9boeCXqVOTmS9Wix7K2FBQmPsMjZ7fZQqnqKLLNgrJhEf88c1MoN5DBwhhrH2oFsblZlnSd-DhNJYOyJRM45rE88ZfDdny_plLFxUo7DQ6BIjAv4B7QQcDDOXzAWlNgux7Txq_aaemDTkwLV2TjVyfG547iHz_pgfY_87tPPUpN9YA1w6NVK27DePsKbFLuErbCSJeAZPXQQYJJ0pS27kQNQeLXxGDsM3KjpHLl_CQ4aU08Nb_GSw\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "HRBR9MsKSwwyH-NYrjwNM"
  },
  "results": {
    "languages": [
      {
        "id": "OaQ6YHIkwFzOhLKg7zsw2",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"e9edc2ac-d862-4c79-a367-b30600e9e3c3\",\n  \"accountNumber\": \"20020020027\",\n  \"referenceId\": \"A175619CBA49\",\n  \"paymentType\": \"Return\",\n  \"direction\": \"Outbound\",\n  \"status\": \"Created\",\n  \"source\": \"Api\",\n  \"postingType\": \"Individual\",\n  \"coreTransactionId\": \"f665d86b-e3a5-451f-bc1c-b30600e9e3c3\",\n  \"postingCode\": \"OK\",\n  \"posting\": \"Authorized\",\n  \"originator\": {\n    \"routingNumber\": \"021214891\",\n    \"accountType\": \"Checking\",\n    \"name\": \"Ach Return Demo\",\n    \"identification\": \"123456888\"\n  },\n  \"receiver\": {\n    \"routingNumber\": \"021000001\",\n    \"accountNumber\": \"123456789\",\n    \"accountType\": \"Checking\",\n    \"name\": \"ACH Return Demo\",\n    \"identification\": \"\"\n  },\n  \"secCode\": \"PPD\",\n  \"description\": \"Demo\",\n  \"transactionType\": \"Push\",\n  \"amount\": 10000,\n  \"serviceType\": \"SameDay\",\n  \"effectiveDate\": \"250624\",\n  \"reasonCode\": \"R05\",\n  \"traceNumber\": \"021214896054992\",\n  \"settlementDate\": \"175\",\n  \"wasReturned\": false,\n  \"wasCorrected\": false,\n  \"holdDays\": 0,\n  \"previous\": {\n    \"paymentId\": \"2df92265-858e-451d-be22-b30600e8b7f4\",\n    \"traceNumber\": \"021000089764880\",\n    \"settlementDate\": \"175\"\n  },\n  \"original\": {\n    \"paymentId\": \"2df92265-858e-451d-be22-b30600e8b7f4\",\n    \"traceNumber\": \"021000089764880\",\n    \"settlementDate\": \"175\"\n  },\n  \"createdAt\": \"2025-06-24T10:11:33.9807584-04:00\",\n  \"partnerId\": \"4fe37b73-5f22-4f7f-8765-a9a500d801d2\",\n  \"productId\": \"5f8cc26a-6dd3-4131-9dcd-a9a500d83878\",\n  \"lastModifiedAt\": \"2025-06-24T10:11:33.9807584-04:00\",\n  \"purpose\": \"ENTERED BY #179B4E16-D19E-45BF-9884-88FB06C67C97#\"\n}"
      }
    ],
    "selectedLanguageId": "OaQ6YHIkwFzOhLKg7zsw2"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "Unique identifier of the original ACH payment to be returned",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "returnCode",
        "kind": "required",
        "type": "string",
        "description": "Valid ACH return code in accordance with NACHA guidelines (for example, R01, R02). See the ACH Request and Response Codes page for the return codes. ",
        "": "Valid ACH return code in accordance with NACHA guidelines (for example, R01, R02). See the ACH Request and Response Codes page for the return codes. "
      },
      {
        "name": "reasonData",
        "kind": "optional",
        "type": "string",
        "description": "More information about the reason for the return. 34 character maximum.",
        "": "More information about the reason for the return. 34 character maximum."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The new payment ID for the return, in GUID format. The original payment ID appears in the original and previous objects."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River account number for payment originator.  Depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment. The reference ID always begins with the first letter of the rail. For ACH the reference ID starts with 'A'.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "What kind of payment was sent, for example, origination or return. See the ACH Request and response codes page for a list of payment types.",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "The payment direction, which includes:\n- Inbound: payment received by a Cross River account from another bank\n- Outbound: a payment sent from a Cross River account to another bank",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Current lifecycle status of the payment, for example, Created, Processing, or Completed. See the ACH Request and response codes page for a list of payment statuses.",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Payment channel:\n- Api\n- PartnerPortal\n- OpsPortal\n- File",
      "children": []
    },
    {
      "name": "postingType",
      "kind": "optional",
      "type": "string",
      "description": "How the payment is grouped for posting:\n- Individual\n- Aggregate (batch)",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier (GUID) used to group related client payments in batch submissions, if you originate the client batch",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "Integer",
      "description": "Sequence number of the payment in the batch, if you originate the client batch",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Fedwire or ACH batch ID used for settlement tracking",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "Integer",
      "description": "Sequence of the payment inside of the batch sent to or received from the Fed",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "ID representing the memo post associated with this transaction",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code representing the posting category used internally",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "The related Cross River system transaction status. When you originate a payment, the system initially returns OK. If the payment fails or is declined, the value changes to a Cross River system-generated code:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Processing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because: \n- OfacUnableToDetermine\n- OfacConfirmed\n- OfacUnconfirmed\n- Other",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "Reason for any OFAC or compliance-based block:\n- Ofac\n- Other",
      "children": []
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "Object",
      "description": "Originator bank details",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies the originator financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number for payment originator"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Originator deposit account type:\n- Checking\n- Savings\n- GeneralLedger\n- Loan"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originator of the transaction. Nacha refers to this as Company Name."
        },
        {
          "name": "identification",
          "kind": "optional",
          "type": "string",
          "description": "Originator Identification. Nacha refers to this as the Company Identification."
        },
        {
          "name": "data",
          "kind": "optional",
          "type": "string",
          "description": "Additional metadata provided by the originator. Nacha refers to this as Company Discretionary Data."
        }
      ]
    },
    {
      "name": "receiver",
      "kind": "optional",
      "type": "Object",
      "description": "Receiver bank details",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies the receiver financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number for the receiver"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Receiver deposit account type:\n- Checking\n- Savings\n- GeneralLedger\n- Loan"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Receiver name as it appears on the receiver account. Nacha refers to this as the Individual Name."
        },
        {
          "name": "identification",
          "kind": "optional",
          "type": "string",
          "description": "Receiver Identification. Nacha refers to this as the Individual Identification Number. 15 character maximum."
        },
        {
          "name": "data",
          "kind": "optional",
          "type": "string",
          "description": "Additional metadata provided by the receiver. Nacha refers to this as Discretionary Data."
        }
      ]
    },
    {
      "name": "secCode",
      "kind": "optional",
      "type": "string",
      "description": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page.",
      "children": []
    },
    {
      "name": "description",
      "kind": "optional",
      "type": "string",
      "description": "Description of the payment provided at origination",
      "children": []
    },
    {
      "name": "transactionType",
      "kind": "optional",
      "type": "string",
      "description": "Sending or requesting funds:\n- Push (originator is sending funds—debit)\n- Pull (originator is receiving funds—credit)",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of payment in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "serviceType",
      "kind": "optional",
      "type": "string",
      "description": "When the payment completes:\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)",
      "children": []
    },
    {
      "name": "extendedDetails",
      "kind": "optional",
      "type": "Object",
      "description": "ACH-specific fields. Learn more on the Nacha site.",
      "children": [
        {
          "name": "authCode",
          "kind": "optional",
          "type": "string",
          "description": "Authorization code related to card-based transactions"
        },
        {
          "name": "cardExpDate",
          "kind": "optional",
          "type": "string",
          "description": "Expiration date of the card used"
        },
        {
          "name": "cardTransactionType",
          "kind": "optional",
          "type": "string",
          "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
        },
        {
          "name": "checkSerialNumber",
          "kind": "optional",
          "type": "string",
          "description": "Serial number for check-based transactions"
        },
        {
          "name": "docReferenceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Document reference number associated with the transaction"
        },
        {
          "name": "itemType",
          "kind": "optional",
          "type": "string",
          "description": "Type of financial item, for example, Check or  Card"
        },
        {
          "name": "networkIdentification",
          "kind": "optional",
          "type": "string",
          "description": "Network through which the transaction was processed"
        },
        {
          "name": "paymentType",
          "kind": "optional",
          "type": "string",
          "description": "Payment types are used in proceessing and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
        },
        {
          "name": "processControl",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River processing control code"
        },
        {
          "name": "reference1",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "reference2",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "researchNumber",
          "kind": "optional",
          "type": "string",
          "description": "Research ID for dispute or trace purposes"
        },
        {
          "name": "terminalIdentification",
          "kind": "optional",
          "type": "string",
          "description": "ID of the terminal where the transaction occurred"
        },
        {
          "name": "terminalLocation",
          "kind": "optional",
          "type": "string",
          "description": "Location descriptor of the terminal"
        },
        {
          "name": "terminalCity",
          "kind": "optional",
          "type": "string",
          "description": "City where the terminal is located"
        },
        {
          "name": "terminalState",
          "kind": "optional",
          "type": "string",
          "description": "State where the terminal is located"
        },
        {
          "name": "transactionDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the transaction happened"
        },
        {
          "name": "transactionDesc",
          "kind": "optional",
          "type": "string",
          "description": "Additional description of the transaction"
        },
        {
          "name": "transactionSerial",
          "kind": "optional",
          "type": "string",
          "description": "Serial number of the transaction"
        },
        {
          "name": "transactionTime",
          "kind": "optional",
          "type": "string",
          "description": "Transaction timestamp"
        },
        {
          "name": "cardAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Card account number used in the transaction"
        }
      ]
    },
    {
      "name": "iatDetails",
      "kind": "optional",
      "type": "Object",
      "description": "International ACH details. \nThis object is only returned for the IAT secCode.",
      "children": [
        {
          "name": "originator",
          "kind": "optional",
          "type": "Object",
          "description": "Payment sender details",
          "children": [
            {
              "name": "address",
              "kind": "optional",
              "type": "string",
              "description": "Originator street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Originator city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Originator state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receiver",
          "kind": "optional",
          "type": "Object",
          "description": "Payment receiver details",
          "children": [
            {
              "name": "address",
              "kind": "optional",
              "type": "string",
              "description": "Receiver street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Receiver city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Receiver state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "originatingBank",
          "kind": "optional",
          "type": "Object",
          "description": "Details of financial institution originating the IAT",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of originating financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank DFI Identification number, which is the first 8 digits of its routing number."
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Originating DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receivingBank",
          "kind": "optional",
          "type": "Object",
          "description": "Details of financial institution receiving the IAT",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of receiving financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank DFI Identification number, which is the first 8 digits of its routing number"
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Receiving DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "remittanceInfo1",
          "kind": "optional",
          "type": "string",
          "description": "Additional IAT information.\nA second field is available as remittanceInfo2."
        },
        {
          "name": "correspondentBank1",
          "kind": "optional",
          "type": "Object",
          "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5, each with the same child attributes.",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": " Name of financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification number, which is the first 8 digits of its routing number."
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "transactionTypeCode",
          "kind": "optional",
          "type": "string",
          "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
        },
        {
          "name": "originatingCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the originating currency"
        },
        {
          "name": "destinationCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the receiving currency"
        }
      ]
    },
    {
      "name": "addenda",
      "kind": "optional",
      "type": "string",
      "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as invoice numbers.",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Effective date of the ACH payment (YYYY-MM-DD)",
      "children": []
    },
    {
      "name": "reasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Valid ACH return code explaining the return reason in accordance with NACHA guidelines (for example, R01, R02). See the ACH Request and Response Codes page for the return codes. ",
      "children": []
    },
    {
      "name": "reasonData",
      "kind": "optional",
      "type": "string",
      "description": "More information about the reason for the return.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Unique ACH trace number for the transaction",
      "children": []
    },
    {
      "name": "settlementDate",
      "kind": "optional",
      "type": "string",
      "description": "Date payment settled in the receiver's account",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if payment was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "wasCorrected",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if a payment is sent with bad info but the receiving FI fixes it and sends back the information (NOC). Otherwise false.",
      "children": []
    },
    {
      "name": "holdDays",
      "kind": "optional",
      "type": "Integer",
      "description": "For ACH pulls, allows defining a number of days to delay credit of funds to an account to mitigate fraud and NSF scenarios",
      "children": []
    },
    {
      "name": "previous",
      "kind": "optional",
      "type": "Object",
      "description": "Previous payment details",
      "children": [
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "Payment ID for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Trace number for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "settlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Settlement date for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "reasonData",
          "kind": "optional",
          "type": "string",
          "description": "Supporting data for the reason code for an original payment if the payment is returned or the system sends a NOC"
        }
      ]
    },
    {
      "name": "original",
      "kind": "optional",
      "type": "Object",
      "description": "Original payment details when a payment was returned or a NOC was sent.\nResending a payment after failure as a completely new request. The new payment cannot be linked to the failed payment.",
      "children": [
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "Payment ID for an original payment before any returns or corrections"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code for an original payment"
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Trace number for an original payment"
        },
        {
          "name": "settlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Settlement date for an original payment"
        },
        {
          "name": "reasonData",
          "kind": "optional",
          "type": "string",
          "description": "Supporting data for the reason code for an original payment"
        }
      ]
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was posted to the Cross River account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, the Cross River account involved in the payment.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the ACH transfer. For internal use only. The data is not included with the outgoing ACH batch file.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "externalPrefix",
      "kind": "optional",
      "type": "string",
      "description": "Prefix from external system integration",
      "children": []
    },
    {
      "name": "externalAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "External-facing account reference number",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-achv1paymentsidreturns",
  "legacyHash": "DUR9AM9s7ZfqIm-lN0dDv"
}
```
:::


[title] Checks
[path] Payments/

:::CtaButton{label="Checks concepts" docId="8MxnUqiHsMPE6vHWQex5u" openInNewTab="true"}
You can manage both deposit and withdrawal checking for your customers using Cross River APIs.
:::

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

This table presents checks management APIs that we describe in detail.

| Action                                                                          | API Call                                                 | Description                                                                                           |
| ------------------------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| [Deposit check](docId\:xEOwz2w0C2wFSR3tV8mdy)                                   | `POST /checks/v1/payments`                               | Sends COS the information needed to deposit a check into a Cross River account                        |
| [Print check payment](docId:2w_y2m0a0W0ol8Y05TGIG)                              | `POST /checks/v1/printed-payments`                       | Sends a request to print and deliver a physical check.                                                |
| [List check payments](docId\:meJbS8NftALSrqnL-FQDz)                             | `GET /checks/v1/payments`                                | Returns a list of check payments based on various query criteria, per partner                         |
| [Get payment details](docId:0GPRqBRHjRJNrDeukTbb9)                              | `GET /checks/v1/payments/{id}`                           | Returns details about a specific check payment, by payment ID                                         |
| [Get extended check data](docId\:uebUHmGEw7GdicOKzMsqC)                         | `GET /v1/payments/{id}/extended`                         | Returns ICL file metadata for a specific check payment by payment ID                                  |
| [Cancel deposit](docId\:voCw4O_MvZHAqoulkHhDo)                                  | `POST /checks/v1/payments/{id}/cancel`                   | Cancels a check deposit                                                                               |
| [View check](docId\:MdNp4DyeOwpOqg4mYMsqh)                                      | `GET /checks/v1/payments/{id}/images/{view}`             | Returns the image of the front or back of the check encoded in Base64                                 |
| [Image analysis](docId\:pdi1M3oZgKrddczAmAl8r)                                  | `GET /checks/v1/payments/{id}/analysis`                  | Returns an analysis of the check's image quality assurance (IQA) status based on the Fed's metrics    |
| Positive Pay: [Authorize check](docId\:touxH7X9EeSpTKw6VXI4l)                   | `POST /checks/v1/positive-pay-authorizations`            | Authorizes an incoming check using Positive Pay                                                       |
| Positive Pay: [Revoke authorization](docId\:YGpxhOjsGdGgo24Udz8lo)              | `POST checks/v1/positive-pay-authorizations/{id}/revoke` | Revokes Positive Pay authorization already given for a specific check                                 |
| [Initiate check return](docId\:H2Io-Tc5hUS-m4kz-X7Uv)                           | `POST /checks/v1/payments/{id}/returns`                  | Initiates return of an inbound forward check                                                          |
| Simulation:<br />[Simulate inbound payment](docId\:RI6dUmr8d8aQ-mle7tdzy)       | `POST /checks/v1/payments/simulated-inbound-payments`    | Simulates an inbound forward check payment (withdrawal of funds)                                      |
| Simulation:<br />[Simulate inbound check return](docId\:RTk-hNjDYEP4Uma9yv1vq)  | `POST /checks/v1/payments/simulated-inbound-returns`     | Simulates return of a check deposited into a Cross River account that the issuing bank does not honor |

# Related topics

- [Webhook events: Checks](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Request and response codes: Checks](docId:1KTHA2s34VRJpI7vStvOi) &#x20;
- [Error codes: checks](docId\:TZcZT78MwnLpVl3XtIRRD)&#x20;

# Tutorials

See our API tutorial to learn how to:

- [Checks](docId\:NCdnIvTYdix4xtbfn8jY6): Deposit and handle rejected checks.


[title] Foreign exchange rate
[path] Payments/Card payments/FX Rates/

## API reference

Retrieves the foreign exchange rate for the desired currency from USD or to USD, determined by use of `fromAmount `or `toAmount`.&#x20;

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardpayments/v1/fxrates",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/fxrates",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "4sVGn5OB7GNe1gkv1YLAM",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardpayments/v1/fxrates?currency=EUR&fromAmount=100' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer token'"
      },
      {
        "id": "wD2OSVM9eXz6GDBBMbvON",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardpayments/v1/fxrates?currency=EUR&fromAmount=100',\n  'headers': {\n    'Accept': 'application/json',\n    'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA4MDE3MywiaWF0IjoxNzc2MDgwMTczLCJleHAiOjE3NzYwODE5NzMsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkNFRjMyMDFFQjQ4MTM1OUU3RDBGNzc5MUVFNkM1MDgzIn0.uUHO9OGfTnbMVj-yOzt9FoAG2UBT_DZ68EPS7JpsRPivSkW5V5BvZgZATde24_908X0jaR0u27kmnbeRos57IXpVFv-Xpt9dDnjbrJ8GFi-oxbbJapx5I46i_dIOfEBsThDEUjtuNQvT2NFBrtr44r_YRJoWKYW7ud57T35hAxAs7iSXLX-eJZ4ZbL5iL_HfpWlVROEv49C6xJm6iXZF_pF3dgUUYOurtxDJVm4o7yq7wIzjQY-4EGN96SoHoLuVFFcb_15hHByM8WoVZwnBqBuoDQHbWtFtecJxUJpWZ2tzwOn1ghbZ-XEzSrJ3ojmkW1avmOjD3HKZS89ihapv9g'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "fH2swKTw6D9BwyTERjJYa",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardpayments/v1/fxrates?currency=EUR&fromAmount=100\"\n\npayload = {}\nheaders = {\n  'Accept': 'application/json',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA4MDE3MywiaWF0IjoxNzc2MDgwMTczLCJleHAiOjE3NzYwODE5NzMsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkNFRjMyMDFFQjQ4MTM1OUU3RDBGNzc5MUVFNkM1MDgzIn0.uUHO9OGfTnbMVj-yOzt9FoAG2UBT_DZ68EPS7JpsRPivSkW5V5BvZgZATde24_908X0jaR0u27kmnbeRos57IXpVFv-Xpt9dDnjbrJ8GFi-oxbbJapx5I46i_dIOfEBsThDEUjtuNQvT2NFBrtr44r_YRJoWKYW7ud57T35hAxAs7iSXLX-eJZ4ZbL5iL_HfpWlVROEv49C6xJm6iXZF_pF3dgUUYOurtxDJVm4o7yq7wIzjQY-4EGN96SoHoLuVFFcb_15hHByM8WoVZwnBqBuoDQHbWtFtecJxUJpWZ2tzwOn1ghbZ-XEzSrJ3ojmkW1avmOjD3HKZS89ihapv9g'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
      },
      {
        "id": "kW8cgeLOYWrdYOweKInPt",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardpayments/v1/fxrates?currency=EUR&fromAmount=100\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA4MDE3MywiaWF0IjoxNzc2MDgwMTczLCJleHAiOjE3NzYwODE5NzMsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkNFRjMyMDFFQjQ4MTM1OUU3RDBGNzc5MUVFNkM1MDgzIn0.uUHO9OGfTnbMVj-yOzt9FoAG2UBT_DZ68EPS7JpsRPivSkW5V5BvZgZATde24_908X0jaR0u27kmnbeRos57IXpVFv-Xpt9dDnjbrJ8GFi-oxbbJapx5I46i_dIOfEBsThDEUjtuNQvT2NFBrtr44r_YRJoWKYW7ud57T35hAxAs7iSXLX-eJZ4ZbL5iL_HfpWlVROEv49C6xJm6iXZF_pF3dgUUYOurtxDJVm4o7yq7wIzjQY-4EGN96SoHoLuVFFcb_15hHByM8WoVZwnBqBuoDQHbWtFtecJxUJpWZ2tzwOn1ghbZ-XEzSrJ3ojmkW1avmOjD3HKZS89ihapv9g\"\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "WyVnroJwv-H8Xo1Co0uij",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardpayments/v1/fxrates?currency=EUR&fromAmount=100\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA4MDE3MywiaWF0IjoxNzc2MDgwMTczLCJleHAiOjE3NzYwODE5NzMsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkNFRjMyMDFFQjQ4MTM1OUU3RDBGNzc5MUVFNkM1MDgzIn0.uUHO9OGfTnbMVj-yOzt9FoAG2UBT_DZ68EPS7JpsRPivSkW5V5BvZgZATde24_908X0jaR0u27kmnbeRos57IXpVFv-Xpt9dDnjbrJ8GFi-oxbbJapx5I46i_dIOfEBsThDEUjtuNQvT2NFBrtr44r_YRJoWKYW7ud57T35hAxAs7iSXLX-eJZ4ZbL5iL_HfpWlVROEv49C6xJm6iXZF_pF3dgUUYOurtxDJVm4o7yq7wIzjQY-4EGN96SoHoLuVFFcb_15hHByM8WoVZwnBqBuoDQHbWtFtecJxUJpWZ2tzwOn1ghbZ-XEzSrJ3ojmkW1avmOjD3HKZS89ihapv9g\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "WyVnroJwv-H8Xo1Co0uij"
  },
  "results": {
    "languages": [
      {
        "id": "zSKeGucw0Ij9uNyBPihiv",
        "language": "200",
        "code": "{\n  \"fxRatesNetworkResponses\": [\n    {\n      \"network\": \"Mastercard\",\n      \"currency\": \"eur\",\n      \"fromAmount\": 100,\n      \"toAmount\": 85,\n      \"exchangeRate\": \"0.853243\"\n    },\n    {\n      \"network\": \"Visa\",\n      \"currency\": \"eur\",\n      \"fromAmount\": 100,\n      \"toAmount\": 91,\n      \"exchangeRate\": \"0.913242\"\n    }\n  ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zSKeGucw0Ij9uNyBPihiv"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "currency",
        "kind": "required",
        "type": "string",
        "description": "3 char currency code for the currency converted from (when using the fromAmount field) or converted to (using the toAmount) field",
        "": "string"
      },
      {
        "name": "fromAmount",
        "kind": "optional",
        "type": "integer",
        "description": "Either the fromAmount or the toAmount must be specificed and the other left blank. When the fromAmount is specificed then the amount will be converted FROM USD to the currency specified in the currency parameter. Amount is in positive integral units. For example, $1.00 appears as 100.",
        "": "Either the fromAmount or the toAmount must be specificed and the other left blank. When the fromAmount is specificed then the amount will be converted FROM USD to the currency specified in the currency parameter. Amount is in positive integral units. For example, $1.00 appears as 100."
      },
      {
        "name": "toAmount",
        "kind": "optional",
        "type": "integer",
        "description": "Either the fromAmount or the toAmount must be specificed and the other left blank. When the toAmount is specificed then the amount will be converted TO USD from the currency specified in the currency parameter. Amount is in positive integral units. For example, $1.00 appears as 100.",
        "": "Either the fromAmount or the toAmount must be specificed and the other left blank. When the toAmount is specificed then the amount will be converted TO USD from the currency specified in the currency parameter. Amount is in positive integral units. For example, $1.00 appears as 100."
      }
    ],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "fxRatesNetworkResponses",
      "kind": "optional",
      "type": "object",
      "description": "A list of conversion rates per each relevant card network",
      "children": [
        {
          "name": "network",
          "kind": "optional",
          "type": "string",
          "description": "The card payments network, either Visa or MasterCard."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "fromAmount",
          "kind": "optional",
          "type": "integer",
          "description": "The from amount for conversion"
        },
        {
          "name": "toAmount",
          "kind": "optional",
          "type": "integer",
          "description": "The to amount for conversion"
        },
        {
          "name": "exchangeRate",
          "kind": "optional",
          "type": "string",
          "description": "The currency conversion rate, for example, 1.25342. Note that this value does not include markup."
        }
      ]
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cardpaymentsv1fxrates",
  "legacyHash": "_sAKLYuYLlN7et9xD8IoQ"
}
```
:::


[title] Request payment quote
[path] Payments/International payments/APIs/

## API reference

This API calls an executable international payment quote that returns the cost of the transfer, including any fees and the exchange rate to a foreign currency.

:::hint{type="success"}
**IMPORTANT!&#x20;**&#x4D;any beneficiary details are conditionally optional depending on destination country. Call `GET /International/v1/meta/quote-requirements` for a list of specific required parameters for your quote.
:::

For an example of how to request a quote for currencies using Payment Purpose Codes, please refer to the [Payment purpose codes](docId\:kmgW82p6BkYZJX-aojTae) page.

For payments to Mexico and China, take note of the instructions in the beneficiaryFi section relating to `accountNumber`, `routingCodeType1`, `routingCodeValue1`, and `iban`.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /international/v1/quotes",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/International/v1/quotes",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "SjMPV8wme7MtXozWh2GRT",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/International/v1/quotes' \\\n--data '{\n  \"currency\": \"gbp\",\n  \"accountNumber\": \"158560897007\",\n  \"fromAmount\": \"500\",\n  \"toAmount\": \"\",\n  \"beneficiary\": {\n    \"firstName\": \"Jon\",\n    \"lastName\": \"Smith\",\n    \n    \"fullName\": \"JonSmith\",\n    \n    \"birthDate\": \"2001-06-18T13:05:09.015Z\",\n    \"address\": \"1 Street\",\n    \"city\": \"Winfield\",\n    \"stateProvince\": \"\",\n    \"postalCode\": \"GB12345\",\n    \"countryCode\": \"GB\",\n    \"entityType\": \"Individual\"\n  },\n  \"beneficiaryFi\": {\n    \"bankName\": \"Bank UK\",\n    \"bankCountryCode\": \"GB\",\n    \"bankAddress\": \"1 Avenue\",\n    \"bankAccountType\": \"Checking\",\n    \n    \"routingCodeType1\": \"SortCode\",\n    \"routingCodeValue1\": \"123456789\",\n    \"routingCodeType2\": \"aba\",\n    \"routingCodeValue2\": \"123456789\",\n    \"bicSwift\": \"TGCLGB99\",\n    \"iban\": \"GB33BUKB20201555555555\"\n  },\n   \"originator\": {\n    \"entityName\": \"Cross River Bank\",\n    \"firstName\": \"\",\n    \"lastName\": \"\",\n    \"fullName\": \"Cross River Bank\",\n    \"address\": \"885 Teaneck Road\",\n    \"city\": \"Teaneck\",\n    \"state\": \"NJ\",\n    \"postalCode\": \"07666\",\n    \"countryCode\": \"US\",\n    \"entityType\": \"Company\",\n    \"birthDate\": \"2008-06-23\",\n    \"identificationType\": \"IncorporationNumber\",\n    \"identificationValue\": \"0400170263\"\n  },\n  \"priority\": true,\n  \n  \n  \"purpose\": \"SRV\"\n}'\n",
        "customLabel": ""
      },
      {
        "id": "FHXRFspywI1UAhy6m4uGJ",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/International/v1/quotes',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"currency\\\": \\\"gbp\\\",\\r\\n  \\\"accountNumber\\\": \\\"158560897007\\\",\\r\\n  \\\"fromAmount\\\": \\\"500\\\",\\r\\n  \\\"toAmount\\\": \\\"\\\",\\r\\n  \\\"beneficiary\\\": {\\r\\n    \\\"firstName\\\": \\\"Jon\\\",\\r\\n    \\\"lastName\\\": \\\"Smith\\\",\\r\\n    \\n    \\\"fullName\\\": \\\"JonSmith\\\",\\r\\n    \\n    \\\"birthDate\\\": \\\"2001-06-18T13:05:09.015Z\\\",\\r\\n    \\\"address\\\": \\\"1 Street\\\",\\r\\n    \\\"city\\\": \\\"Winfield\\\",\\r\\n    \\\"stateProvince\\\": \\\"\\\",\\r\\n    \\\"postalCode\\\": \\\"GB12345\\\",\\r\\n    \\\"countryCode\\\": \\\"GB\\\",\\r\\n    \\\"entityType\\\": \\\"Individual\\\"\\r\\n  },\\r\\n  \\\"beneficiaryFi\\\": {\\r\\n    \\\"bankName\\\": \\\"Bank UK\\\",\\r\\n    \\\"bankCountryCode\\\": \\\"GB\\\",\\r\\n    \\\"bankAddress\\\": \\\"1 Avenue\\\",\\r\\n    \\\"bankAccountType\\\": \\\"Checking\\\",\\r\\n    \\n    \\\"routingCodeType1\\\": \\\"SortCode\\\",\\r\\n    \\\"routingCodeValue1\\\": \\\"123456789\\\",\\r\\n    \\\"routingCodeType2\\\": \\\"aba\\\",\\r\\n    \\\"routingCodeValue2\\\": \\\"123456789\\\",\\r\\n    \\\"bicSwift\\\": \\\"TGCLGB99\\\",\\r\\n    \\\"iban\\\": \\\"GB33BUKB20201555555555\\\"\\r\\n  },\\r\\n   \\\"originator\\\": {\\r\\n    \\\"entityName\\\": \\\"Cross River Bank\\\",\\r\\n    \\\"firstName\\\": \\\"\\\",\\r\\n    \\\"lastName\\\": \\\"\\\",\\r\\n    \\\"fullName\\\": \\\"Cross River Bank\\\",\\r\\n    \\\"address\\\": \\\"885 Teaneck Road\\\",\\r\\n    \\\"city\\\": \\\"Teaneck\\\",\\r\\n    \\\"state\\\": \\\"NJ\\\",\\r\\n    \\\"postalCode\\\": \\\"07666\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\",\\r\\n    \\\"entityType\\\": \\\"Company\\\",\\r\\n    \\\"birthDate\\\": \\\"2008-06-23\\\",\\r\\n    \\\"identificationType\\\": \\\"IncorporationNumber\\\",\\r\\n    \\\"identificationValue\\\": \\\"0400170263\\\"\\r\\n  },\\r\\n  \\\"priority\\\": true,\\r\\n  \\n  \\n  \\\"purpose\\\": \\\"SRV\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();\n",
        "customLabel": ""
      },
      {
        "id": "GqKqiRejGJIaA4N35sqUp",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/International/v1/quotes\"\n\npayload = \"{\\r\\n  \\\"currency\\\": \\\"gbp\\\",\\r\\n  \\\"accountNumber\\\": \\\"158560897007\\\",\\r\\n  \\\"fromAmount\\\": \\\"500\\\",\\r\\n  \\\"toAmount\\\": \\\"\\\",\\r\\n  \\\"beneficiary\\\": {\\r\\n    \\\"firstName\\\": \\\"Jon\\\",\\r\\n    \\\"lastName\\\": \\\"Smith\\\",\\r\\n    \\n    \\\"fullName\\\": \\\"JonSmith\\\",\\r\\n    \\n    \\\"birthDate\\\": \\\"2001-06-18T13:05:09.015Z\\\",\\r\\n    \\\"address\\\": \\\"1 Street\\\",\\r\\n    \\\"city\\\": \\\"Winfield\\\",\\r\\n    \\\"stateProvince\\\": \\\"\\\",\\r\\n    \\\"postalCode\\\": \\\"GB12345\\\",\\r\\n    \\\"countryCode\\\": \\\"GB\\\",\\r\\n    \\\"entityType\\\": \\\"Individual\\\"\\r\\n  },\\r\\n  \\\"beneficiaryFi\\\": {\\r\\n    \\\"bankName\\\": \\\"Bank UK\\\",\\r\\n    \\\"bankCountryCode\\\": \\\"GB\\\",\\r\\n    \\\"bankAddress\\\": \\\"1 Avenue\\\",\\r\\n    \\\"bankAccountType\\\": \\\"Checking\\\",\\r\\n    \\n    \\\"routingCodeType1\\\": \\\"SortCode\\\",\\r\\n    \\\"routingCodeValue1\\\": \\\"123456789\\\",\\r\\n    \\\"routingCodeType2\\\": \\\"aba\\\",\\r\\n    \\\"routingCodeValue2\\\": \\\"123456789\\\",\\r\\n    \\\"bicSwift\\\": \\\"TGCLGB99\\\",\\r\\n    \\\"iban\\\": \\\"GB33BUKB20201555555555\\\"\\r\\n  },\\r\\n   \\\"originator\\\": {\\r\\n    \\\"entityName\\\": \\\"Cross River Bank\\\",\\r\\n    \\\"firstName\\\": \\\"\\\",\\r\\n    \\\"lastName\\\": \\\"\\\",\\r\\n    \\\"fullName\\\": \\\"Cross River Bank\\\",\\r\\n    \\\"address\\\": \\\"885 Teaneck Road\\\",\\r\\n    \\\"city\\\": \\\"Teaneck\\\",\\r\\n    \\\"state\\\": \\\"NJ\\\",\\r\\n    \\\"postalCode\\\": \\\"07666\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\",\\r\\n    \\\"entityType\\\": \\\"Company\\\",\\r\\n    \\\"birthDate\\\": \\\"2008-06-23\\\",\\r\\n    \\\"identificationType\\\": \\\"IncorporationNumber\\\",\\r\\n    \\\"identificationValue\\\": \\\"0400170263\\\"\\r\\n  },\\r\\n  \\\"priority\\\": true,\\r\\n  \\n  \\n  \\\"purpose\\\": \\\"SRV\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "2JA1pPKgxpBNdD-saaltr",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/International/v1/quotes\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"currency\\\": \\\"gbp\\\",\\r\\n  \\\"accountNumber\\\": \\\"158560897007\\\",\\r\\n  \\\"fromAmount\\\": \\\"500\\\",\\r\\n  \\\"toAmount\\\": \\\"\\\",\\r\\n  \\\"beneficiary\\\": {\\r\\n    \\\"firstName\\\": \\\"Jon\\\",\\r\\n    \\\"lastName\\\": \\\"Smith\\\",\\r\\n    \\n    \\\"fullName\\\": \\\"JonSmith\\\",\\r\\n    \\n    \\\"birthDate\\\": \\\"2001-06-18T13:05:09.015Z\\\",\\r\\n    \\\"address\\\": \\\"1 Street\\\",\\r\\n    \\\"city\\\": \\\"Winfield\\\",\\r\\n    \\\"stateProvince\\\": \\\"\\\",\\r\\n    \\\"postalCode\\\": \\\"GB12345\\\",\\r\\n    \\\"countryCode\\\": \\\"GB\\\",\\r\\n    \\\"entityType\\\": \\\"Individual\\\"\\r\\n  },\\r\\n  \\\"beneficiaryFi\\\": {\\r\\n    \\\"bankName\\\": \\\"Bank UK\\\",\\r\\n    \\\"bankCountryCode\\\": \\\"GB\\\",\\r\\n    \\\"bankAddress\\\": \\\"1 Avenue\\\",\\r\\n    \\\"bankAccountType\\\": \\\"Checking\\\",\\r\\n    \\n    \\\"routingCodeType1\\\": \\\"SortCode\\\",\\r\\n    \\\"routingCodeValue1\\\": \\\"123456789\\\",\\r\\n    \\\"routingCodeType2\\\": \\\"aba\\\",\\r\\n    \\\"routingCodeValue2\\\": \\\"123456789\\\",\\r\\n    \\\"bicSwift\\\": \\\"TGCLGB99\\\",\\r\\n    \\\"iban\\\": \\\"GB33BUKB20201555555555\\\"\\r\\n  },\\r\\n   \\\"originator\\\": {\\r\\n    \\\"entityName\\\": \\\"Cross River Bank\\\",\\r\\n    \\\"firstName\\\": \\\"\\\",\\r\\n    \\\"lastName\\\": \\\"\\\",\\r\\n    \\\"fullName\\\": \\\"Cross River Bank\\\",\\r\\n    \\\"address\\\": \\\"885 Teaneck Road\\\",\\r\\n    \\\"city\\\": \\\"Teaneck\\\",\\r\\n    \\\"state\\\": \\\"NJ\\\",\\r\\n    \\\"postalCode\\\": \\\"07666\\\",\\r\\n    \\\"countryCode\\\": \\\"US\\\",\\r\\n    \\\"entityType\\\": \\\"Company\\\",\\r\\n    \\\"birthDate\\\": \\\"2008-06-23\\\",\\r\\n    \\\"identificationType\\\": \\\"IncorporationNumber\\\",\\r\\n    \\\"identificationValue\\\": \\\"0400170263\\\"\\r\\n  },\\r\\n  \\\"priority\\\": true,\\r\\n  \\n  \\n  \\\"purpose\\\": \\\"SRV\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "COhv1eAwUAi-FTGAMeNqd",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/International/v1/quotes\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"currency\": \"gbp\",`+\"\n\"+`\n  \"accountNumber\": \"158560897007\",`+\"\n\"+`\n  \"fromAmount\": \"500\",`+\"\n\"+`\n  \"toAmount\": \"\",`+\"\n\"+`\n  \"beneficiary\": {`+\"\n\"+`\n    \"firstName\": \"Jon\",`+\"\n\"+`\n    \"lastName\": \"Smith\",`+\"\n\"+`\n    \n    \"fullName\": \"JonSmith\",`+\"\n\"+`\n    \n    \"birthDate\": \"2001-06-18T13:05:09.015Z\",`+\"\n\"+`\n    \"address\": \"1 Street\",`+\"\n\"+`\n    \"city\": \"Winfield\",`+\"\n\"+`\n    \"stateProvince\": \"\",`+\"\n\"+`\n    \"postalCode\": \"GB12345\",`+\"\n\"+`\n    \"countryCode\": \"GB\",`+\"\n\"+`\n    \"entityType\": \"Individual\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"beneficiaryFi\": {`+\"\n\"+`\n    \"bankName\": \"Bank UK\",`+\"\n\"+`\n    \"bankCountryCode\": \"GB\",`+\"\n\"+`\n    \"bankAddress\": \"1 Avenue\",`+\"\n\"+`\n    \"bankAccountType\": \"Checking\",`+\"\n\"+`\n    \n    \"routingCodeType1\": \"SortCode\",`+\"\n\"+`\n    \"routingCodeValue1\": \"123456789\",`+\"\n\"+`\n    \"routingCodeType2\": \"aba\",`+\"\n\"+`\n    \"routingCodeValue2\": \"123456789\",`+\"\n\"+`\n    \"bicSwift\": \"TGCLGB99\",`+\"\n\"+`\n    \"iban\": \"GB33BUKB20201555555555\"`+\"\n\"+`\n  },`+\"\n\"+`\n   \"originator\": {`+\"\n\"+`\n    \"entityName\": \"Cross River Bank\",`+\"\n\"+`\n    \"firstName\": \"\",`+\"\n\"+`\n    \"lastName\": \"\",`+\"\n\"+`\n    \"fullName\": \"Cross River Bank\",`+\"\n\"+`\n    \"address\": \"885 Teaneck Road\",`+\"\n\"+`\n    \"city\": \"Teaneck\",`+\"\n\"+`\n    \"state\": \"NJ\",`+\"\n\"+`\n    \"postalCode\": \"07666\",`+\"\n\"+`\n    \"countryCode\": \"US\",`+\"\n\"+`\n    \"entityType\": \"Company\",`+\"\n\"+`\n    \"birthDate\": \"2008-06-23\",`+\"\n\"+`\n    \"identificationType\": \"IncorporationNumber\",`+\"\n\"+`\n    \"identificationValue\": \"0400170263\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"priority\": true,`+\"\n\"+`\n  \n  \n  \"purpose\": \"SRV\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "SjMPV8wme7MtXozWh2GRT"
  },
  "results": {
    "languages": [
      {
        "id": "Ppg3QgX9zZYt2wDgNb5iL",
        "language": "200",
        "code": "{\n    \"id\": \"1b28600b-6fd7-4e0c-bc50-b39b007a0dc2\",\n    \"accountNumber\": \"158560897007\",\n    \"currency\": \"gbp\",\n    \"beneficiary\": {\n        \"firstName\": \"Jon\",\n        \"lastName\": \"Smith\",\n        \"birthDate\": \"2001-06-18T00:00:00-04:00\",\n        \"address\": \"1 Street\",\n        \"city\": \"Winfield\",\n        \"postalCode\": \"GB12345\",\n        \"countryCode\": \"GB\",\n        \"entityType\": \"Individual\"\n    },\n    \"beneficiaryFi\": {\n        \"bankName\": \"Bank UK\",\n        \"bankCountryCode\": \"GB\",\n        \"bankAddress\": \"1 Avenue\",\n        \"bankAccountType\": \"Checking\",\n        \"routingCodeType1\": \"SortCode\",\n        \"routingCodeValue1\": \"123456789\",\n        \"routingCodeType2\": \"ABA\",\n        \"routingCodeValue2\": \"123456789\",\n        \"bicSwift\": \"TGCLGB99\",\n        \"iban\": \"GB33BUKB20201555555555\"\n    },\n    \"originator\": {\n        \"entityName\": \"Cross River Bank\",\n        \"firstName\": \"\",\n        \"lastName\": \"\",\n        \"address\": \"885 Teaneck Road\",\n        \"city\": \"Teaneck\",\n        \"state\": \"NJ\",\n        \"postalCode\": \"07666\",\n        \"countryCode\": \"US\",\n        \"entityType\": \"Company\",\n        \"birthDate\": \"2008-06-23\",\n        \"identificationType\": \"IncorporationNumber\",\n        \"identificationValue\": \"0400170263\"\n    },\n    \"fromAmount\": 500,\n    \"toAmount\": 394,\n    \"transactionFee\": 100,\n    \"conversionRate\": 0.7889,\n    \"estimatedDeliveryDate\": \"2025-11-20\",\n    \"expiresAt\": \"2025-11-20T02:25:23.3897333-05:00\",\n    \"status\": \"Created\",\n    \"priority\": true,\n    \"paymentNetwork\": \"Priority\",\n    \"purpose\": \"SRV\"\n}\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Ppg3QgX9zZYt2wDgNb5iL"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "currency",
        "kind": "required",
        "type": "string",
        "description": "Currency the customer is converting funds into. 3-letter ISO currency code.  ",
        "": "Currency the customer is converting funds into. 3-letter ISO currency code.  "
      },
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of the sending Cross River account",
        "": "Account number of the sending Cross River account"
      },
      {
        "name": "fromAmount",
        "kind": "optional",
        "type": "Integer",
        "description": "The amount in USD to be transferred.\nLeave blank if you provide a toAmount.\nLeave out the decimal point between the dollars and the cents.\n",
        "": "The amount in USD to be transferred.\nLeave blank if you provide a toAmount.\nLeave out the decimal point between the dollars and the cents.\n"
      },
      {
        "name": "toAmount",
        "kind": "optional",
        "type": "Integer",
        "description": "The amount in the specified currency to be received.\nLeave blank if you provide a fromAmount.\nLeave out the decimal point between the dollars and the cents.",
        "": "The amount in the specified currency to be received.\nLeave blank if you provide a fromAmount.\nLeave out the decimal point between the dollars and the cents."
      },
      {
        "name": "beneficiary",
        "kind": "optional",
        "type": "Object",
        "description": "The individual or company who gets the payment",
        "children": [
          {
            "name": "firstName",
            "kind": "optional",
            "type": "string",
            "description": "First name of the beneficiary of the funds. Required if entityType is individual"
          },
          {
            "name": "lastName",
            "kind": "optional",
            "type": "string",
            "description": "Last name of the beneficiary of the funds. Required if entityType is individual"
          },
          {
            "name": "companyName",
            "kind": "optional",
            "type": "string",
            "description": "Name of the beneficiary company. Required if entityType is company."
          },
          {
            "name": "email",
            "kind": "optional",
            "type": "string",
            "description": "Email of the beneficiary company. "
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "If entityType is company, date of registration. If entityType is individual, date of birth. The date and time are in this format: \"yyyy-mm-dd\""
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "string",
            "description": "Complete beneficiary street address"
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary city"
          },
          {
            "name": "stateProvince",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary state or province"
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary postal or ZIP code."
          },
          {
            "name": "countryCode",
            "kind": "optional",
            "type": "string",
            "description": "Two-letter ISO country code. For a company entity, the country where it is registered. For an individual, the country where they're based.  Required if entityType is individual"
          },
          {
            "name": "entityType",
            "kind": "optional",
            "type": "string",
            "description": "Legal status of the entity, whether beneficiary or originator:\n- Individual\n- Company\n\nThe default value is individual.\nFor China this can only be Company."
          }
        ],
        "schema": [
          {
            "name": "firstName",
            "kind": "optional",
            "type": "string",
            "description": "First name of the beneficiary of the funds. Required if entityType is individual"
          },
          {
            "name": "lastName",
            "kind": "optional",
            "type": "string",
            "description": "Last name of the beneficiary of the funds. Required if entityType is individual"
          },
          {
            "name": "companyName",
            "kind": "optional",
            "type": "string",
            "description": "Name of the beneficiary company. Required if entityType is company."
          },
          {
            "name": "email",
            "kind": "optional",
            "type": "string",
            "description": "Email of the beneficiary company. "
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "If entityType is company, date of registration. If entityType is individual, date of birth. The date and time are in this format: \"yyyy-mm-dd\""
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "string",
            "description": "Complete beneficiary street address"
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary city"
          },
          {
            "name": "stateProvince",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary state or province"
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary postal or ZIP code."
          },
          {
            "name": "countryCode",
            "kind": "optional",
            "type": "string",
            "description": "Two-letter ISO country code. For a company entity, the country where it is registered. For an individual, the country where they're based.  Required if entityType is individual"
          },
          {
            "name": "entityType",
            "kind": "optional",
            "type": "string",
            "description": "Legal status of the entity, whether beneficiary or originator:\n- Individual\n- Company\n\nThe default value is individual.\nFor China this can only be Company."
          }
        ]
      },
      {
        "name": "beneficiaryFi",
        "kind": "optional",
        "type": "Object",
        "description": "Details of the beneficiary's financial institution (where the payment goes)",
        "children": [
          {
            "name": "bankName",
            "kind": "required",
            "type": "string",
            "description": "Name of the beneficiary's bank"
          },
          {
            "name": "bankCountryCode",
            "kind": "required",
            "type": "string",
            "description": "Two-letter code for the country where the beneficiary's bank account is held"
          },
          {
            "name": "bankAddress",
            "kind": "optional",
            "type": "string",
            "description": "Street address of the Beneficiary's bank"
          },
          {
            "name": "bankAccountType",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary bank account type:\n- Checking\n- Savings"
          },
          {
            "name": "accountNumber",
            "kind": "optional",
            "type": "string",
            "description": "Account number receiving the payment. Maximum n characters.\n\nIf you provide the IBAN number, do not provide an account number.\nFor payments to Mexico, this field must be left blank."
          },
          {
            "name": "routingCodeType1",
            "kind": "optional",
            "type": "string",
            "description": "Local payment routing system type. If supplied, you must also give the actual code for routingCodeValue1.\nFor payments to Mexico, this field must be populated with Clabe.\nFor payments to China, this field must be populated with Cnap\n\nList of routing codes, of which Mexico and China are not optional:\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
          },
          {
            "name": "routingCodeValue1",
            "kind": "optional",
            "type": "string",
            "description": "Routing code of the routing code type.\n\nRequired if you supply a value for routingCodeType1.\nFor payments to Mexico, this field must be populated with the Clabe 18 digit number.\n"
          },
          {
            "name": "routingCodeType2",
            "kind": "optional",
            "type": "string",
            "description": "Sometimes certain corridors will require 2 routing codes. In that case, use this attribute for the second code type. If supplied, you must also give the actual code for routingCodeValue2.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
          },
          {
            "name": "routingCodeValue2",
            "kind": "optional",
            "type": "string",
            "description": "Routing code of the routing code type.\nRequired if you supplied a value for routingCodeType2."
          },
          {
            "name": "bicSwift",
            "kind": "optional",
            "type": "string",
            "description": "BIC/SWIFT code of the beneficiary FI"
          },
          {
            "name": "iban",
            "kind": "optional",
            "type": "string",
            "description": "IBAN number of the beneficiary FI\nIf you provide a beneficiary account number, do not provide an IBAN number.\nFor payments to Mexico, this field must be left blank."
          }
        ],
        "schema": [
          {
            "name": "bankName",
            "kind": "required",
            "type": "string",
            "description": "Name of the beneficiary's bank"
          },
          {
            "name": "bankCountryCode",
            "kind": "required",
            "type": "string",
            "description": "Two-letter code for the country where the beneficiary's bank account is held"
          },
          {
            "name": "bankAddress",
            "kind": "optional",
            "type": "string",
            "description": "Street address of the Beneficiary's bank"
          },
          {
            "name": "bankAccountType",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary bank account type:\n- Checking\n- Savings"
          },
          {
            "name": "accountNumber",
            "kind": "optional",
            "type": "string",
            "description": "Account number receiving the payment. Maximum n characters.\n\nIf you provide the IBAN number, do not provide an account number.\nFor payments to Mexico, this field must be left blank."
          },
          {
            "name": "routingCodeType1",
            "kind": "optional",
            "type": "string",
            "description": "Local payment routing system type. If supplied, you must also give the actual code for routingCodeValue1.\nFor payments to Mexico, this field must be populated with Clabe.\nFor payments to China, this field must be populated with Cnap\n\nList of routing codes, of which Mexico and China are not optional:\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
          },
          {
            "name": "routingCodeValue1",
            "kind": "optional",
            "type": "string",
            "description": "Routing code of the routing code type.\n\nRequired if you supply a value for routingCodeType1.\nFor payments to Mexico, this field must be populated with the Clabe 18 digit number.\n"
          },
          {
            "name": "routingCodeType2",
            "kind": "optional",
            "type": "string",
            "description": "Sometimes certain corridors will require 2 routing codes. In that case, use this attribute for the second code type. If supplied, you must also give the actual code for routingCodeValue2.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
          },
          {
            "name": "routingCodeValue2",
            "kind": "optional",
            "type": "string",
            "description": "Routing code of the routing code type.\nRequired if you supplied a value for routingCodeType2."
          },
          {
            "name": "bicSwift",
            "kind": "optional",
            "type": "string",
            "description": "BIC/SWIFT code of the beneficiary FI"
          },
          {
            "name": "iban",
            "kind": "optional",
            "type": "string",
            "description": "IBAN number of the beneficiary FI\nIf you provide a beneficiary account number, do not provide an IBAN number.\nFor payments to Mexico, this field must be left blank."
          }
        ]
      },
      {
        "name": "originator",
        "kind": "required",
        "type": "object",
        "description": "Originator of the payment\n\nIf your entity type is individual then the required fields are: \nFirst Name\nLast Name\nBirth Date\nAddress\nCity\nState\nCountry Code\n\nIf your entity type is company then the required fields are:\nEntity Name\nAddress\nCity\nState\nPostal Code \nCountry Code\nIdentification Type\nIdentification Value",
        "": "Originator of the payment\n\nIf your entity type is individual then the required fields are: \nFirst Name\nLast Name\nBirth Date\nAddress\nCity\nState\nCountry Code\n\nIf your entity type is company then the required fields are:\nEntity Name\nAddress\nCity\nState\nPostal Code \nCountry Code\nIdentification Type\nIdentification Value",
        "children": [
          {
            "name": "entityName",
            "kind": "optional",
            "type": "string",
            "description": "Name of the company. Required if originator is company."
          },
          {
            "name": "firstName",
            "kind": "optional",
            "type": "string",
            "description": "First name of the originator of the funds. Required if originator is individual."
          },
          {
            "name": "lastName",
            "kind": "optional",
            "type": "string",
            "description": "Last name of the originator of the funds. Required if originator is individual."
          },
          {
            "name": "fullName",
            "kind": "optional",
            "type": "string",
            "description": "Full name of the originator of the funds. Required if originator is individual\naddress. "
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "string",
            "description": "Address of the originator of the funds. Required if originator is individual or company."
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "Originator city. Required if originator is individual or company."
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "Originator state. Required if originator is individual or company."
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Originator postal or ZIP code. Required if originator is individual or company."
          },
          {
            "name": "countryCode",
            "kind": "optional",
            "type": "string",
            "description": "As Cross River currently only support US based origination, this must be US. Two-letter ISO country code. For a company entity, the country where it is registered. For an individual, the country where they're based. Required if originator is individual or company."
          },
          {
            "name": "entityType",
            "kind": "optional",
            "type": "string",
            "description": "Choose from:\n- Individual \n- Company \n\nFor China this can only be Company."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Date of birth. The date is in this format: \"yyyy-mm-dd\". Required if originator is individual."
          },
          {
            "name": "identificationType",
            "kind": "optional",
            "type": "string",
            "description": "This has to be the IncorporationNumber. Required if originator is company."
          },
          {
            "name": "identificationValue",
            "kind": "optional",
            "type": "string",
            "description": "Business EIN (Employer Identification Number). Required if originator is company."
          }
        ],
        "schema": [
          {
            "name": "entityName",
            "kind": "optional",
            "type": "string",
            "description": "Name of the company. Required if originator is company."
          },
          {
            "name": "firstName",
            "kind": "optional",
            "type": "string",
            "description": "First name of the originator of the funds. Required if originator is individual."
          },
          {
            "name": "lastName",
            "kind": "optional",
            "type": "string",
            "description": "Last name of the originator of the funds. Required if originator is individual."
          },
          {
            "name": "fullName",
            "kind": "optional",
            "type": "string",
            "description": "Full name of the originator of the funds. Required if originator is individual\naddress. "
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "string",
            "description": "Address of the originator of the funds. Required if originator is individual or company."
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "Originator city. Required if originator is individual or company."
          },
          {
            "name": "state",
            "kind": "optional",
            "type": "string",
            "description": "Originator state. Required if originator is individual or company."
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Originator postal or ZIP code. Required if originator is individual or company."
          },
          {
            "name": "countryCode",
            "kind": "optional",
            "type": "string",
            "description": "As Cross River currently only support US based origination, this must be US. Two-letter ISO country code. For a company entity, the country where it is registered. For an individual, the country where they're based. Required if originator is individual or company."
          },
          {
            "name": "entityType",
            "kind": "optional",
            "type": "string",
            "description": "Choose from:\n- Individual \n- Company \n\nFor China this can only be Company."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Date of birth. The date is in this format: \"yyyy-mm-dd\". Required if originator is individual."
          },
          {
            "name": "identificationType",
            "kind": "optional",
            "type": "string",
            "description": "This has to be the IncorporationNumber. Required if originator is company."
          },
          {
            "name": "identificationValue",
            "kind": "optional",
            "type": "string",
            "description": "Business EIN (Employer Identification Number). Required if originator is company."
          }
        ]
      },
      {
        "name": "priority",
        "kind": "optional",
        "type": "Boolean",
        "description": "True if the transfer is via swift.\nFalse if the transfer is via local rail. \n\nIf you don't supply a value, the default is False.",
        "": "True if the transfer is via swift.\nFalse if the transfer is via local rail. \n\nIf you don't supply a value, the default is False."
      },
      {
        "name": "conversionFeeBps",
        "kind": "optional",
        "type": "Integer",
        "description": "Requested fee for conversion of the funds using basis points (BPS) added onto the foreign exchange rate and earned by the COS partner into their specified account. The fee is added onto the foreign exchange rate when returned in the response. A basis point is 1/100th of a percent of the funds to be transferred.\n\nPartners must be approved to use this attribute to earn conversion fees.",
        "children": []
      },
      {
        "name": "transactionFeeAmount",
        "kind": "optional",
        "type": "Integer",
        "description": "The requested flat fee amount for the transaction in USD earned by the COS partner into their specified account.",
        "": "The requested flat fee amount for the transaction in USD earned by the COS partner into their specified account."
      },
      {
        "name": "purposeCode",
        "kind": "optional",
        "type": "string",
        "description": "Required for payments to China (CN), India (INR), Malaysia (MYR), and United Arab Emirates (AED). See our Payment purpose codes page for additional details.",
        "": "Required for payments to China (CN), India (INR), Malaysia (MYR), and United Arab Emirates (AED). See our Payment purpose codes page for additional details."
      },
      {
        "name": "invoiceNumber",
        "kind": "optional",
        "type": "string",
        "description": "Necessary when making trade-related INR payments, check our Payment purpose codes page for additional details.  1-30 characters. Alphanumeric only. ",
        "": "Necessary when making trade-related INR payments, check our Payment purpose codes page for additional details.  1-30 characters. Alphanumeric only. "
      },
      {
        "name": "invoiceDate",
        "kind": "optional",
        "type": "string",
        "description": "Necessary when making trade-related INR payments.  See our Payment purpose codes page for additional details. ISO 8601 format (YYYY-MM-DD).",
        "": "Necessary when making trade-related INR payments.  See our Payment purpose codes page for additional details. ISO 8601 format (YYYY-MM-DD)."
      },
      {
        "name": "purpose",
        "kind": "required",
        "type": "string",
        "description": "A 1-50 character code that indicates the reason for a transaction. ",
        "": "A 1-50 character code that indicates the reason for a transaction. "
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The quote ID. You must use this GUID format ID when you originate a payment."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of the sending Cross River account",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency the customer is converting funds into. 3-letter ISO currency code.",
      "children": []
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "Object",
      "description": "The individual or company who gets the payment",
      "children": [
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name of the beneficiary of the funds. Required if entityType is individual"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name of the beneficiary of the funds. Required if entityType is individual"
        },
        {
          "name": "companyName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the beneficiary company. Required if entityType is company."
        },
        {
          "name": "email",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary's email address, whether a company or an individual"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "If entityType is company, date of registration. If entityType is individual, date of birth. The date and time are in this format: \"yyyy-mm-dd\""
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "string",
          "description": "Complete beneficiary street address"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary city"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary state or province"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary postal or ZIP code."
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter ISO country code. For a company entity, the country where it's registered. For an individual, the country where they're based."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Legal status of the entity, whether beneficiary or originator:\n\n- Individual\n- Company\n\nThe default value is individual."
        }
      ]
    },
    {
      "name": "beneficiaryFi",
      "kind": "optional",
      "type": "Object",
      "description": "Details of the beneficiary's financial institution (where the payment goes)",
      "children": [
        {
          "name": "bankName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the beneficiary's bank"
        },
        {
          "name": "bankCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter code for the country where the beneficiary's bank account is held"
        },
        {
          "name": "bankAddress",
          "kind": "optional",
          "type": "string",
          "description": "Street address of the Beneficiary's bank"
        },
        {
          "name": "bankAccountType",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary bank account type:\n\n- Checking\n- Savings"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number receiving the payment. Maximum n characters."
        },
        {
          "name": "routingCodeType1",
          "kind": "optional",
          "type": "string",
          "description": "Local payment routing system type. If supplied, you must also give the actual code for routingCodeValue1.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
        },
        {
          "name": "routingCodeValue1",
          "kind": "optional",
          "type": "string",
          "description": "Routing code of the routing code type.\n\nRequired if you supply a value for routingCodeType1."
        },
        {
          "name": "routingCodeType2",
          "kind": "optional",
          "type": "string",
          "description": "Sometimes certain corridors will require 2 routing codes. In that case, use this attribute for the second code type. If supplied, you must also give the actual code for routingCodeValue2.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
        },
        {
          "name": "routingCodeValue2",
          "kind": "optional",
          "type": "string",
          "description": "Routing code of the routing code type.\nRequired if you supplied a value for routingCodeType2."
        },
        {
          "name": "bicSwift",
          "kind": "optional",
          "type": "string",
          "description": "BIC/SWIFT code of the beneficiary FI"
        },
        {
          "name": "iban",
          "kind": "optional",
          "type": "string",
          "description": "IBAN number of the beneficiary FI"
        }
      ]
    },
    {
      "name": "Originator",
      "kind": "optional",
      "type": "object",
      "description": "Originator of the payment",
      "children": [
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the company."
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name of the originator of the funds."
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name of the originator of the funds."
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Full name of the originator of the funds."
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "string",
          "description": "Address of the originator of the funds."
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Originator city."
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Originator state."
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Originator postal or ZIP code."
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter ISO country code."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Either Individual or Company."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "If entityType is company, date of registration. If entityType is individual, date of birth. The date is in this format: yyyy-mm-dd"
        },
        {
          "name": "identificationType",
          "kind": "optional",
          "type": "string",
          "description": "This has to be the IncorporationNumber"
        },
        {
          "name": "identificationValue",
          "kind": "optional",
          "type": "string",
          "description": "Business EIN (Employer Identification Number)."
        }
      ]
    },
    {
      "name": "fromAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount in USD to be transferred",
      "children": []
    },
    {
      "name": "toAmount",
      "kind": "optional",
      "type": "integer",
      "description": "The amount in the specified currency to be received",
      "children": []
    },
    {
      "name": "transactionFee",
      "kind": "optional",
      "type": "Integer",
      "description": "Total fee. A combination of the fee charged by CR and that earned by the requesting partner, debited from the originating account",
      "children": []
    },
    {
      "name": "conversionRate",
      "kind": "optional",
      "type": "Number",
      "description": "The executable conversion rate between the dollar amount and the foreign currency. The conversion rate is typically valid for only 60 seconds.",
      "children": []
    },
    {
      "name": "estimatedDeliveryDate",
      "kind": "optional",
      "type": "string",
      "description": "Estimate delivery date of the quote.\nThe date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "expiresAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time of quote expiration. Payment must be executed by the expiration to be accepted.\n\nThe date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the quote:\n\n- Created\n- Executed\n",
      "children": []
    },
    {
      "name": "priority",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the transfer is via swift.\nFalse if the transfer is via local rail. \n\nIf you don't supply a value, the default is False.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "A 1-50 character code that indicates the reason for a transaction. ",
      "children": []
    },
    {
      "name": "purposeCode",
      "kind": "optional",
      "type": "string",
      "description": "Required for payments to India (INR), Malaysia (MYR), and United Arab Emirates (AED). Check our Payment purpose codes page for additional details.",
      "children": []
    },
    {
      "name": "invoiceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Necessary when making trade-related INR payments, check our Payment purpose codes page for additional details.  Alphanumeric only. 1-30 characters.",
      "children": []
    },
    {
      "name": "invoiceDate",
      "kind": "optional",
      "type": "string",
      "description": "Necessary when making trade-related INR payments, check our Payment purpose codes page for additional details. ISO 8601 format (YYYY-MM-DD).",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-internationalv1quotes",
  "legacyHash": "1XYT7N6AdpgUwNXvHpQJz"
}
```
:::

:::hint{type="info"}
For additional information, refer to our [International payments](docId:0mIEXzUcyTurPvZq13y1Z) tutorial.
:::


[title] Payment request
[path] Payments/Instant payments/APIs/

## Relevant webhooks

For this endpoint be sure you have [Register](docId\:XPfsj7tlk8KwqJr-bqpY3) for these webhooks:

- [Rtp.Payment.Received](docId\:ffGq2OHYEbWPzn2old6Mc)&#x20;
- [Rtp.Payment.Expired](docId\:ffGq2OHYEbWPzn2old6Mc)&#x20;
- [Rtp.Payment.Rejected](docId\:ffGq2OHYEbWPzn2old6Mc)&#x20;

## API reference

Initiates a request for payment (RfP)
Allows the recipient to authorize and trigger an instant payment credit transfer. RfPs can be initiated from:

- Master account
- Deposit account (DDA)
- Associated subledger

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/v1/payments/payment-request",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/payment-request",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "tiU4cYZv2OBskCr5TaQ-D",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/rtp/v1/payments/payment-request' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"accountNumber\": \"2564791479\",\n    \"amount\": 20000,\n    \"discount\": 1000,\n    \"debtor\": {\n        \"routingNumber\": \"071212128\",\n        \"accountNumber\": \"2758463448\",\n        \"name\": \"Terry Tester\",\n        \"birthCity\": \"Pine Brook\",\n        \"birthCountry\": \"US\",\n        \"birthDate\": \"1996-08-09\",\n        \"addressStreetName\": \"Linwood Ave\",\n        \"addressBuildingNumber\": \"2115\",\n        \"addressCity\": \"Pine Brook\",\n        \"addressState\": \"NJ\",\n        \"addressPostalCode\": \"07024\",\n        \"addressCountry\": \"US\"\n    },\n    \"creditor\": {\n        \"accountNumber\": \"2564791479\",\n        \"name\": \"the creditor\"\n    },\n    \"purpose\": \"Test Payment 2\",\n    \"clientIdentifier\": \"123456\",\n    \"requestedExecutionDate\": \"2025-08-10\",\n    \"expiryDate\": \"2025-08-16\",\n    \"senderId\": \"100000001\",\n    \"useCase\": \"BusinessToBusiness\",\n    \"industryCategory\": \"OnlineGaming\"\n}'",
        "customLabel": ""
      },
      {
        "id": "2YWx4qreq-R5gXud3QE83",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'POST',\n  'url': 'https://sandbox.crbcos.com/rtp/v1/payments/payment-request',\n  'headers': {\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    \"accountNumber\": \"2564791479\",\n    \"amount\": 20000,\n    \"discount\": 1000,\n    \"debtor\": {\n      \"routingNumber\": \"071212128\",\n      \"accountNumber\": \"2758463448\",\n      \"name\": \"Terry Tester\",\n      \"birthCity\": \"Pine Brook\",\n      \"birthCountry\": \"US\",\n      \"birthDate\": \"1996-08-09\",\n      \"addressStreetName\": \"Linwood Ave\",\n      \"addressBuildingNumber\": \"2115\",\n      \"addressCity\": \"Pine Brook\",\n      \"addressState\": \"NJ\",\n      \"addressPostalCode\": \"07024\",\n      \"addressCountry\": \"US\"\n    },\n    \"creditor\": {\n      \"accountNumber\": \"2564791479\",\n      \"name\": \"the creditor\"\n    },\n    \"purpose\": \"Test Payment 2\",\n    \"clientIdentifier\": \"123456\",\n    \"requestedExecutionDate\": \"2025-08-10\",\n    \"expiryDate\": \"2025-08-16\",\n    \"senderId\": \"100000001\",\n    \"useCase\": \"BusinessToBusiness\",\n    \"industryCategory\": \"OnlineGaming\"\n  })\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "YOHQfOuM8rgbNoWxp-x0u",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/rtp/v1/payments/payment-request\"\n\npayload = json.dumps({\n  \"accountNumber\": \"2564791479\",\n  \"amount\": 20000,\n  \"discount\": 1000,\n  \"debtor\": {\n    \"routingNumber\": \"071212128\",\n    \"accountNumber\": \"2758463448\",\n    \"name\": \"Terry Tester\",\n    \"birthCity\": \"Pine Brook\",\n    \"birthCountry\": \"US\",\n    \"birthDate\": \"1996-08-09\",\n    \"addressStreetName\": \"Linwood Ave\",\n    \"addressBuildingNumber\": \"2115\",\n    \"addressCity\": \"Pine Brook\",\n    \"addressState\": \"NJ\",\n    \"addressPostalCode\": \"07024\",\n    \"addressCountry\": \"US\"\n  },\n  \"creditor\": {\n    \"accountNumber\": \"2564791479\",\n    \"name\": \"the creditor\"\n  },\n  \"purpose\": \"Test Payment 2\",\n  \"clientIdentifier\": \"123456\",\n  \"requestedExecutionDate\": \"2025-08-10\",\n  \"expiryDate\": \"2025-08-16\",\n  \"senderId\": \"100000001\",\n  \"useCase\": \"BusinessToBusiness\",\n  \"industryCategory\": \"OnlineGaming\"\n})\nheaders = {\n  'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "PO3dR-zN2juLY7vnhKT_l",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/rtp/v1/payments/payment-request\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n  \"accountNumber\": \"2564791479\",\n  \"amount\": 20000,\n  \"discount\": 1000,\n  \"debtor\": {\n    \"routingNumber\": \"071212128\",\n    \"accountNumber\": \"2758463448\",\n    \"name\": \"Terry Tester\",\n    \"birthCity\": \"Pine Brook\",\n    \"birthCountry\": \"US\",\n    \"birthDate\": \"1996-08-09\",\n    \"addressStreetName\": \"Linwood Ave\",\n    \"addressBuildingNumber\": \"2115\",\n    \"addressCity\": \"Pine Brook\",\n    \"addressState\": \"NJ\",\n    \"addressPostalCode\": \"07024\",\n    \"addressCountry\": \"US\"\n  },\n  \"creditor\": {\n    \"accountNumber\": \"2564791479\",\n    \"name\": \"the creditor\"\n  },\n  \"purpose\": \"Test Payment 2\",\n  \"clientIdentifier\": \"123456\",\n  \"requestedExecutionDate\": \"2025-08-10\",\n  \"expiryDate\": \"2025-08-16\",\n  \"senderId\": \"100000001\",\n  \"useCase\": \"BusinessToBusiness\",\n  \"industryCategory\": \"OnlineGaming\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "PuudTHa7YBQRHtGMWLBRm",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/rtp/v1/payments/payment-request\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"accountNumber\": \"2564791479\",`+\"\n\"+`\n    \"amount\": 20000,`+\"\n\"+`\n    \"discount\": 1000,`+\"\n\"+`\n    \"debtor\": {`+\"\n\"+`\n        \"routingNumber\": \"071212128\",`+\"\n\"+`\n        \"accountNumber\": \"2758463448\",`+\"\n\"+`\n        \"name\": \"Terry Tester\",`+\"\n\"+`\n        \"birthCity\": \"Pine Brook\",`+\"\n\"+`\n        \"birthCountry\": \"US\",`+\"\n\"+`\n        \"birthDate\": \"1996-08-09\",`+\"\n\"+`\n        \"addressStreetName\": \"Linwood Ave\",`+\"\n\"+`\n        \"addressBuildingNumber\": \"2115\",`+\"\n\"+`\n        \"addressCity\": \"Pine Brook\",`+\"\n\"+`\n        \"addressState\": \"NJ\",`+\"\n\"+`\n        \"addressPostalCode\": \"07024\",`+\"\n\"+`\n        \"addressCountry\": \"US\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"creditor\": {`+\"\n\"+`\n        \"accountNumber\": \"2564791479\",`+\"\n\"+`\n        \"name\": \"the creditor\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"purpose\": \"Test Payment 2\",`+\"\n\"+`\n    \"clientIdentifier\": \"123456\",`+\"\n\"+`\n    \"requestedExecutionDate\": \"2025-08-10\",`+\"\n\"+`\n    \"expiryDate\": \"2025-08-16\",`+\"\n\"+`\n    \"senderId\": \"100000001\",`+\"\n\"+`\n    \"useCase\": \"BusinessToBusiness\",`+\"\n\"+`\n    \"industryCategory\": \"OnlineGaming\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tiU4cYZv2OBskCr5TaQ-D"
  },
  "results": {
    "languages": [
      {
        "id": "ZA7E-VGG1EUptPxfRE3CS",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"8ee74810-45fe-47ee-9569-b30500b8d6ae\",\n    \"originalPaymentId\": \"8ee74810-45fe-47ee-9569-b30500b8d6ae\",\n    \"referenceId\": \"R174OI808VYXJ\",\n    \"accountNumber\": \"2955057589\",\n    \"clientIdentifier\": \"123456\",\n    \"amount\": 19000,\n    \"direction\": \"Outbound\",\n    \"status\": \"Created\",\n    \"paymentType\": \"RequestForPayment\",\n    \"source\": \"Api\",\n    \"transactionAccountContext\": \"NotSubmitted\",\n    \"debtor\": {\n        \"routingNumber\": \"011000138\",\n        \"accountNumber\": \"2758463448\",\n        \"name\": \"Terry Tester\",\n        \"birthCity\": \"Pine Brook\",\n        \"birthCountry\": \"US\",\n        \"birthDate\": \"1996-08-09\",\n        \"addressStreetName\": \"Linwood Ave\",\n        \"addressBuildingNumber\": \"2115\",\n        \"addressCity\": \"Pine Brook\",\n        \"addressState\": \"NJ\",\n        \"addressPostalCode\": \"07024\",\n        \"addressCountry\": \"US\"\n    },\n    \"creditor\": {\n        \"routingNumber\": \"021214891\",\n        \"accountNumber\": \"2955057589\",\n        \"name\": \"Dim Mak\",\n        \"addressStreetName\": \"400 Kelby St\",\n        \"addressCity\": \"Fort Lee\",\n        \"addressState\": \"NJ\",\n        \"addressPostalCode\": \"07024\",\n        \"addressCountry\": \"US\"\n    },\n    \"network\": {\n        \"clearingSystemCode\": \"TCH\",\n        \"currency\": \"USD\",\n        \"endToEndId\": \"6909c29416f0453fbdfdb30500b8d6ae\",\n        \"instructionId\": \"20250623021214273T1B19TS07136537534\",\n        \"interbankSettlementAmount\": 19000,\n        \"interbankSettlementDate\": \"2025-06-23\",\n        \"messageId\": \"M20250623021214273T1BDQK15672530466\",\n        \"numberOfTransactions\": 1,\n        \"settlementMethod\": \"CLRG\",\n        \"businessMessageId\": \"B20250623021214273T1BPRK46725920502\",\n        \"toParticipantId\": \"990000001S1\",\n        \"fromParticipantId\": \"021214273T1\",\n        \"instructingRoutingNumber\": \"021214891\",\n        \"instructedRoutingNumber\": \"011000138\",\n        \"headerCreationDate\": \"2025-06-23T07:12:58.6058948-04:00\",\n        \"messageCreationDateTime\": \"2025-06-23T07:12:58.6058948-04:00\",\n        \"createdAt\": \"2025-06-23T07:12:58.6058948-04:00\"\n    },\n    \"serviceLevelCode\": \"SDVA\",\n    \"localInstrumentProprietary\": \"STANDARD\",\n    \"categoryPurpose\": \"CONSUMER\",\n    \"currency\": \"USD\",\n    \"chargeBearer\": \"SLEV\",\n    \"paymentInfoId\": \"20250623021214273T1B19TS07136537534\",\n    \"reqExecutionDate\": {\n        \"date\": \"2025-08-10T00:00:00-04:00\",\n        \"dateType\": \"DtTm\"\n    },\n    \"expiryDate\": {\n        \"date\": \"2025-08-16T00:00:00-04:00\",\n        \"dateType\": \"DtTm\"\n    },\n    \"paymentConditions\": {\n        \"amountModAllowed\": false,\n        \"earlyPayAllowed\": true,\n        \"acceptedAmount\": 19000\n    },\n    \"purpose\": \"Test Payment 2\",\n    \"useCase\": \"BusinessToBusiness\",\n    \"industryCategory\": \"OnlineGaming\",\n    \"senderID\": \"10000000000\",\n    \"wasRefunded\": false,\n    \"wasPaid\": false,\n    \"createdAt\": \"2025-06-23T07:12:58.6058948-04:00\",\n    \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"lastModifiedAt\": \"2025-06-23T07:12:58.6380956-04:00\",\n    \"sendAttemptCount\": 0,\n    \"discounts\": [\n        {\n            \"type\": \"DSCT\",\n            \"amount\": 1000,\n            \"currency\": \"USD\"\n        },\n        {\n            \"type\": \"FULL\",\n            \"amount\": 20000,\n            \"currency\": \"USD\"\n        }\n    ],\n    \"awaitingResponse\": false,\n    \"networkPlatform\": \"TCH\"\n}"
      },
      {
        "id": "on1Q4ouoLk2zFiLK12wlc",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2045,\n            \"message\": \"Receiver does not support Request For Payment\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ZA7E-VGG1EUptPxfRE3CS"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account from which the RfP is originated"
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "Integer",
        "description": "Requested payment amount in positive integeral cents. For example, represent $1.00 as 100.",
        "children": []
      },
      {
        "name": "purpose",
        "kind": "optional",
        "type": "string",
        "description": "Internal CR field used to include a short description or purpose for the payment request. The RDFI does not see this field. 50 characters maximum.",
        "children": []
      },
      {
        "name": "requestedExecutionDate",
        "kind": "required",
        "type": "string",
        "description": "Date when the payment request needs to be processed by the Debtor. Formatted as yyyy-mm-ddThh:mm:ss[.mmm].",
        "children": []
      },
      {
        "name": "expiryDate",
        "kind": "required",
        "type": "string",
        "description": "Expiration date and time of the RfP. If no time is specified, it expires at 12:00 AM on the given date. If a time is provided, it expires within one hour after the specified time on the same date. Formatted as yyyy-mm-ddThh:mm:ss[.mmm].",
        "children": []
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. 50 characters maximum.",
        "children": []
      },
      {
        "name": "remittanceData",
        "kind": "optional",
        "type": "string",
        "description": "A description of the payment request, meaning, the remittance advice. Use this field for any remittance information that doesn't have its own field. 140 characters maximum.",
        "children": []
      },
      {
        "name": "remittanceLocation",
        "kind": "optional",
        "type": "Object",
        "description": "Remittance location information",
        "children": [
          {
            "name": "method",
            "kind": "optional",
            "type": "string",
            "description": "Method used to deliver the remittance advice information: EMAIL or URID"
          },
          {
            "name": "eAddress",
            "kind": "optional",
            "type": "string",
            "description": "The electronic address where the agent should send the remittance information. This is only populated if the method value is EMAIL."
          }
        ]
      },
      {
        "name": "debtor",
        "kind": "required",
        "type": "Object",
        "description": "Debtor Personal/Business information. Debtor is the individual receiving the Request for Payment. Please note: For the debtor, name and one additional element like [birthCity, birthCountry, birthdate], [orgLegalEntityId/LEI], OR [addressStreetName, addressCity, addressState, addressPostalCode, and addressCountry] are required as per RfP business rules.",
        "children": [
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name of entity. 140 characters maximum."
          },
          {
            "name": "birthCity",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth city. 35 characters maximum."
          },
          {
            "name": "birthcountry",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth date. Formatted as yyyy-mm-dd."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          },
          {
            "name": "routingNumber",
            "kind": "required",
            "type": "string",
            "description": "9-digit routing number of the financial institution"
          },
          {
            "name": "phoneNumber",
            "kind": "optional",
            "type": "string",
            "description": "10 characters maximum"
          }
        ],
        "schema": [
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name of entity. 140 characters maximum."
          },
          {
            "name": "birthCity",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth city. 35 characters maximum."
          },
          {
            "name": "birthcountry",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth date. Formatted as yyyy-mm-dd."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          },
          {
            "name": "routingNumber",
            "kind": "required",
            "type": "string",
            "description": "9-digit routing number of the financial institution"
          },
          {
            "name": "phoneNumber",
            "kind": "optional",
            "type": "string",
            "description": "10 characters maximum"
          }
        ]
      },
      {
        "name": "ultimateDebtor",
        "kind": "optional",
        "type": "Object",
        "description": "Ultimate Debtor Business/Individual Information. The final party receiving the RfP and responsible for initiating the credit transfer upon authorization. ",
        "children": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name of entity. 140 characters maximum."
          },
          {
            "name": "privateId",
            "kind": "optional",
            "type": "string",
            "description": "Unique and unambiguous identification of a person. For example, passport or driving license number."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ]
      },
      {
        "name": "creditor",
        "kind": "optional",
        "type": "Object",
        "description": "Creditor Business/Individual Information. The recipient of the payment, typically the party at CRB initiating the RfP. Depending on the configuration, this information may be populated automatically.",
        "children": [
          {
            "name": "routingNumber",
            "kind": "required",
            "type": "string",
            "description": "9-digit routing number of the receiving financial institution"
          },
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Legal name of entity. 140 characters maximum."
          },
          {
            "name": "birthCity",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth city. 35 characters maximum."
          },
          {
            "name": "birthCountry",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth date. Formatted as yyyy-mm-dd."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "adressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          },
          {
            "name": "phoneNumber",
            "kind": "optional",
            "type": "String",
            "description": "10 characters maximum"
          }
        ],
        "schema": [
          {
            "name": "routingNumber",
            "kind": "required",
            "type": "string",
            "description": "9-digit routing number of the receiving financial institution"
          },
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Legal name of entity. 140 characters maximum."
          },
          {
            "name": "birthCity",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth city. 35 characters maximum."
          },
          {
            "name": "birthCountry",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth date. Formatted as yyyy-mm-dd."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "adressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          },
          {
            "name": "phoneNumber",
            "kind": "optional",
            "type": "String",
            "description": "10 characters maximum"
          }
        ]
      },
      {
        "name": "ultimateCreditor",
        "kind": "optional",
        "type": "Object",
        "description": "Ultimate Creditor Business/Individual Information. The final recipient of the payment. Depending on the configuration, this information may be populated automatically.",
        "children": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Legal name of entity. 140 characters maximum."
          },
          {
            "name": "privateId",
            "kind": "optional",
            "type": "string",
            "description": "Unique and unambiguous identification of a person. For example, passport or driving license number."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetNameadd",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ],
        "schema": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Legal name of entity. 140 characters maximum."
          },
          {
            "name": "privateId",
            "kind": "optional",
            "type": "string",
            "description": "Unique and unambiguous identification of a person. For example, passport or driving license number."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetNameadd",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ]
      },
      {
        "name": "useCase",
        "kind": "required",
        "type": "string",
        "description": "Use one of the following values for the useCase field:\n\n-BusinessToBusiness\n-ConsumerBillPay\n-AccountToAccount\n-DownPaymentOrFinalPayment\n-ConsumerToGovernment",
        "": "Use one of the following values for the useCase field:\n\n-BusinessToBusiness\n-ConsumerBillPay\n-AccountToAccount\n-DownPaymentOrFinalPayment\n-ConsumerToGovernment"
      },
      {
        "name": "industryCategory",
        "kind": "optional",
        "type": "string",
        "description": "Use one of the following values for the industryCategory field (optional when useCase is BusinessToBusiness or ConsumerToGovernment):\n\n-HomeUtilities\n-TelecomUtilities\n-Mortgage\n-Rent\n-InsurancePremiums\n-AutoLoans\n-PersonalLoans\n-CreditCardPayment\n-MediaSubscriptions\n-Memberships\n-FinancialInstitution\n-BrokerOrDealer\n-Medical\n-OnlineGaming\n-RealEstate\n-Government",
        "": "Use one of the following values for the industryCategory field (optional when useCase is BusinessToBusiness or ConsumerToGovernment):\n\n-HomeUtilities\n-TelecomUtilities\n-Mortgage\n-Rent\n-InsurancePremiums\n-AutoLoans\n-PersonalLoans\n-CreditCardPayment\n-MediaSubscriptions\n-Memberships\n-FinancialInstitution\n-BrokerOrDealer\n-Medical\n-OnlineGaming\n-RealEstate\n-Government"
      },
      {
        "name": "senderID",
        "kind": "required",
        "type": "string",
        "description": "Use the senderId field (optional when useCase is BusinessToBusiness or ConsumerToGovernment), provided by Cross River and generated by The Clearing House (TCH).\n\nValid senderID's for Sandbox Testing:\n-100000000001\n-100000000002\n-100000000003\n-100000000004\n-100000000005",
        "": "required"
      },
      {
        "name": "amountModAllowed",
        "kind": "optional",
        "type": "boolean",
        "description": "Indicates whether the recipient is allowed to modify the requested amount in response to an RfP. If the field is not provided, the system defaults to true.\nIf true, the recipient may respond with a different amount\nIf false, the recipient must match the original amount; any mismatch will cause the payment to be rejected.\n",
        "": "Indicates whether the recipient is allowed to modify the requested amount in response to an RfP. If the field is not provided, the system defaults to true.\nIf true, the recipient may respond with a different amount\nIf false, the recipient must match the original amount; any mismatch will cause the payment to be rejected.\n"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The payment ID. This first appears in the initial response to the originate a payment request. This ID is in GUID format."
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Original payment ID (only relevant if a payment didn't go through for some reason).",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "This unique Cross River reference ID starts with the first letter of the payment rail. For Instant Payments, the ID begins with R to reflect the RTP API module.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account initiating the payment request",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier assigned to the payment call or COS record. This value reflects the identifier provided in the original request and helps ensure idempotency.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of payment request in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "operatorCoreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "The Instant Payments-related Cross River system transaction ID",
      "children": []
    },
    {
      "name": "authorizationTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of an authorization transaction created when Cross River receives an inbound credit transfer that refunds a previously sent outbound transfer. This authorization confirms that Cross River can post the transaction to the creditor’s (receiver’s) COS account (e.g., no restrictions or account closures) and allows Cross River to notify the real-time payment network of acceptance.",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the memo post",
      "children": []
    },
    {
      "name": "memoPostRemovedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time the memo post was removed",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Outbound for an outbound payment request or Inbound for an inbound payment request.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Transaction status:\n\n-Created\n-Pending\n-Processing\n-Completed\n-Rejected\n-Canceled\n-Hold\n-TimedOut\n-Finalizing\n-Failed\n-ResearchRequired\n-Expired\n-Authorized",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Type of payment indicating how the transaction is funded:\n\n-RequestForPayment",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "The source of the activity:\n-Api",
      "children": []
    },
    {
      "name": "transactionAccountContext",
      "kind": "optional",
      "type": "string",
      "description": "Transaction account context:\n\n-NotSubmitted\n-Pending\n-Processing\n-Complete\n-Reversal\n-MemoPost\n-TimedOut\n-Canceled\n-Rejected\n-AuthOnly\n-NotSet",
      "children": []
    },
    {
      "name": "rtpTransactionStatus",
      "kind": "optional",
      "type": "string",
      "description": "The payment status set by the receiving institution, applicable to Credit Transfers.\n\nThis value is only present for outbound payments. See available values here.",
      "children": []
    },
    {
      "name": "debtor",
      "kind": "optional",
      "type": "Object",
      "description": "Debtor business/individual information. – The recipient of the RfP who will initiate the credit transfer upon authorization. Depending on the configuration, this information may be populated automatically.",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit routing number of the sending financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "birthCity",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth city"
        },
        {
          "name": "birthCountry",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth country. 2-letter country code."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth date. Formatted as yyyy-mm-dd."
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions."
        },
        {
          "name": "proxyId",
          "kind": "optional",
          "type": "string",
          "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address."
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "10-digit phone number"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "ultimateDebtor",
      "kind": "optional",
      "type": "Object",
      "description": "Ultimate debtor business/individual information. The final party responsible for initiating the credit transfer upon authorization. This information may be populated automatically based on the configuration.",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "privateId",
          "kind": "optional",
          "type": "string",
          "description": "Unique and unambiguous identification of a person, for example, a passport number"
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "creditor",
      "kind": "optional",
      "type": "Object",
      "description": "Creditor business/individual information. The recipient of the payment, typically the party at CRB initiating the RfP. Depending on the configuration, this information may be populated automatically.\n",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit routing number of the receiving financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "birthCity",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth city"
        },
        {
          "name": "birthCountry",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth country. 2-letter country code."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth date. Formatted as yyyy-mm-dd."
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "proxyId",
          "kind": "optional",
          "type": "string",
          "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "10-digit phone number"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "ultimateCreditor",
      "kind": "optional",
      "type": "Object",
      "description": "Ultimate creditor business/individual information. The final recipient of the payment. Depending on the configuration, this information may be populated automatically.",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "privateId",
          "kind": "optional",
          "type": "string",
          "description": "Unique and unambiguous identification of a person, for example, a passport number"
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "addressStreetNameadd",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "Object",
      "description": "Network information",
      "children": [
        {
          "name": "messageDefId",
          "kind": "optional",
          "type": "string",
          "description": "Contains the ISO 20022 Message Identifier specifying the business message"
        },
        {
          "name": "businessMessageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the message"
        },
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the message"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Indicates when the pain.013 message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "numberOfTransactions",
          "kind": "optional",
          "type": "Integer",
          "description": "The total count of transactions"
        },
        {
          "name": "interbankSettlementAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The total amount the Debtor FI must pay to the Creditor FI once the Creditor FI accepts the payment instructed by the credit transfer message"
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the payment"
        },
        {
          "name": "interbankSettlementDate",
          "kind": "optional",
          "type": "string",
          "description": "The date linked to the reconciliation window, used in RTP alongside the clearing system reference to allocate a credit transfer to a specific reconciliation window"
        },
        {
          "name": "settlementMethod",
          "kind": "optional",
          "type": "string",
          "description": "The method used to settle an individual credit transfer processed through RTP"
        },
        {
          "name": "clearingSystemCode",
          "kind": "optional",
          "type": "string",
          "description": "The code used to specify the clearing system used to settle the credit transfer. For RTP the clearing system code is TCH."
        },
        {
          "name": "instructionId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID assigned by the instructing agent for the payment request while it remains active within the RTP system. \n\nThis ID serves as the unique identifier for the payment request within the Instant Payments network."
        },
        {
          "name": "endToEndId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID assigned by the initiating party to identify and track the transaction."
        },
        {
          "name": "transactionId",
          "kind": "optional",
          "type": "string",
          "description": "A unique string in GUID format that clearly identifies the transaction. This ID passes unchanged the whole interbank chain.\n\nThis ID serves as the unique identifier for the Credit Transfer within the Instant Payments network."
        },
        {
          "name": "clearingSystemRef",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the reconciliation window in which the credit transfer was settled"
        },
        {
          "name": "fromParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "The unique identifier of the participant sending the message on the Instant Payment network platform"
        },
        {
          "name": "toParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "The unique identifier of the participant receiving the message on the Instant Payment network platform"
        },
        {
          "name": "fromBranchId",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the specific branch of a financial institution that sent the message, used exclusively for routing purposes in Instant Payments"
        },
        {
          "name": "toBranchId",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the specific branch of a financial institution that receives the message, used exclusively for routing purposes in Instant Payments"
        },
        {
          "name": "instructingRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Sending bank routing number"
        },
        {
          "name": "instructedRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Receiving bank routing number"
        },
        {
          "name": "headerCreationDate",
          "kind": "optional",
          "type": "string",
          "description": "Internal to CR"
        },
        {
          "name": "messageCreationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time when the payment request message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "uetr",
          "kind": "optional",
          "type": "string",
          "description": "A Unique End-to-end Transaction Reference (commonly known as a UETR) is a string of 36 unique characters featured in all payment instruction messages carried over Swift"
        }
      ]
    },
    {
      "name": "remittanceAdvice",
      "kind": "optional",
      "type": "Object",
      "description": "Remittance advice information",
      "children": [
        {
          "name": "remittanceIdentification",
          "kind": "optional",
          "type": "string",
          "description": "A unique identifier assigned by the initiating party to clearly distinguish the remittance information sent separately from the payment instruction, such as remittance advice"
        },
        {
          "name": "origInstructionId",
          "kind": "optional",
          "type": "string",
          "description": "The original unique ID of the credit transfer, assigned by the Instructing Agent while it remains in the RTP system"
        },
        {
          "name": "origEndToEndId",
          "kind": "optional",
          "type": "string",
          "description": "The original unique ID set by the initiating party to identify the transaction, referring to a previous payment message"
        },
        {
          "name": "origTransactionId",
          "kind": "optional",
          "type": "string",
          "description": "A unique GUID-format string that clearly identifies the transaction, referring to a previous payment message. This ID remains unchanged throughout the entire interbank chain."
        },
        {
          "name": "origPaymentInfoId",
          "kind": "optional",
          "type": "string",
          "description": "A unique identifier assigned by the original sending party to clearly distinguish the original payment information group"
        },
        {
          "name": "origInstructedAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The amount of money specified in the original transaction to be transferred between the debtor and creditor, before any charges are deducted, expressed in the currency requested by the original initiating party."
        },
        {
          "name": "origInstructedAmountCurrency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the original transaction"
        }
      ]
    },
    {
      "name": "transactionInfo",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the transaction",
      "children": [
        {
          "name": "status",
          "kind": "optional",
          "type": "String",
          "description": "The current status of a single payment instruction within the transaction process"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "A code that specifies the reason a transaction did not complete. Refer to the list of reason codes for details."
        },
        {
          "name": "additionalInfo",
          "kind": "optional",
          "type": "string",
          "description": "Provides supplementary details regarding the status report"
        },
        {
          "name": "reasonProprietary",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the local instrument by using a proprietary code"
        }
      ]
    },
    {
      "name": "serviceLevelCode",
      "kind": "optional",
      "type": "string",
      "description": "Indicates a pre-arranged service or service level agreed upon between the parties",
      "children": []
    },
    {
      "name": "localInstrumentPropriety",
      "kind": "optional",
      "type": "string",
      "description": "Specifies whether the Debtor is a business or consumer customer of the Debtor FI. This element also indicates if the Debtor is a domestic customer of the Debtor FI or a customer of a foreign branch or affiliate.",
      "children": []
    },
    {
      "name": "categoryPurpose",
      "kind": "optional",
      "type": "string",
      "description": "Details from the initiating party regarding payment processing, based on predefined categories. Certain values may initiate special processing by various parties involved in the payment chain.",
      "children": []
    },
    {
      "name": "initiatingPartyName",
      "kind": "optional",
      "type": "string",
      "description": "Name of initiating party/entity",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the payment",
      "children": []
    },
    {
      "name": "chargeBearer",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the party (or parties) responsible for bearing the charges related to processing the payment request.",
      "children": []
    },
    {
      "name": "remittanceIdentification",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier assigned by the initiating party to clearly distinguish the remittance information sent separately from the payment instruction, such as remittance advice",
      "children": []
    },
    {
      "name": "remittanceData",
      "kind": "optional",
      "type": "string",
      "description": "A description of the payment request, serving as the remittance advice. This field is used for any remittance information that does not have a designated field.",
      "children": []
    },
    {
      "name": "paymentInfoId",
      "kind": "optional",
      "type": "string",
      "description": "Payment information ID",
      "children": []
    },
    {
      "name": "reqExecutionDate",
      "kind": "optional",
      "type": "Object",
      "description": "Requested execution date information",
      "children": [
        {
          "name": "date",
          "kind": "optional",
          "type": "string",
          "description": "The requested date and time of the payment, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "dateType",
          "kind": "optional",
          "type": "string",
          "description": "The date type"
        }
      ]
    },
    {
      "name": "expiryDate",
      "kind": "optional",
      "type": "Object",
      "description": "Expiry date information",
      "children": [
        {
          "name": "date",
          "kind": "optional",
          "type": "string",
          "description": "The expiry date and time of the payment, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "dateType",
          "kind": "optional",
          "type": "string",
          "description": "The date type"
        }
      ]
    },
    {
      "name": "paymentConditions",
      "kind": "optional",
      "type": "Object",
      "description": "Payment conditions information",
      "children": [
        {
          "name": "amountModAllowed",
          "kind": "optional",
          "type": "Boolean",
          "description": "Indicates whether the requested payment amount can be modified by the debtor."
        },
        {
          "name": "earlyPayAllowed",
          "kind": "optional",
          "type": "Boolean",
          "description": "Specifies if early payment is permitted before the due date."
        },
        {
          "name": "acceptedAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The fixed amount (in cents) that the creditor is willing to accept for the payment request."
        }
      ]
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River field used to include a short description of the purpose of the payment. The RDFI does not see this field. ",
      "children": []
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was refunded. True if refunded, otherwise False.",
      "children": []
    },
    {
      "name": "wasPaid",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was received. True if received, otherwise False.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "The GUID representing the ID of your specific product type associated with the account. This is provided by Cross River and identifies the Cross River account involved in the transfer.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "sendAttemptCount",
      "kind": "optional",
      "type": "Integer",
      "description": "The total count of attempts to send the payment request",
      "children": []
    },
    {
      "name": "discounts",
      "kind": "optional",
      "type": "Object",
      "description": "Discounts array specifies applicable discounts for the request.",
      "children": [
        {
          "name": "type",
          "kind": "optional",
          "type": "string",
          "description": "The type of discount applied. \nPossible values include:\n- DSCT: A standard discount applied to the payment.\n- FULL: A full payment discount (for example, early payment incentive)"
        },
        {
          "name": "amount",
          "kind": "optional",
          "type": "Integer",
          "description": "Amount of discount in positive integral cents. For example, write $1.00 as 100."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the discount. For example USD."
        }
      ]
    },
    {
      "name": "awaitingResponse",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether a message response is pending. True if waiting, otherwise False.\n",
      "children": []
    },
    {
      "name": "networkPlatform",
      "kind": "optional",
      "type": "string",
      "description": "The payment network platform used to process the payment. Possible values are: TCH (for RTP via The Clearing House)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtpv1paymentspayment-request",
  "legacyHash": "cMmRYp9lKoQ7Sb_Zl3Mgp"
}
```
:::


[title] Webhook events: ACH
[path] Payments/ACH/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific [webhooks](docId\:BN5XtgkJogBe-CtwomCbS)  which have a specific [format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents ACH webhook events that are described in detail below.

| Event Name                                                                                 | Description                                                                                                                                                                                                                                                                               | Related endpoints                                                                                                 |
| ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| [Ach.Batch.Canceled](docId\:AVRvavzdk7hC0UfXn6XZ9)                                         | Any pending or on-hold payments in an ACH client batch canceled                                                                                                                                                                                                                           | [Cancel batch](docId\:u_LIED3U9ey-YoPB_707j)                                                                      |
| [Ach.Batch.Imported](docId\:AVRvavzdk7hC0UfXn6XZ9)                                         | Entire ACH client batch import process into the CR system complete                                                                                                                                                                                                                        | [Send batch](docId:0Hu-sm4gNXr4XbIZCHkTA)                                                                         |
| [Ach.Payment.Canceled](docId\:AVRvavzdk7hC0UfXn6XZ9)                                       | ACH payment canceled at partner request                                                                                                                                                                                                                                                   | [Cancel payment](docId\:J4qt27UdIV0QB-3pKKsB9)                                                                    |
| [Ach.Payment.Rejected](docId\:AVRvavzdk7hC0UfXn6XZ9)                                       | Outbound payment request rejected by the system or by Cross River Bank                                                                                                                                                                                                                    |                                                                                                                   |
| [Ach.Payment.Sent](docId\:AVRvavzdk7hC0UfXn6XZ9)                                           | ACH payment released to the FedACH network for processing                                                                                                                                                                                                                                 | [Send ACH  transaction](docId\:ILwmF5qnTMLo30D2H3rCH)                                                             |
| [Ach.Payment.Sent (Client Batch)](docId\:AVRvavzdk7hC0UfXn6XZ9)                            | Client batch of payments released to the FedACH network for processing                                                                                                                                                                                                                    | [Send batch](docId:0Hu-sm4gNXr4XbIZCHkTA)                                                                         |
| [Ach.Payment.Received](docId\:AVRvavzdk7hC0UfXn6XZ9)                                       | Inbound push or pull payment posted to the account indicated in the webhook event payload                                                                                                                                                                                                 |                                                                                                                   |
| [Ach.Payment.ReceivedEarly](docId\:AVRvavzdk7hC0UfXn6XZ9)                                  | ACH early direct deposit payment received                                                                                                                                                                                                                                                 |                                                                                                                   |
| [Ach.Return.Received](docId\:AVRvavzdk7hC0UfXn6XZ9)                                        | ACH payment was returned from the receiving bank (RDFI) and marked *received*.                                                                                                                                                                                                            |                                                                                                                   |
| [Ach.Noc.Received](docId\:AVRvavzdk7hC0UfXn6XZ9)                                           | A previous outbound payment was posted by the RDFI but contained incorrect information. The inbound notification of change (NOC) payment contains the corrected information. Update your database with this information to reduce the risk of future payments being returned by the RDFI. | [Send ACH  transaction](docId\:ILwmF5qnTMLo30D2H3rCH)                                                             |
| [Ach.Hold.Escalated](docId\:AVRvavzdk7hC0UfXn6XZ9)                                         | ACH inbound or outbound payment is on hold and it's status was escalated. This is often used to indicate that additional actions are needed                                                                                                                                               |                                                                                                                   |
| [Core.Transaction.Completed (Incoming ACH)](docId\:AVRvavzdk7hC0UfXn6XZ9)                  | Transaction completed successfully for an incoming ACH                                                                                                                                                                                                                                    | [Payment transactions](docId\:luDEbxnwU8p7Knb_bDM6I)                                                              |
| [Core.Transaction.Completed (Outbound ACH Aggregate)](docId\:AVRvavzdk7hC0UfXn6XZ9)        | Transaction completed successfully for multiple outbound ACH payments from a single account sent to the Fed in the same batch                                                                                                                                                             | [Send ACH  transaction](docId\:ILwmF5qnTMLo30D2H3rCH)<br />[Payment transactions](docId\:luDEbxnwU8p7Knb_bDM6I)   |
| [Core.Transaction.Completed (Outbound ACH Individual)](docId\:AVRvavzdk7hC0UfXn6XZ9)<br /> | Transaction completed successfully for a single outbound ACH transaction                                                                                                                                                                                                                  | [Send ACH  transaction](docId\:ILwmF5qnTMLo30D2H3rCH) <br />[Payment transactions](docId\:luDEbxnwU8p7Knb_bDM6I)  |
| [Core.Activity.Posted (Inbound ACH)](docId\:AVRvavzdk7hC0UfXn6XZ9)                         | Activity was posted to the account for an inbound ACH                                                                                                                                                                                                                                     |                                                                                                                   |
| [Core.Activity.Posted (Outbound ACH)](docId\:AVRvavzdk7hC0UfXn6XZ9)                        | Activity was posted to the account for an outbound ACH                                                                                                                                                                                                                                    | [Send ACH  transaction](docId\:ILwmF5qnTMLo30D2H3rCH)                                                             |

:::hint{type="info"}
The values used in the sample responses are examples and are not valid.
:::

## Event examples

### Ach.Batch.Canceled

**Any pending or on-hold payments in an ACH client batch have been canceled**

The extended webhook event includes the batch ID and the account number.

:::CodeblockTabs
Extended webhook event response

```json
{
  "id": "1a29dbb3-df40-42f0-aaa8-b04900e37f0e",
  "eventName": "Ach.Batch.Canceled",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2023-07-24T09:48:17.33-04:00",
  "resources": [
    "ach/v1/payments/652c16be-b660-426f-9690-bd41d5960d0b"
  ],
  "details": [
    {
      "clientBatchId": "652c16be-b660-426f-9690-bd41d5960d0b",
      "accountNumber": "1234567890"
    }
  ]
}
```
:::

### Ach.Batch.Imported

**The entire ACH client batch import process into the CR system is complete**

The extended webhook event includes the batch ID and the account number.

:::CodeblockTabs
Extended webhook event response

```json
{
  "id": "1a29dbb3-df40-42f0-aaa8-b04900e37f0e",
  "eventName": "Ach.Batch.Imported",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2023-07-24T09:48:17.33-04:00",
  "resources": [
    "ach/v1/payments/652c16be-b660-426f-9690-bd41d5960d0b"
  ],
  "details": [
    {
      "clientBatchId": "652c16be-b660-426f-9690-bd41d5960d0b",
      "accountNumber": "1234567890"
    }
  ]
}
```
:::

### Ach.Payment.Canceled

**ACH payment canceled at partner request**

The extended webhook event includes the client identifier, the account number the payment was sent to, the payment ID, the reason the payment was rejected, and if relevant, the [memo post](docId\:taARbRLvSX908AeYno_H2) ID and any client batch information.

:::CodeblockTabs
Extended webhook event return

```json
{
  "id": "62d4c953-6ee2-438f-8966-b04900def646",
  "eventName": "Ach.Payment.Canceled",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2023-07-24T09:31:46.793-04:00",
  "resources": [
    "ach/v1/payments/73da01c7-b85b-4a58-9395-b04900de43cf"
  ],
  "details": [
    {
      "paymentId": "73da01c7-b85b-4a58-9395-b04900de43cf",
      "coreTransactionId": null,
      "memoPostId": "85b509f9-61f0-4af3-b64c-b04900de43da",
      "clientBatchId": null,
      "clientBatchSequence": null,
      "accountNumber": "2151546989",
      "postingCode": null,
      "clientIdentifier": null,
      "purpose": "ENTERED BY #60C3C9C8FD17BA0070A7FB4F#"
    }
  ]
}
```
:::

### Ach.Payment.Rejected

**ACH payment rejected due to a compliance failure or fail to fund**

The extended webhook includes the client identifier, the account number the payment was sent to, the payment ID, the [rejection code](docId\:oDtRP7ARfnpQuFEGy4Sfh) that indicates the reason the payment was rejected, and if relevant, the [memo post](docId\:taARbRLvSX908AeYno_H2) ID and any client batch information.

:::CodeblockTabs
Extended webhook event response

```json
{
  "id": "68ef3d97-758c-470e-b3f7-b1c6012cfd79",
  "eventName": "Ach.Payment.Rejected",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:15:52.297-04:00",
  "resources": [
    "ach/v1/payments/edb404e7-5a00-4e07-8da2-b1c6012ce044"
  ],
  "details": [
    {
      "paymentId": "edb404e7-5a00-4e07-8da2-b1c6012ce044",
      "coreTransactionId": "36d78c83-7be8-40e9-9aa9-b1c6012ce044",
      "memoPostId": "4a6d8ff4-22cf-437a-acbe-b1c6012ce044",
      "clientBatchId": null,
      "clientBatchSequence": null,
      "accountNumber": "2153808510",
      "postingCode": "NSF",
      "clientIdentifier": null,
      "purpose": null,
      "rejectionReason": "Other"
    }
  ]
}
```
:::

### Ach.Payment.Sent

**The ACH payment was sent to the Federal Reserve.**

For individual payments, only the basic webhook event is needed. When sending multiple payments from a single account, register for the extended event, which includes the client identifier, the account number the payment was sent to, the payment ID, the purpose the payment, and if relevant, the [memo post](docId\:taARbRLvSX908AeYno_H2) ID.

:::CodeblockTabs
Extended webhook event return

```json
{
  "id": "51d2e4e8-5fee-4ad8-8b03-b1c6012a8459",
  "eventName": "Ach.Payment.Sent",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:06:52.013-04:00",
  "resources": [
    "ach/v1/payments/55f641cf-102b-4920-83fd-b1c6012a3d2d"
  ],
  "details": [
    {
      "paymentId": "55f641cf-102b-4920-83fd-b1c6012a3d2d",
      "coreTransactionId": "fddea7f7-556e-4c93-acc4-b1c6012a6bf3",
      "memoPostId": "fddea7f7-556e-4c93-acc4-b1c6012a6bf3",
      "clientBatchId": null,
      "clientBatchSequence": null,
      "accountNumber": "2151546989",
      "postingCode": null,
      "clientIdentifier": null,
      "purpose": null,
      "fedBatchId": "29f4b78f-f056-4ac5-9a4e-b1c6012a60d2",
      "fedBatchSequence": null
    }
  ]
}
```
:::

### Ach.Payment.Sent (Client Batch)

**The ACH batch payment was sent to the Federal Reserve.**

For each payment in the batch, the extended webhook event includes the client identifier, the account number the payment was sent to, the payment ID, the purpose the payment, any client batch information, and, if relevant, the [memo post](docId\:taARbRLvSX908AeYno_H2) ID.

:::CodeblockTabs
Extended webhook event return

```json
{
  "id": "af676b07-fb1f-4f7e-9ea1-b2120122c52e",
  "eventName": "Ach.Payment.Sent",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2024-10-23T13:38:39.72-04:00",
  "resources": [
    "ach/v1/payments/76b1aaaa-4c65-400f-85ee-b21201225e4c",
    "ach/v1/payments/65120c3b-3cd1-4909-b126-b21201225e4c",
    "ach/v1/payments/7eb3ab00-7137-4650-ac5e-b21201225e4c",
    "ach/v1/payments/0e8fc9e4-8f76-4505-b99a-b21201225e4c"
  ],
  "details": [
    {
      "paymentId": "76b1aaaa-4c65-400f-85ee-b21201225e4c",
      "coreTransactionId": "fb7c002e-e5ba-4dd3-97a9-b21201225e5b",
      "memoPostId": "007c4052-b8f8-4f91-aa8e-b21201225e5b",
      "clientBatchId": "e2fdb85b-ab31-42b5-88e9-b21201225e4c",
      "clientBatchSequence": null,
      "accountNumber": "2405952710",
      "postingCode": null,
      "clientIdentifier": "2fd4fcb2-e4ad-43fb-88b7-4c06b054d1c3",
      "purpose": null,
      "fedBatchId": "0fade146-d07b-4b9c-a173-b2120122999d",
      "fedBatchSequence": null
    },
    {
      "paymentId": "65120c3b-3cd1-4909-b126-b21201225e4c",
      "coreTransactionId": "a874d749-c347-4b87-a552-b21201225e56",
      "memoPostId": "27199405-5cdd-4d84-aca5-b21201225e56",
      "clientBatchId": "e2fdb85b-ab31-42b5-88e9-b21201225e4c",
      "clientBatchSequence": null,
      "accountNumber": "2405952710",
      "postingCode": null,
      "clientIdentifier": "9c1f2b48-48ef-4bba-8275-06ae6bb5d17a",
      "purpose": null,
      "fedBatchId": "0fade146-d07b-4b9c-a173-b2120122999d",
      "fedBatchSequence": null
    },
    {
      "paymentId": "7eb3ab00-7137-4650-ac5e-b21201225e4c",
      "coreTransactionId": "85f632c0-9e73-4cdc-b458-b21201225e69",
      "memoPostId": "c89b2ba0-3330-4b69-9e09-b21201225e69",
      "clientBatchId": "e2fdb85b-ab31-42b5-88e9-b21201225e4c",
      "clientBatchSequence": null,
      "accountNumber": "2405952710",
      "postingCode": null,
      "clientIdentifier": "1feae24a-58ab-4f92-b917-a250f157ccf4",
      "purpose": null,
      "fedBatchId": "0fade146-d07b-4b9c-a173-b2120122999d",
      "fedBatchSequence": null
    },
    {
      "paymentId": "0e8fc9e4-8f76-4505-b99a-b21201225e4c",
      "coreTransactionId": "371543d0-21b7-4325-a27e-b21201225e6e",
      "memoPostId": "895ebd94-7e20-4bb6-b693-b21201225e6e",
      "clientBatchId": "e2fdb85b-ab31-42b5-88e9-b21201225e4c",
      "clientBatchSequence": null,
      "accountNumber": "2405952710",
      "postingCode": null,
      "clientIdentifier": "6c5dfeac-6dce-4ac0-a2fe-39f2bbf1722d",
      "purpose": null,
      "fedBatchId": "0fade146-d07b-4b9c-a173-b2120122999d",
      "fedBatchSequence": null
    }
  ]
}
```
:::

### Ach.Payment.Received

**An ACH inbound payment was received to the account**

The extended webhook event includes the payment and core transaction IDs, the trace number and routing number of the payment, the name, ID and account number of the party who received the payment, general information on the payment, and the amount.

:::CodeblockTabs
Extended webhook event response

```json
{
  "id": "1630d863-d1b3-4c3a-8943-b2db01558dab",
  "eventName": "Ach.Payment.Received",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-12T16:43:33.473+00:00",
  "resources": [
    "ach/v1/payments/8e72c7df-c52c-48d4-aa5b-b2db01554571"
  ],
  "details": [
    {
      "paymentId": "8e72c7df-c52c-48d4-aa5b-b2db01554571",
      "coreTransactionId": "9d1f39e4-4c78-48ac-89ce-b2db01554583",
      "accountNumber": "2254575653",
      "traceNumber": "021000020412472",
      "routingNumber": "021000021",
      "originatorName": "SUBTESTING",
      "originatorIdentification": "3333385474",
      "description": "Refund",
      "transactionType": "Push",
      "serviceType": "SameDay",
      "amount": "15000",
      "addenda": null,
      "receiverName": "James Webb",
      "receiverIdentification": "",
      "receiverAccountNumber": "2254575653",
      "secCode": "PPD",
      "effectiveDate": "250512",
      "settlementDate": "132"
    }
  ]
}
```
:::

### Ach.Payment.ReceivedEarly

**An ACH early direct deposit payment received**

The extended webhook event includes the payment and core transaction IDs, the trace number and routing number of the payment, the name, ID and account number of the party who originated the payment, general information on the payment, and the amount.

:::CodeblockTabs
Extended webhook event response

```json
{
  "id": "b7ebcb38-5242-4d02-83c4-b1a9010fedb6",
  "eventName": "Ach.Payment.ReceivedEarly",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-07-10T12:30:03.707-04:00",
  "resources": [
    "ach/v1/payments/91ec2ab1-a06e-4862-9f88-b1a9010f61e3"
  ],
  "details": [
    {
      "paymentId": "91ec2ab1-a06e-4862-9f88-b1a9010f61e3",
      "coreTransactionId": "9c32bbe8-7488-4d28-b525-b1a9010f61f1",
      "accountNumber": "2863654337",
      "traceNumber": "021214896305256",
      "routingNumber": "021214891",
      "originatorName": "Pay Corp",
      "originatorIdentification": "123",
      "description": "Payout",
      "transactionType": "Push",
      "serviceType": "Standard",
      "amount": "50000",
      "addenda": null,
      "receiverName": "B Sanderson",
      "receiverIdentification": "",
      "receiverAccountNumber": "2863654337",
      "secCode": "PPD"
    }
  ]
}
```
:::

### Ach.Return.Received

**ACH payment was returned from the receiving bank and has been marked as received. An ACH return is a new unique payment with a unique payment ID**

The extended webhook event includes the client identifier, the original payment ID, the account number the payment was sent to, the payment ID, and the [return code](docId\:oDtRP7ARfnpQuFEGy4Sfh) that indicates the reason the payment was returned.

:::CodeblockTabs
Extended webhook event response

```json
{
  "id": "6c66de98-138b-40b2-9a16-b1c6012be415",
  "eventName": "Ach.Return.Received",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:11:52.173-04:00",
  "resources": [
    "ach/v1/payments/806a4c4f-d536-45aa-89f6-b1c6012b9cbe"
  ],
  "details": [
    {
      "paymentId": "806a4c4f-d536-45aa-89f6-b1c6012b9cbe",
      "coreTransactionId": "fc79ca11-350e-4b08-8bf1-b1c6012b9ccd",
      "originalPaymentId": "55f641cf-102b-4920-83fd-b1c6012a3d2d",
      "accountNumber": "2151546989",
      "traceNumber": "021000029551621",
      "reasonCode": "R01",
      "reasonData": "",
      "amount": "4500",
      "transactionType": "Push"
    }
  ]
}
```
:::

### Ach.Noc.Received

**A Notification of Change was sent from the receiving bank regarding a previous origination**

The extended webhook event includes information on the payment origination and the [correction code](docId\:oDtRP7ARfnpQuFEGy4Sfh) indicating the reason for the NOC.

:::CodeblockTabs
Extended webhook event response

```json
{
  "id": "f26b80ef-cfc2-4cfb-8888-b1c6012c70c9",
  "eventName": "Ach.Noc.Received",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-08T14:13:52.243-04:00",
  "resources": [
    "ach/v1/payments/9e0c6a4b-303a-4cdd-a987-b1c6012c297f"
  ],
  "details": [
    {
      "paymentId": "9e0c6a4b-303a-4cdd-a987-b1c6012c297f",
      "coreTransactionId": "",
      "originalPaymentId": "6f733a5a-7614-4895-bf56-b1c6012a854c",
      "accountNumber": "2153808510",
      "traceNumber": "021000020305877",
      "reasonCode": "C01",
      "reasonData": "452136846",
      "amount": "0",
      "transactionType": "Push"
    }
  ]
}
```
:::

### Ach.Hold.Escalated

**ACH inbound or outbound payment is on hold and its status was escalated.**

This webhook event indicates that additional actions are needed.

:::CodeblockTabs
Extended webhook event response

```json
{
  "id": "1a29dbb3-df40-42f0-aaa8-b04900e37f0e",
  "eventName": "Ach.Hold.Escalated",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2023-07-24T09:48:17.33-04:00",
  "resources": [
    "ach/v1/payments/652c16be-b660-426f-9690-bd41d5960d0b"
  ],
  "details": [
    {
      "holdId": "7413f441-910b-4e75-bbee-9b9ac27d717d",
      "paymentId": "652c16be-b660-426f-9690-bd41d5960d0b",
      "holdType": "
    }
  ]
}
```
:::

### Core.Transaction.Completed  (Incoming ACH)

**Funds have been credited to the originating COS account.**

:::CodeblockTabs
Sample Event

```curl
{
  "id": "3804c582-b2ca-4c18-a3a8-b1ca00de6003",
  "eventName": "Core.Transaction.Completed",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-08-12T09:29:38.567-04:00",
  "resources": [
    "core/v1/transactions/35fe9374-5bd5-4aa6-8e68-b1ca00de0ecc"
  ],
  "details": [
    {
      "transactionId": "35fe9374-5bd5-4aa6-8e68-b1ca00de0ecc",
      "transactionCode": "Incoming ACH",
      "debitSubAccount": "00000271282",
      "debitMasterAccount": "00000271282",
      "debitResult": "OK",
      "creditSubAccount": "2151546989",
      "creditMasterAccount": "2151546989",
      "creditResult": "OK",
      "rail": "Ach",
      "railId": "payment/5836a14f-34a7-4a47-a9fe-b1ca00de0ebe",
      "amount": "75000",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "IRS REFUND ACH PPD ID: 3333385474 REF: A2254L9KA06X",
      "proposedAt": "08/12/2024 09:29:29",
      "executedAt": "08/12/2024 09:29:29",
      "schedule": ""
    }
  ]
}
```
:::

### Core.Transaction.Completed (Outbound ACH Aggregate)

**Funds have been debited from the originating COS account.**

In this example, multiple transactions were sent from a single account, and the sum of those transactions has been debited from the account. Such payments are indicated by `postingType` **Aggregate** in the response to the payment call. The webhook event contains details for each of the transactions that were sent in the same batch to the Fed from that account.

:::CodeblockTabs
Sample Event

```curl
{
  "id": "ef5b6453-a4c1-48c5-a22e-b22700ebcd00",
  "eventName": "Core.Transaction.Completed",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2024-11-13T09:18:31.47-05:00",
  "resources": [
    "core/v1/transactions/4421921c-c5eb-4cbf-a0f8-b22700ebab83",
    "core/v1/transactions/fb6fd7db-fdba-4e3d-b3a5-b22700ebab87"
  ],
  "details": [
    {
      "transactionId": "4421921c-c5eb-4cbf-a0f8-b22700ebab83",
      "transactionCode": "Outgoing ACH",
      "debitSubAccount": "2905551814",
      "debitMasterAccount": "2905551814",
      "debitResult": "OK",
      "creditSubAccount": "00000016431",
      "creditMasterAccount": "00000016431",
      "creditResult": "OK",
      "rail": "Ach",
      "railId": "distribution/b8d9621e-ab11-4349-9e93-b22700eba7f4",
      "amount": "2500",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "ACH DIS REF: ADIS31894FU PUSH ORIGINATION FUNDING 241113 - 2 PAYMENT(S)",
      "proposedAt": "11/13/2024 09:18:03",
      "executedAt": "11/13/2024 09:18:04",
      "schedule": ""
    },
    {
      "transactionId": "fb6fd7db-fdba-4e3d-b3a5-b22700ebab87",
      "transactionCode": "Outgoing ACH",
      "debitSubAccount": "00000016431",
      "debitMasterAccount": "00000016431",
      "debitResult": "OK",
      "creditSubAccount": "2905551814",
      "creditMasterAccount": "2905551814",
      "creditResult": "OK",
      "rail": "Ach",
      "railId": "distribution/b8d9621e-ab11-4349-9e93-b22700eba7f4",
      "amount": "4000",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "ACH DIS REF: ADIS31894FU PULL ORIGINATION FUNDING 241113 - 2 PAYMENT(S)",
      "proposedAt": "11/13/2024 09:18:19",
      "executedAt": "11/13/2024 09:18:19",
      "schedule": ""
    }
  ]
}
```
:::

### Core.Transaction.Completed (Outbound ACH Individual)

**Funds have been debited from the originating COS account.**

In this example, a single transaction was sent from a single account and the amount of the transaction was debited from the account.

:::CodeblockTabs
Sample Event

```curl
{
  "id": "6d7da4d8-9ee6-46f9-a218-b22700f56b58",
  "eventName": "Core.Transaction.Completed",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2024-11-13T09:53:32.663-05:00",
  "resources": [
    "core/v1/transactions/a89e9bf2-c3fb-4e28-a20e-b22700ef4ed2"
  ],
  "details": [
    {
      "transactionId": "a89e9bf2-c3fb-4e28-a20e-b22700ef4ed2",
      "transactionCode": "Outgoing ACH",
      "debitSubAccount": "00000016431",
      "debitMasterAccount": "00000016431",
      "debitResult": "OK",
      "creditSubAccount": "2405952710",
      "creditMasterAccount": "2405952710",
      "creditResult": "OK",
      "rail": "Ach",
      "railId": "payment/3253942f-97b7-4e44-a60b-b22700ef4ed2",
      "amount": "17500",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "PETER GRIFFIN DIRDEP ACH PPD ID:  REF: A318W1P0MK7I",
      "proposedAt": "11/13/2024 09:53:16",
      "executedAt": "11/13/2024 09:53:16",
      "schedule": "0,0,17500"
    }
  ]
}
```
:::

### Core.Activity.Posted (Inbound ACH)

:::CodeblockTabs
Sample Event

```curl
{
  "id": "62fa2f65-a7b7-4741-85ee-b2db01558daa",
  "eventName": "Core.Activity.Posted",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-12T16:43:33.457+00:00",
  "resources": [
    "core/v1/dda/accounts/2254575653/activity/d1fe8741-e885-4340-82e7-b2db01558490"
  ],
  "details": [
    {
      "activityId": "d1fe8741-e885-4340-82e7-b2db01558490",
      "transactionId": "9d1f39e4-4c78-48ac-89ce-b2db01554583",
      "transactionType": "Credit",
      "transactionCode": "Incoming ACH",
      "subAccount": "2254575653",
      "masterAccount": "2254575653",
      "rail": "Ach",
      "railId": "payment/8e72c7df-c52c-48d4-aa5b-b2db01554571",
      "amount": "15000",
      "currency": "usd",
      "postingDate": "5/12/2025",
      "description": "SUBTESTING REFUND ACH PPD ID: 3333385474 REF: A13229562XF3",
      "createdAt": "05/12/2025 16:43:25",
      "executedAt": "05/12/2025 16:43:25",
      "schedule": ""
    }
  ]
}
```
:::

### Core.Activity.Posted (Outbound ACH)

:::CodeblockTabs
Sample Event

```curl
{
  "id": "c37fc243-9b8e-4d9c-9487-b19d010df95b",
  "eventName": "Core.Activity.Posted",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2024-06-28T12:22:56.733-04:00",
  "resources": [
    "core/v1/dda/accounts/2234629257/activity/348981eb-1af7-4ea6-86ec-b19d010ddab0"
  ],
  "details": [
    {
      "activityId": "348981eb-1af7-4ea6-86ec-b19d010ddab0",
      "transactionId": "33132892-398d-47f6-8d42-b19d010d8b9e",
      "transactionType": "Debit",
      "transactionCode": "Outgoing ACH",
      "subAccount": "2234629257",
      "masterAccount": "2234629257",
      "rail": "Ach",
      "railId": "payment/61a015bc-5e36-4728-9f11-b19d010d8b9e",
      "amount": "25000",
      "currency": "usd",
      "postingDate": "6/28/2024",
      "description": "PETER GRIFFIN STRING ACH PPD ID:  REF: A180202KKD42",
      "createdAt": "06/28/2024 12:22:30",
      "executedAt": "06/28/2024 12:22:30",
      "schedule": ""
    }
  ]
}
```
:::




[title] Send payments
[path] Payments/Card payments/Payments APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [CardPayments.Payment.Cleared](docId\:wso2E9CMh8zs8PyIjC-7r)
- [CardPayments.Payment.Completed](docId\:wso2E9CMh8zs8PyIjC-7r)&#x20;
- [CardPayments.Payment.Rejected](docId\:wso2E9CMh8zs8PyIjC-7r)
- [CardPayments.Payment.Failed](docId\:wso2E9CMh8zs8PyIjC-7r)

## API reference

Push or pull funds&#x20;

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "m2Ue7Qz6dVWcDZ36gKpPo",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardpayments/v1/payments' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--data '{\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n  \"cardToken\": \"\",\n  \"accountNumber\": \"2287979807\",\n  \"amount\": 1000,\n  \"paymentType\": \"Push\",\n  \"correspondingEntity\": {\n    \"firstName\": \"Darrin\",\n    \"lastName\": \"Considine\",\n    \"externalAccountIdentifier\": \"12345678901234\",\n    \"address\": {\n      \"street1\": \"2436 Bradtke Mountains\",\n      \"street2\": \"\",\n      \"city\": \"Marysville\",\n      \"state\": \"NY\",\n      \"postalCode\": \"123456789\",\n      \"countryCode\": \"US\"\n    }\n },\n  \"mcc\": \"9876\",\n  \"cvv\": \"123\",\n  \"clientIdentifier\": \"string\",\n  \"businessType\": \"AA\"\n}'",
        "customLabel": ""
      },
      {
        "id": "VeeGmwkA_clEzxjzmMBUK",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'POST',\n  'url': 'https://sandbox.crbcos.com/cardpayments/v1/payments',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Accept': 'application/json'\n  },\n  body: JSON.stringify({\n    \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n    \"cardToken\": \"\",\n    \"accountNumber\": \"2287979807\",\n    \"amount\": 1000,\n    \"paymentType\": \"Push\",\n    \"correspondingEntity\": {\n      \"firstName\": \"Prudence\",\n      \"lastName\": \"Stracke\",\n      \"externalAccountIdentifier\": \"12345678901234\",\n      \"address\": {\n        \"street1\": \"2866 Margie Burg\",\n        \"street2\": \"\",\n        \"city\": \"Lorishire\",\n        \"state\": \"NY\",\n        \"postalCode\": \"123456789\",\n        \"countryCode\": \"US\"\n      }\n    },\n    \"mcc\": \"9876\",\n    \"cvv\": \"123\",\n    \"clientIdentifier\": \"string\",\n    \"businessType\": \"AA\"\n  })\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "BP-IjxQK-9xJ_YCWNyGNx",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/cardpayments/v1/payments\"\n\npayload = json.dumps({\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n  \"cardToken\": \"\",\n  \"accountNumber\": \"2287979807\",\n  \"amount\": 1000,\n  \"paymentType\": \"Push\",\n  \"correspondingEntity\": {\n    \"firstName\": \"Lyla\",\n    \"lastName\": \"Abbott\",\n    \"externalAccountIdentifier\": \"12345678901234\",\n    \"address\": {\n      \"street1\": \"39633 Bianka Fork\",\n      \"street2\": \"\",\n      \"city\": \"Kansas City\",\n      \"state\": \"NY\",\n      \"postalCode\": \"123456789\",\n      \"countryCode\": \"US\"\n    }\n  },\n  \"mcc\": \"9876\",\n  \"cvv\": \"123\",\n  \"clientIdentifier\": \"string\",\n  \"businessType\": \"AA\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "xu3xbbWT_a-_Y7mcgL0S3",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardpayments/v1/payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Accept\"] = \"application/json\"\nrequest.body = JSON.dump({\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n  \"cardToken\": \"\",\n  \"accountNumber\": \"2287979807\",\n  \"amount\": 1000,\n  \"paymentType\": \"Push\",\n  \"correspondingEntity\": {\n    \"firstName\": \"Darwin\",\n    \"lastName\": \"Reilly\",\n    \"externalAccountIdentifier\": \"12345678901234\",\n    \"address\": {\n      \"street1\": \"83160 Hector Turnpike\",\n      \"street2\": \"\",\n      \"city\": \"Thousand Oaks\",\n      \"state\": \"NY\",\n      \"postalCode\": \"123456789\",\n      \"countryCode\": \"US\"\n    }\n  },\n  \"mcc\": \"9876\",\n  \"cvv\": \"123\",\n  \"clientIdentifier\": \"string\",\n  \"businessType\": \"AA\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "yes-XNvEAr36pmLaxLh_p",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardpayments/v1/payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",`+\"\n\"+`\n  \"cardToken\": \"\",`+\"\n\"+`\n  \"accountNumber\": \"2287979807\",`+\"\n\"+`\n  \"amount\": 1000,`+\"\n\"+`\n  \"paymentType\": \"Push\",`+\"\n\"+`\n  \"correspondingEntity\": {`+\"\n\"+`\n    \"firstName\": \"Zoe\",`+\"\n\"+`\n    \"lastName\": \"Klein\",`+\"\n\"+`\n    \"externalAccountIdentifier\": \"12345678901234\",`+\"\n\"+`\n    \"address\": {`+\"\n\"+`\n      \"street1\": \"24683 Cara Villages\",`+\"\n\"+`\n      \"street2\": \"\",`+\"\n\"+`\n      \"city\": \"Walshside\",`+\"\n\"+`\n      \"state\": \"NY\",`+\"\n\"+`\n      \"postalCode\": \"123456789\",`+\"\n\"+`\n      \"countryCode\": \"US\"`+\"\n\"+`\n    }`+\"\n\"+`\n },`+\"\n\"+`\n  \"mcc\": \"9876\",`+\"\n\"+`\n  \"cvv\": \"123\",`+\"\n\"+`\n  \"clientIdentifier\": \"string\",`+\"\n\"+`\n  \"businessType\": \"AA\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"application/json\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "m2Ue7Qz6dVWcDZ36gKpPo"
  },
  "results": {
    "languages": [
      {
        "id": "-5D43_yNMyUekjZaiPAYE",
        "language": "200",
        "code": "{\n    \"id\": \"d706c741-e556-4101-a849-b42b00bfd7e9\",\n    \"clientIdentifier\": \"string\",\n    \"amount\": 1000,\n    \"paymentType\": \"Push\",\n    \"status\": \"Created\",\n    \"source\": \"OpsPortal\",\n    \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n    \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n    \"cardId\": \"26acd726-dade-4064-996a-b42b00b634df\",\n    \"cardToken\": \"11FB445C487140A9BEA51457A796172A000000\",\n    \"cardBrand\": \"Visa\",\n    \"panLastFour\": \"1111\",\n    \"issuerCountryCode\": \"US\",\n    \"correspondingEntity\": {\n        \"firstName\": \"Justina\",\n        \"lastName\": \"Jacobs\",\n        \"externalAccountIdentifier\": \"123456***1234\",\n        \"address\": {\n            \"street1\": \"511 Annalise Squares\",\n            \"street2\": \"\",\n            \"city\": \"Columbus\",\n            \"state\": \"NY\",\n            \"postalCode\": \"123456789\",\n            \"countryCode\": \"US\"\n        }\n    },\n    \"mcc\": \"9876\",\n    \"merchantVerificationValue\": \"123456\",\n    \"accountNumber\": \"2287979807\",\n    \"businessType\": \"AA\",\n    \"wasRefunded\": false,\n    \"createdAt\": \"2026-04-13T07:38:28.8271201-04:00\",\n    \"limitsEligibleOn\": \"2026-04-13T07:38:28.8271201-04:00\",\n    \"lastModifiedAt\": \"2026-04-13T07:38:28.9388613-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "-5D43_yNMyUekjZaiPAYE"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "cardId",
        "kind": "optional",
        "type": "string",
        "description": "",
        "": "cardId"
      },
      {
        "name": "cardToken",
        "kind": "optional",
        "type": "string",
        "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters).",
        "": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters)."
      },
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "The identifier for the account, as defined in COS.",
        "": "The identifier for the account, as defined in COS."
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "Integer",
        "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
        "children": []
      },
      {
        "name": "paymentType",
        "kind": "required",
        "type": "string",
        "description": "The type of payment. Value is either \"Push\" or \"Pull\"",
        "": "required"
      },
      {
        "name": "correspondingEntity",
        "kind": "optional",
        "type": "object",
        "description": "Information about who initiated the transaction",
        "": "optional",
        "children": [
          {
            "name": "firstName",
            "kind": "required",
            "type": "string",
            "description": "First name"
          },
          {
            "name": "lastName",
            "kind": "required",
            "type": "string",
            "description": "Last name"
          },
          {
            "name": "externalAccountIdentifier",
            "kind": "required",
            "type": "string",
            "description": "Account number to ensure the money movement is routed to the correct destination."
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "object",
            "description": "Address of the corresponding entity. This block is optional. When it is provided there are required fields as indicated",
            "children": [
              {
                "name": "street1",
                "kind": "required",
                "type": "string",
                "description": "Address information, street apartment etc"
              },
              {
                "name": "street2",
                "kind": "optional",
                "type": "string",
                "description": "Additional address information"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "CIty full name"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "State where corresponding entity is located"
              },
              {
                "name": "postalCode",
                "kind": "required",
                "type": "string",
                "description": "Postal code of address where correponding entity is loacted"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": " 2-letter ISO country code"
              }
            ]
          }
        ],
        "schema": [
          {
            "name": "firstName",
            "kind": "required",
            "type": "string",
            "description": "First name"
          },
          {
            "name": "lastName",
            "kind": "required",
            "type": "string",
            "description": "Last name"
          },
          {
            "name": "externalAccountIdentifier",
            "kind": "required",
            "type": "string",
            "description": "Account number to ensure the money movement is routed to the correct destination."
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "object",
            "description": "Address of the corresponding entity. This block is optional. When it is provided there are required fields as indicated",
            "children": [
              {
                "name": "street1",
                "kind": "required",
                "type": "string",
                "description": "Address information, street apartment etc"
              },
              {
                "name": "street2",
                "kind": "optional",
                "type": "string",
                "description": "Additional address information"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "CIty full name"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "State where corresponding entity is located"
              },
              {
                "name": "postalCode",
                "kind": "required",
                "type": "string",
                "description": "Postal code of address where correponding entity is loacted"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": " 2-letter ISO country code"
              }
            ]
          }
        ]
      },
      {
        "name": "mcc",
        "kind": "optional",
        "type": "string",
        "description": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card.",
        "": "mcc"
      },
      {
        "name": "cvv",
        "kind": "optional",
        "type": "string",
        "description": "Card Verification Value (CVV). 3 or 4-digits printed on card to help verify that the customer physically possesses the card during card-not-present transactions.",
        "": "Card Verification Value (CVV). 3 or 4-digits printed on card to help verify that the customer physically possesses the card during card-not-present transactions."
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "A string that identifies the client associated with the payment. Max 50 characters",
        "": "A string that identifies the client associated with the payment. Max 50 characters"
      },
      {
        "name": "businessType",
        "kind": "optional",
        "type": "string",
        "description": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'",
        "": "businessType"
      },
      {
        "name": "purposeOfPayment",
        "kind": "optional",
        "type": "string",
        "description": "The reason for the transaction. e.g. payroll. Needed for international. ",
        "": "purposeOfPayment"
      },
      {
        "name": "initiatorName",
        "kind": "optional",
        "type": "string",
        "description": "Per-payment merchant/sender name override for the cardholder's bank statement. Max 17 chars",
        "": "Per-payment merchant/sender name override for the cardholder's bank statement. Max 17 chars"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that is the primary identifier for the payment.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": " A string that identifies the client associated with the payment.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "string",
      "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the direction of the payment:\nPush -  Money sent out (e.g. disbursement to a customer)\nPull -  Money received (e.g. a charge to a customer's card)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "One of  \"Created\",\n                        \"Pending\",\n                        \"Authorized\",\n                        \"Submitted\",\n                        \"Processing\",\n                        \"Completed\",\n                        \"Rejected\",\n                        \"Failed\"",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the product, as defined in COS.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the partner, as defined in COS.",
      "children": []
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the card used.",
      "children": []
    },
    {
      "name": "cardToken",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "string",
      "description": "The network through which the payment is processed (e.g. Visa, Mastercard).",
      "children": []
    },
    {
      "name": "cardBrand",
      "kind": "optional",
      "type": "string",
      "description": "One of  \"AmericanExpress\",\n                        \"ChinaUnionPay\",\n                        \"Dankort\",\n                        \"DinersClub\",\n                        \"Discover\",\n                        \"Hipercard\",\n                        \"JCB\",\n                        \"Laser\",\n                        \"Maestro\",\n                        \"MasterCard\",\n                        \"RuPay\",\n                        \"Solo\",\n                        \"Switch\",\n                        \"Visa\",\n                        \"Unknown\"",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "The last four digits of the Primary Account Number (card number).",
      "children": []
    },
    {
      "name": "issuerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "A string representing the country code of the card issuer.",
      "children": []
    },
    {
      "name": "retrievalReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier used for retrieving transaction details, often used in disputes or reconciliation.",
      "children": []
    },
    {
      "name": "reasonCode",
      "kind": "optional",
      "type": "string",
      "description": "A 2-digit code signifying the transaction result (approved or decline). For example, 00 means successful.",
      "children": []
    },
    {
      "name": "reasonDescription",
      "kind": "optional",
      "type": "string",
      "description": "A string describing the transaction result. For example, Approved.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "A unique number assigned to a transaction from the time it leaves the merchant bank until it arrives at the cardholder bank",
      "children": []
    },
    {
      "name": "correspondingEntity",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": []
    },
    {
      "name": "mcc",
      "kind": "optional",
      "type": "string",
      "description": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card.",
      "children": []
    },
    {
      "name": "merchantVerificationValue",
      "kind": "optional",
      "type": "string",
      "description": "A value used to verify the merchant's identity.",
      "children": []
    },
    {
      "name": "initiatorName",
      "kind": "optional",
      "type": "string",
      "description": "Per-payment merchant/sender name override for the cardholder's bank statement. Max 17 chars",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number associated with the payment.",
      "children": []
    },
    {
      "name": "businessType",
      "kind": "optional",
      "type": "string",
      "description": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'",
      "children": []
    },
    {
      "name": "purposeOfPayment",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that links the payment to the core banking system.",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the corresponding memo post (a temporary transaction posting).",
      "children": []
    },
    {
      "name": "memoPostRemovedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the memo post was removed. I.e. When the temporary hold was released.",
      "children": []
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "boolean",
      "description": "Boolean value indicating whether the payment has been refunded.",
      "children": []
    },
    {
      "name": "refundPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the refund transaction associated with the payment.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was created",
      "children": []
    },
    {
      "name": "authorizedOn",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was authorized by the issuing bank.",
      "children": []
    },
    {
      "name": "submittedOn",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was submitted to the network.",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was rejected.",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was successfully completed.",
      "children": []
    },
    {
      "name": "failedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment failed to process.",
      "children": []
    },
    {
      "name": "limitsEligibleOn",
      "kind": "optional",
      "type": "string",
      "description": "When the transaction becomes eligible for limit calculations.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment record was last modified.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1payments",
  "legacyHash": "AhHh_9ZYMt-U1G3BS7Rdj"
}
```
:::


[title] Credit transfer
[path] Payments/Instant payments/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Rtp.Payment.Sent](docId\:ffGq2OHYEbWPzn2old6Mc)&#x20;
- [Rpt.Payment.Rejected](docId\:ffGq2OHYEbWPzn2old6Mc)&#x20;
- `Rtp.Payment.ResearchRequired`
- `Rtp.Payment.Queued`

## API reference

Post a payment by ID. Initiates an instant payment credit transfer. Enables real-time fund transfers from your account to the recipient's account. Transfers can originate from:

- Master account
- Deposit account (DDA)
- Associated subledger

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/v1/payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "tiU4cYZv2OBskCr5TaQ-D",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/rtp/v1/payments' ^\n-d '{\n    \"accountNumber\": \"2955057589\",\n    \"amount\": 10000,\n    \"creditor\": {\n        \"routingNumber\": \"011000138\", \n        \"accountNumber\": \"456789000\",\n        \"name\": \"Richard Robert\",\n        \"addressStreetName\": \"Speedway Blvd\",\n        \"addressBuildingNumber\": \"3366\",\n        \"addressCity\": \"Talladega\",\n        \"addressState\": \"AL\",\n        \"addressPostalCode\": \"35096\",\n        \"addressCountry\": \"US\"\n    },\n    \"purpose\": \"Sponsor donation\",\n    \"clientIdentifier\": \"3e4ac46c-fa9e-4654-80b8-83f971622dfd\"\n}'",
        "customLabel": ""
      },
      {
        "id": "e7_MGvGr9RFogBP377bSI",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/rtp/v1/payments',\n  'headers': {\n    'Idempotency-key': '3e4ac46c-fa9e-4654-80b8-83f971622dfd'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n    \\\"accountNumber\\\": \\\"2955057589\\\",\\r\\n    \\\"amount\\\": 10000,\\r\\n    \\\"creditor\\\": {\\r\\n        \\\"routingNumber\\\": \\\"011000138\\\", \\n        \\\"accountNumber\\\": \\\"456789000\\\",\\r\\n        \\\"name\\\": \\\"Richard Robert\\\",\\r\\n        \\\"addressStreetName\\\": \\\"Speedway Blvd\\\",\\r\\n        \\\"addressBuildingNumber\\\": \\\"3366\\\",\\r\\n        \\\"addressCity\\\": \\\"Talladega\\\",\\r\\n        \\\"addressState\\\": \\\"AL\\\",\\r\\n        \\\"addressPostalCode\\\": \\\"35096\\\",\\r\\n        \\\"addressCountry\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"purpose\\\": \\\"Sponsor donation\\\",\\r\\n    \\\"clientIdentifier\\\": \\\"3e4ac46c-fa9e-4654-80b8-83f971622dfd\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "wgLk1We4hZ2bo86Qu5WUm",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/rtp/v1/payments\"\n\npayload = \"{\\r\\n    \\\"accountNumber\\\": \\\"2955057589\\\",\\r\\n    \\\"amount\\\": 10000,\\r\\n    \\\"creditor\\\": {\\r\\n        \\\"routingNumber\\\": \\\"011000138\\\", \\n        \\\"accountNumber\\\": \\\"456789000\\\",\\r\\n        \\\"name\\\": \\\"Richard Robert\\\",\\r\\n        \\\"addressStreetName\\\": \\\"Speedway Blvd\\\",\\r\\n        \\\"addressBuildingNumber\\\": \\\"3366\\\",\\r\\n        \\\"addressCity\\\": \\\"Talladega\\\",\\r\\n        \\\"addressState\\\": \\\"AL\\\",\\r\\n        \\\"addressPostalCode\\\": \\\"35096\\\",\\r\\n        \\\"addressCountry\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"purpose\\\": \\\"Sponsor donation\\\",\\r\\n    \\\"clientIdentifier\\\": \\\"3e4ac46c-fa9e-4654-80b8-83f971622dfd\\\"\\r\\n}\"\nheaders = {\n  'Idempotency-key': '3e4ac46c-fa9e-4654-80b8-83f971622dfd'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "X4ADOGUm_W4tsfRSqkSRO",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/rtp/v1/payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"3e4ac46c-fa9e-4654-80b8-83f971622dfd\"\nrequest.body = \"{\\r\\n    \\\"accountNumber\\\": \\\"2955057589\\\",\\r\\n    \\\"amount\\\": 10000,\\r\\n    \\\"creditor\\\": {\\r\\n        \\\"routingNumber\\\": \\\"011000138\\\", \\n        \\\"accountNumber\\\": \\\"456789000\\\",\\r\\n        \\\"name\\\": \\\"Richard Robert\\\",\\r\\n        \\\"addressStreetName\\\": \\\"Speedway Blvd\\\",\\r\\n        \\\"addressBuildingNumber\\\": \\\"3366\\\",\\r\\n        \\\"addressCity\\\": \\\"Talladega\\\",\\r\\n        \\\"addressState\\\": \\\"AL\\\",\\r\\n        \\\"addressPostalCode\\\": \\\"35096\\\",\\r\\n        \\\"addressCountry\\\": \\\"US\\\"\\r\\n    },\\r\\n    \\\"purpose\\\": \\\"Sponsor donation\\\",\\r\\n    \\\"clientIdentifier\\\": \\\"3e4ac46c-fa9e-4654-80b8-83f971622dfd\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "sgGObAcLzTYqwOY1demwE",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/rtp/v1/payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"accountNumber\": \"2955057589\",`+\"\n\"+`\n    \"amount\": 10000,`+\"\n\"+`\n    \"creditor\": {`+\"\n\"+`\n        \"routingNumber\": \"011000138\", \n        \"accountNumber\": \"456789000\",`+\"\n\"+`\n        \"name\": \"Richard Robert\",`+\"\n\"+`\n        \"addressStreetName\": \"Speedway Blvd\",`+\"\n\"+`\n        \"addressBuildingNumber\": \"3366\",`+\"\n\"+`\n        \"addressCity\": \"Talladega\",`+\"\n\"+`\n        \"addressState\": \"AL\",`+\"\n\"+`\n        \"addressPostalCode\": \"35096\",`+\"\n\"+`\n        \"addressCountry\": \"US\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"purpose\": \"Sponsor donation\",`+\"\n\"+`\n    \"clientIdentifier\": \"3e4ac46c-fa9e-4654-80b8-83f971622dfd\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"3e4ac46c-fa9e-4654-80b8-83f971622dfd\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tiU4cYZv2OBskCr5TaQ-D"
  },
  "results": {
    "languages": [
      {
        "id": "ZA7E-VGG1EUptPxfRE3CS",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"8177d9d1-e706-49f3-b0a3-b300009ffcf3\",\n    \"originalPaymentId\": \"8177d9d1-e706-49f3-b0a3-b300009ffcf3\",\n    \"referenceId\": \"R169O74976262\",\n    \"accountNumber\": \"2955057589\",\n    \"clientIdentifier\": \"3e4ac46c-fa9e-4654-80b8-83f971622dfd\",\n    \"amount\": 1500,\n    \"direction\": \"Outbound\",\n    \"status\": \"Created\",\n    \"paymentType\": \"CreditTransfer\",\n    \"source\": \"Api\",\n    \"transactionAccountContext\": \"NotSubmitted\",\n    \"debtor\": {\n        \"routingNumber\": \"021214891\",\n        \"accountNumber\": \"2955057589\",\n        \"name\": \"Dim Mak\",\n        \"addressStreetName\": \"400 Kelby St\",\n        \"addressCity\": \"Fort Lee\",\n        \"addressState\": \"NJ\",\n        \"addressPostalCode\": \"07024\",\n        \"addressCountry\": \"US\"\n    },\n    \"creditor\": {\n        \"routingNumber\": \"011000138\",\n        \"accountNumber\": \"456789000\",\n        \"name\": \"Richard Robert\",\n        \"addressStreetName\": \"Speedway Blvd\",\n        \"addressBuildingNumber\": \"3366\",\n        \"addressCity\": \"Talladega\",\n        \"addressState\": \"AL\",\n        \"addressPostalCode\": \"35096\",\n        \"addressCountry\": \"US\"\n    },\n    \"network\": {\n        \"businessMessageId\": \"B20250618021214273T1BUBT97200579713\",\n        \"messageId\": \"M20250618021214273T1BZZD70574502544\",\n        \"createdAt\": \"2025-06-18T05:42:29.9268876-04:00\",\n        \"numberOfTransactions\": 1,\n        \"interbankSettlementAmount\": 1500,\n        \"currency\": \"USD\",\n        \"interbankSettlementDate\": \"2025-06-18\",\n        \"settlementMethod\": \"CLRG\",\n        \"clearingSystemCode\": \"TCH\",\n        \"instructionId\": \"20250618021214273T1B7OD838696205667\",\n        \"endToEndId\": \"eb80f3de5bf84751bdf7b300009ffcf3\",\n        \"transactionId\": \"20250618021214273T1B7OD838696205667\",\n        \"fromParticipantId\": \"021214273T1\",\n        \"toParticipantId\": \"990000001S1\",\n        \"instructingRoutingNumber\": \"021214891\",\n        \"instructedRoutingNumber\": \"011000138\",\n        \"headerCreationDate\": \"2025-06-18T05:42:29.9268876-04:00\",\n        \"messageCreationDateTime\": \"2025-06-18T05:42:29.9268876-04:00\"\n    },\n    \"serviceLevelCode\": \"SDVA\",\n    \"localInstrumentProprietary\": \"STANDARD\",\n    \"categoryPurpose\": \"CONSUMER\",\n    \"currency\": \"USD\",\n    \"chargeBearer\": \"SLEV\",\n    \"purpose\": \"Sponsor donation\",\n    \"wasRefunded\": false,\n    \"wasPaid\": false,\n    \"createdAt\": \"2025-06-18T05:42:29.9268876-04:00\",\n    \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"lastModifiedAt\": \"2025-06-18T05:42:29.9268876-04:00\",\n    \"sendAttemptCount\": 0,\n    \"discounts\": [],\n    \"awaitingResponse\": false,\n    \"limitsEligibleOn\": \"2025-06-18T05:42:29.9268876-04:00\",\n    \"networkPlatform\": \"TCH\"\n}"
      },
      {
        "id": "uzha3pUwNDYMMO_ww9A6y",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2221,\n            \"message\": \"Custom originator data not allowed for account\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ZA7E-VGG1EUptPxfRE3CS"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account that funds the payment"
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "Integer",
        "description": "Dollar amount of transaction in positive integral cents. For example, write $1.00 as 100.",
        "children": []
      },
      {
        "name": "debtor",
        "kind": "optional",
        "type": "Object",
        "description": "Debtor Business/Individual Information. Depending on the configuration, this might be populated automatically.",
        "children": [
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
          },
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Legal name of entity. 140 characters maximum."
          },
          {
            "name": "birthCity",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth city. 35 characters maximum."
          },
          {
            "name": "birthcountry",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth date. Formatted as yyyy-mm-dd."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ],
        "schema": [
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
          },
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Legal name of entity. 140 characters maximum."
          },
          {
            "name": "birthCity",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth city. 35 characters maximum."
          },
          {
            "name": "birthcountry",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth date. Formatted as yyyy-mm-dd."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ]
      },
      {
        "name": "ultimateDebtor",
        "kind": "optional",
        "type": "Object",
        "description": "Ultimate debtor business/individual information",
        "children": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Legal name of entity. 140 characters maximum."
          },
          {
            "name": "privateId",
            "kind": "optional",
            "type": "string",
            "description": "Unique and unambiguous identification of a person. For example, passport or driving license number."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ],
        "schema": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Legal name of entity. 140 characters maximum."
          },
          {
            "name": "privateId",
            "kind": "optional",
            "type": "string",
            "description": "Unique and unambiguous identification of a person. For example, passport or driving license number."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ]
      },
      {
        "name": "creditor",
        "kind": "required",
        "type": "Object",
        "description": "Creditor business/individual information",
        "children": [
          {
            "name": "routingNumber",
            "kind": "required",
            "type": "string",
            "description": "9-digit routing number of the receiving financial institution"
          },
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name of entity. 140 characters maximum."
          },
          {
            "name": "birthCity",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth city. 35 characters maximum."
          },
          {
            "name": "birthCountry",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth date. Formatted as yyyy-mm-dd."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "asdressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ],
        "schema": [
          {
            "name": "routingNumber",
            "kind": "required",
            "type": "string",
            "description": "9-digit routing number of the receiving financial institution"
          },
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name of entity. 140 characters maximum."
          },
          {
            "name": "birthCity",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth city. 35 characters maximum."
          },
          {
            "name": "birthCountry",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Creditor birth date. Formatted as yyyy-mm-dd."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "asdressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ]
      },
      {
        "name": "ultimateCreditor",
        "kind": "optional",
        "type": "Object",
        "description": "Ultimate creditor business/individual information",
        "children": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name of entity. 140 characters maximum."
          },
          {
            "name": "privateId",
            "kind": "optional",
            "type": "string",
            "description": "Unique and unambiguous identification of a person. For example, passport or driving license number."
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions. 20 characters maximum."
          },
          {
            "name": "addressStreetNameadd",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information. 70 characters maximum."
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information. 70 characters maximum."
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number. 16 characters maximum."
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name. 35 characters maximum."
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          }
        ]
      },
      {
        "name": "purpose",
        "kind": "optional",
        "type": "string",
        "description": "Internal CR field used to include a short description of the purpose of the payment. The RDFI does not see this field. 50 characters maximum.",
        "children": []
      },
      {
        "name": "remittanceData",
        "kind": "optional",
        "type": "string",
        "description": "A description of the payment, meaning, the remittance advice. Use this field for any remittance information that doesn't have its own field. 140 characters maximum.",
        "children": []
      },
      {
        "name": "remittanceLocation",
        "kind": "optional",
        "type": "Object",
        "description": "Remittance location information",
        "children": [
          {
            "name": "method",
            "kind": "required",
            "type": "string",
            "description": "Method used to deliver the remittance advice information: EMAIL or URID."
          },
          {
            "name": "eAddress",
            "kind": "required",
            "type": "string",
            "description": "The electronic address where the agent should send the remittance information. This is only populated if the method value is EMAIL."
          }
        ]
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. 50 characters maximum.",
        "children": []
      },
      {
        "name": "networkPlatform",
        "kind": "optional",
        "type": "string",
        "description": "The payment network platform used to process the payment. Possible values are: TCH (for RTP via The Clearing House), FedNow, or CRNow.",
        "children": []
      },
      {
        "name": "queuedPaymentExpiresAt",
        "kind": "optional",
        "type": "string",
        "description": "Date and time that a queued payment will expire (payment canceled) if the receiving FI is offline, in this format: yyyy-mm-ddThh:mm:ss[.mmm]. Not sent to TCH/Fed.",
        "children": []
      },
      {
        "name": "queuedPaymentExpiresAfterInSeconds",
        "kind": "optional",
        "type": "Integer",
        "description": "The time interval (in seconds) after which a queued payment will expire if the receiving FI remains offline. This is not sent to TCH or Fed.\n\nIf both queuedPaymentExpiresAt and this attribute are provided, this attribute will take precedence. [preferred by Cross River]",
        "": "The time interval (in seconds) after which a queued payment will expire if the receiving FI remains offline. This is not sent to TCH or Fed.\n\nIf both queuedPaymentExpiresAt and this attribute are provided, this attribute will take precedence. [preferred by Cross River]"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The payment ID. This first appears in the initial response to the originate a payment request. This ID is in GUID format."
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Original payment ID (only relevant if a payment didn't go through for some reason).",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "This unique Cross River reference ID starts with the first letter of the payment rail. For Instant Payments, the ID begins with R to reflect the RTP API module.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account that funds the payment",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier assigned to the payment call or COS record. This value reflects the identifier provided in the original request and helps ensure idempotency.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of transaction in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "operatorCoreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "The Instant Payments-related Cross River system transaction ID",
      "children": []
    },
    {
      "name": "authorizationTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of an authorization transaction created when Cross River receives an inbound credit transfer that refunds a previously sent outbound transfer. This authorization confirms that Cross River can post the transaction to the creditor’s (receiver’s) COS account (e.g., no restrictions or account closures) and allows Cross River to notify the real-time payment network of acceptance.",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the memo post",
      "children": []
    },
    {
      "name": "memoPostRemovedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time the memo post was removed\n",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Outbound for an outbound credit transfer or Inbound for an inbound credit transfer",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Transaction status:\n\n-Created\n-Pending\n-Processing\n-Completed\n-Rejected\n-Canceled\n-Hold\n-TimedOut\n-Finalizing\n-Failed\n-ResearchRequired\n-Expired\n-Authorized\n-Queued",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Type of payment indicating how the transaction is funded:\n\n-CreditTransfer\n-SystemTimeout\n-ReturnRequest\n-ReturnResponse\n-RemittanceAdvice\n-RequestForInformation\n-PaymentAck\n-RequestForPayment\n-RequestForPaymentResponse\n-RequestForInformationResponse\n-RequestForPaymentCancellation\n-PaymentReturn\n-PaymentStatusRequest\n-Unknown\n",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "The source of the activity:\n\n-Phone\n-Fax\n-Email\n-ClearingHouse\n-Api\n-RtpSystemTimeout\n-OpsPortal\n-PartnerPortal\n-ReturnOfFunds\n-AutoResend\n-FedNow\n-CRNow",
      "children": []
    },
    {
      "name": "transactionAccountContext",
      "kind": "optional",
      "type": "string",
      "description": "Transaction account context:\n\n-NotSubmitted\n-Pending\n-Processing\n-Complete\n-Reversal\n-MemoPost\n-TimedOut\n-Canceled\n-Rejected\n-AuthOnly\n-NotSet",
      "children": []
    },
    {
      "name": "rtpTransactionsStatus",
      "kind": "optional",
      "type": "string",
      "description": "The payment status set by the receiving institution, applicable to Credit Transfers.\n\nThis value is only present for outbound payments. See available values here.",
      "children": []
    },
    {
      "name": "debtor",
      "kind": "optional",
      "type": "Object",
      "description": "Debtor business/individual information",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit routing number of the sending financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "birthCity",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth city"
        },
        {
          "name": "birthCountry",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth country. 2-letter country code."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth date. Formatted as yyyy-mm-dd."
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "proxyId",
          "kind": "optional",
          "type": "string",
          "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "10-digit phone number"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "ultimateDebtor",
      "kind": "optional",
      "type": "Object",
      "description": "Ultimate debtor business/individual information",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "privateId",
          "kind": "optional",
          "type": "string",
          "description": "Unique and unambiguous identification of a person, for example, a passport number"
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "creditor",
      "kind": "optional",
      "type": "Object",
      "description": "Creditor business/individual information",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit routing number of the receiving financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "birthCity",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth city"
        },
        {
          "name": "birthCountry",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth country. 2-letter country code."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth date. Formatted as yyyy-mm-dd."
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions."
        },
        {
          "name": "proxyId",
          "kind": "optional",
          "type": "string",
          "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address."
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "10-digit phone number"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "ultimateCreditor",
      "kind": "optional",
      "type": "Object",
      "description": "Ultimate creditor business/individual information.",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "privateId",
          "kind": "optional",
          "type": "string",
          "description": "Unique and unambiguous identification of a person, for example, a passport number"
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "addressStreetNameadd",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "Object",
      "description": "Network information",
      "children": [
        {
          "name": "messageDefId",
          "kind": "optional",
          "type": "string",
          "description": "Contains the ISO 20022 Message Identifier specifying the business message"
        },
        {
          "name": "businessMessageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the business message"
        },
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the message"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Indicates when the pacs.008 message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "numberOfTransactions",
          "kind": "optional",
          "type": "Integer",
          "description": "The total count of transactions"
        },
        {
          "name": "interbankSettlementAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The total amount the Debtor FI must pay to the Creditor FI once the Creditor FI accepts the payment instructed by the Credit Transfer message"
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the payment"
        },
        {
          "name": "interbankSettlementDate",
          "kind": "optional",
          "type": "string",
          "description": "The date linked to the reconciliation window, used in RTP alongside the clearing system reference to allocate a credit transfer to a specific reconciliation window"
        },
        {
          "name": "settlementMethod",
          "kind": "optional",
          "type": "string",
          "description": "The method used to settle an individual credit transfer processed through RTP"
        },
        {
          "name": "clearingSystemCode",
          "kind": "optional",
          "type": "string",
          "description": "The code used to specify the Clearing System used to settle the credit transfer. For RTP the clearing system code is TCH."
        },
        {
          "name": "instructionId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID assigned by the Instructing Agent for the credit transfer while it remains active within the RTP system. \n\nThis ID serves as the unique identifier for the Credit Transfer within the Instant Payments network.\n"
        },
        {
          "name": "endToEndId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID assigned by the initiating party to identify and track the transaction"
        },
        {
          "name": "transactionId",
          "kind": "optional",
          "type": "string",
          "description": "A unique string in GUID format that clearly identifies the transaction. This ID passes unchanged the whole interbank chain.\n\nThis ID serves as the unique identifier for the Credit Transfer within the Instant Payments network."
        },
        {
          "name": "clearingSystemRef",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the reconciliation window in which the credit transfer was settled"
        },
        {
          "name": "fromParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "The unique identifier of the participant sending the message on the Instant Payment network platform"
        },
        {
          "name": "toParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "The unique identifier of the participant receiving the message on the Instant Payment network platform"
        },
        {
          "name": "fromBranchId",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the specific branch of a financial institution that sent the message, used exclusively for routing purposes in Instant Payments"
        },
        {
          "name": "toBranchId",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the specific branch of a financial institution that received the message, used exclusively for routing purposes in Instant Payments"
        },
        {
          "name": "instructingRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Sending bank routing number"
        },
        {
          "name": "instructedRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Receiving bank routing number"
        },
        {
          "name": "copyDuplicate",
          "kind": "optional",
          "type": "string",
          "description": "Used by financial institutions when resending a message with an unknown outcome from the original request. This flag helps TCH prevent duplicate message processing."
        },
        {
          "name": "headerCreationDate",
          "kind": "optional",
          "type": "string",
          "description": "Internal to CR"
        },
        {
          "name": "messageCreationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time when the credit transfer message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "uetr",
          "kind": "optional",
          "type": "string",
          "description": "A Unique End-to-end Transaction Reference (UETR) is a string of 36 unique characters featured in all payment instruction messages carried over Swift. "
        }
      ]
    },
    {
      "name": "assignment",
      "kind": "optional",
      "type": "Object",
      "description": "Assignment details provided when an investigation is initiated. The assigner is the sender of the confirmation, and the assignee is the receiver.",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "A 35-character identifier representing the assignment of an investigation case from the assigner to the assignee"
        },
        {
          "name": "creationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time the item was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "assignerRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the message sender, who is the assigner of the case"
        },
        {
          "name": "assigneeRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the message receiver, who is the assignee of the case"
        }
      ]
    },
    {
      "name": "cancelTransaction",
      "kind": "optional",
      "type": "Object",
      "description": "Cancel transaction information",
      "children": [
        {
          "name": "cancelStatusId",
          "kind": "optional",
          "type": "string",
          "description": "The unique identifier issued by TCH for a canceled request for the return of funds"
        },
        {
          "name": "resolvedInterbankAmount",
          "kind": "optional",
          "type": "string",
          "description": "The total amount the Debtor FI must pay to the Creditor FI once the Creditor FI accepts the payment instructed by the Credit Transfer (pacs.008) message."
        },
        {
          "name": "resolvedInterbankDate",
          "kind": "optional",
          "type": "string",
          "description": "The date linked to the reconciliation WindowClosed (clearing system reference). This value is used in instant payments, alongside the clearing system reference, to allocate a credit transfer to a specific reconciliation window."
        },
        {
          "name": "chargesAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "Details regarding charges that are the responsibility of the charge bearer(s) in relation to the credit transfer"
        },
        {
          "name": "chargesRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the party responsible for covering any charges related to the credit transfer"
        },
        {
          "name": "clearingChannel",
          "kind": "optional",
          "type": "string",
          "description": "The method or channel used to process the payment instruction"
        }
      ]
    },
    {
      "name": "originalMsgRefs",
      "kind": "optional",
      "type": "Object",
      "description": "Reference details from the original message associated with the transaction",
      "children": [
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Message ID"
        },
        {
          "name": "messageNameId",
          "kind": "optional",
          "type": "string",
          "description": "Message name ID"
        },
        {
          "name": "creationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time the original message was created, formatted as ddThh:mm:ss[.mmm]"
        },
        {
          "name": "instructionId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID of the credit transfer assigned by the Instructing Agent while it remains in the RTP system"
        },
        {
          "name": "endToEndId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID assigned by the initiating party to identify the transaction"
        },
        {
          "name": "transactionId",
          "kind": "optional",
          "type": "string",
          "description": "A unique GUID-format string that distinctly identifies the transaction and remains unchanged throughout the entire interbank chain"
        },
        {
          "name": "clearingSystemRef",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the reconciliation window during which the credit transfer was settled"
        },
        {
          "name": "interbankSettlementAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The total amount the Debtor FI is required to pay to the Creditor FI once the Creditor FI accepts the payment instructed by the Credit Transfer message"
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the payment"
        },
        {
          "name": "interbankSettlementDate",
          "kind": "optional",
          "type": "string",
          "description": "The date linked to the Reconciliation WindowClosed (clearing system reference). This value is used in instant payments, alongside the clearing system reference, to allocate a credit transfer to a specific reconciliation window."
        },
        {
          "name": "paymentInfoId",
          "kind": "optional",
          "type": "string",
          "description": "Payment information ID"
        },
        {
          "name": "uetr",
          "kind": "optional",
          "type": "string",
          "description": "A Unique End-to-end Transaction Reference (commonly known as a UETR) is a string of 36 unique characters featured in all payment instruction messages carried over Swift. "
        }
      ]
    },
    {
      "name": "case",
      "kind": "optional",
      "type": "Object",
      "description": "Case object information",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "A unique identifier for the investigation case related to a Request for Return of Funds."
        },
        {
          "name": "creatorRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the entity that created the investigation case"
        },
        {
          "name": "originatorName",
          "kind": "optional",
          "type": "string",
          "description": "The entity that initiated the Request for Return of Funds"
        },
        {
          "name": "originatorRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the financial institution (FI) that initiated the Request for Return of Funds"
        }
      ]
    },
    {
      "name": "remittanceAdvice",
      "kind": "optional",
      "type": "Object",
      "description": "Remittance advice information",
      "children": [
        {
          "name": "remittanceIdentification",
          "kind": "optional",
          "type": "string",
          "description": "A unique identifier assigned by the initiating party to clearly distinguish the remittance information sent separately from the payment instruction, such as a remittance advice"
        },
        {
          "name": "origInstructionId",
          "kind": "optional",
          "type": "string",
          "description": "The original unique ID of the credit transfer, assigned by the Instructing Agent while it remains in the RTP system"
        },
        {
          "name": "origEndToEndId",
          "kind": "optional",
          "type": "string",
          "description": "The original unique ID set by the initiating party to identify the transaction, referring to a previous payment message"
        },
        {
          "name": "origTransactionId",
          "kind": "optional",
          "type": "string",
          "description": "A unique GUID-format string that clearly identifies the transaction, referring to a previous payment message. This ID remains unchanged throughout the entire interbank chain."
        },
        {
          "name": "origPaymentInfoId",
          "kind": "optional",
          "type": "string",
          "description": "A unique identifier assigned by the original sending party to clearly distinguish the original payment information group"
        },
        {
          "name": "origInstructedAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The amount of money specified in the original transaction to be transferred between the debtor and creditor, before any charges are deducted, expressed in the currency requested by the original initiating party"
        },
        {
          "name": "origInstructedAmountCurrency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the original transaction"
        }
      ]
    },
    {
      "name": "reportedStatus",
      "kind": "optional",
      "type": "Object",
      "description": "Reported status information",
      "children": [
        {
          "name": "messageStatusReportId",
          "kind": "optional",
          "type": "string",
          "description": "Message status report identifier. This is in GUID format."
        },
        {
          "name": "acceptedDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The point in time when the account servicing agent says that all the needed information has been received, such as the payment order itself, the authorization, and confirmation that there are enough funds in the account, In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "transactionStatus",
          "kind": "optional",
          "type": "string",
          "description": "Transaction status of a single payment instruction"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "A code specifying the reason a transaction did not complete. Refer to the list of reason codes for more details."
        },
        {
          "name": "additionalInfo",
          "kind": "optional",
          "type": "string",
          "description": "Provides supplementary details regarding the status report"
        },
        {
          "name": "reasonProprietary",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the local instrument using a proprietary code"
        }
      ]
    },
    {
      "name": "confirmedStatus",
      "kind": "optional",
      "type": "Object",
      "description": "Confirmed status information",
      "children": [
        {
          "name": "messageStatusReportId",
          "kind": "optional",
          "type": "string",
          "description": "The unique identifier for the message status report, provided in GUID format"
        },
        {
          "name": "acceptedDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The point in time when the account servicing agent confirms receipt of all necessary information, including the payment order, authorization, and sufficient funds in the account. The date and time are formatted as yyyy-mm-ddThh:mm:ss[.mmm]."
        },
        {
          "name": "transactionStatus",
          "kind": "optional",
          "type": "string",
          "description": "The current status of an individual payment instruction within the transaction process"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "A code specifying the reason a transaction did not complete. Refer to the list of reason codes for more details."
        },
        {
          "name": "additionalInfo",
          "kind": "optional",
          "type": "string",
          "description": "Provides supplementary details regarding the status report"
        },
        {
          "name": "reasonProprietary",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the local instrument using a proprietary code"
        }
      ]
    },
    {
      "name": "alternateRefundRailDetail",
      "kind": "optional",
      "type": "Object",
      "description": "Details of a refunded payment",
      "children": [
        {
          "name": "rail",
          "kind": "optional",
          "type": "string",
          "description": "The payment rail used to process the refund:\n- ACH\n- Wires"
        },
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "The GUID-format payment ID of the original transaction"
        }
      ]
    },
    {
      "name": "transactionInfo",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the transaction",
      "children": [
        {
          "name": "status",
          "kind": "optional",
          "type": "String",
          "description": "The current status of a single payment instruction within the transaction process"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "A code that specifies the reason a transaction did not complete. Refer to the list of reason codes for details."
        },
        {
          "name": "additionalInfo",
          "kind": "optional",
          "type": "string",
          "description": "Provides supplementary details regarding the status report"
        },
        {
          "name": "reasonProprietary",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the local instrument by using a proprietary code"
        }
      ]
    },
    {
      "name": "serviceLevelCode",
      "kind": "optional",
      "type": "string",
      "description": "Indicates a pre-arranged service or service level agreed upon between the parties",
      "children": []
    },
    {
      "name": "localInstrumentPropriety",
      "kind": "optional",
      "type": "string",
      "description": "Specifies whether the Debtor is a business or consumer customer of the Debtor FI. This element also indicates if the Debtor is a domestic customer of the Debtor FI or a customer of a foreign branch or affiliate.",
      "children": []
    },
    {
      "name": "categoryPurpose",
      "kind": "optional",
      "type": "string",
      "description": "Details from the initiating party regarding payment processing, based on predefined categories. Certain values may initiate special processing by various parties involved in the payment chain.",
      "children": []
    },
    {
      "name": "initiatingPartyName",
      "kind": "optional",
      "type": "string",
      "description": "Name of initiating party/entity",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the payment",
      "children": []
    },
    {
      "name": "chargeBearer",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the party (or parties) responsible for bearing the charges related to processing the credit transfer",
      "children": []
    },
    {
      "name": "remittanceIdentification",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier assigned by the initiating party to clearly distinguish the remittance information sent separately from the payment instruction, such as a remittance advice",
      "children": []
    },
    {
      "name": "remittanceData",
      "kind": "optional",
      "type": "string",
      "description": "A description of the payment, serving as the remittance advice. This field is used for any remittance information that does not have a designated field.",
      "children": []
    },
    {
      "name": "remittanceReferredDocNumber",
      "kind": "optional",
      "type": "string",
      "description": "When a Credit Transfer is used to return funds from a previously completed Credit Transfer, the original Credit Transfer's identification will be included in these fields. For Bill Pay use cases, this may represent the end customer’s account number within the biller’s system or an invoice number.",
      "children": []
    },
    {
      "name": "remittanceReferredRelatedDate",
      "kind": "optional",
      "type": "string",
      "description": "The date linked to the document identified by the remittanceReferredDocNumber, formatted as yyyy-mm-dd.",
      "children": []
    },
    {
      "name": "paymentInfoId",
      "kind": "optional",
      "type": "string",
      "description": "Payment information ID",
      "children": []
    },
    {
      "name": "reqExecutionDate",
      "kind": "optional",
      "type": "Object",
      "description": "Requested execution date information",
      "children": [
        {
          "name": "date",
          "kind": "optional",
          "type": "string",
          "description": "The requested date and time of the payment, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "dateType",
          "kind": "optional",
          "type": "string",
          "description": "The date type"
        }
      ]
    },
    {
      "name": "expiryDate",
      "kind": "optional",
      "type": "Object",
      "description": "Expiry date information",
      "children": [
        {
          "name": "date",
          "kind": "optional",
          "type": "string",
          "description": "The expiry date and time of the payment, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "dateType",
          "kind": "optional",
          "type": "string",
          "description": "The date type"
        }
      ]
    },
    {
      "name": "paymentConditions",
      "kind": "optional",
      "type": "Object",
      "description": "Payment conditions information",
      "children": [
        {
          "name": "guaranteedPayRequest",
          "kind": "optional",
          "type": "Boolean",
          "description": "Indicates whether the Debtor Agent guarantees the payment. True if a payment guarantee contract exists between the involved parties, otherwise False."
        }
      ]
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River field used to include a short description of the purpose of the payment. The RDFI does not see this field. ",
      "children": []
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was refunded. True if refunded, otherwise False.",
      "children": []
    },
    {
      "name": "wasPaid",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was received. True if received, otherwise False.",
      "children": []
    },
    {
      "name": "duplicatedPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "If the payment was duplicated, this field contains the payment ID of the duplicate in GUID format",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was rejected, formatted as yyyy-mm-ddThh:mm:ss[.mmm]. If the transfer was not rejected, this field will be null.",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was completed, formatted as yyyy-mm-ddThh:mm:ss[.mmm]. If the transfer was not completed, this field will be null.",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was canceled, formatted as yyyy-mm-ddThh:mm:ss[.mmm]. If the transfer was not canceled, this field will be null.",
      "children": []
    },
    {
      "name": "timedOutAt",
      "kind": "optional",
      "type": "String",
      "description": "The date and time when the credit transfer timed out, formatted as yyyy-mm-ddThh:mm:ss[.mmm]. If the transfer did not time out, this field will be null.",
      "children": []
    },
    {
      "name": "failedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer failed, formatted as yyyy-mm-ddThh:mm:ss[.mmm]. If the transfer has not failed, this field will be null.",
      "children": []
    },
    {
      "name": "expiredAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer expired, formatted as yyyy-mm-ddThh:mm:ss[.mmm]. If the transfer has not expired, this field will be null.",
      "children": []
    },
    {
      "name": "processingStartedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer began processing, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the payment status, which may include:\n\nOK – Posted\nRES – Account Restricted\nNSF – Insufficient Funds in the sending account",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "The GUID representing the ID of your specific product type associated with the account. This is provided by Cross River and identifies the Cross River account involved in the transfer.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "refundsPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The GUID representing the ID of the payment refund",
      "children": []
    },
    {
      "name": "sentAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time the credit transfer was sent, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "sendAttemptCount",
      "kind": "optional",
      "type": "Integer",
      "description": "The total count of attempts to send the credit transfer\n",
      "children": []
    },
    {
      "name": "result",
      "kind": "optional",
      "type": "Object",
      "description": "Results information",
      "children": [
        {
          "name": "code",
          "kind": "optional",
          "type": "string",
          "description": "\nA code representing the outcome of the payment. \"OK\" indicates success, while other codes specify the reason for rejection."
        },
        {
          "name": "additionalInfo",
          "kind": "optional",
          "type": "string",
          "description": "Any additional information"
        }
      ]
    },
    {
      "name": "remittanceLocation",
      "kind": "optional",
      "type": "Object",
      "description": "Remittance location information",
      "children": [
        {
          "name": "method",
          "kind": "optional",
          "type": "string",
          "description": "Method used to deliver the remittance advice information: EMAIL or URID"
        },
        {
          "name": "eAddress",
          "kind": "optional",
          "type": "string",
          "description": "The electronic address where the agent should send the remittance information. This is only populated if the method value is EMAIL."
        }
      ]
    },
    {
      "name": "awaitingResponse",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether a message response is pending. True if waiting, otherwise False.\n",
      "children": []
    },
    {
      "name": "referencePaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The Cross River payment ID used to reference cases where a credit transfer is associated with a previous payment. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "limitsEligibleOn",
      "kind": "optional",
      "type": "string",
      "description": "The validation performed when originating a payment to ensure it falls within the partner's daily limit. This is an internal Cross River field, with the date and time formatted as yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "queuedPaymentExpiresAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time that a queued payment will expire (payment canceled) if the receiving FI is offline, in this format: yyyy-mm-ddThh:mm:ss[.mmm]. Not sent to TCH/Fed.",
      "children": []
    },
    {
      "name": "networkPlatform",
      "kind": "optional",
      "type": "string",
      "description": "The payment network platform used to process the payment. Possible values are: TCH (for RTP via The Clearing House), FedNow, or CRNow.",
      "children": []
    },
    {
      "name": "queuedPaymentExpiresAfterInSeconds",
      "kind": "optional",
      "type": "string",
      "description": "The time interval in seconds before a queued payment expires if the receiving FI is offline. This is not sent to TCH/Fed.\n\nIf both queuedPaymentExpiresAt and this attribute are provided, this attribute takes precedence.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtpv1payments",
  "legacyHash": "gfPBwLEz4TTvEA-2IZMzL"
}
```
:::


[title] Card tokens
[path] Payments/Card payments/Card Tokens APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [CardPayments.Card.Approved](docId\:wso2E9CMh8zs8PyIjC-7r)
- [CardPayments.Card.Rejected](docId\:wso2E9CMh8zs8PyIjC-7r)&#x20;

## API reference

Post a card token. Created a new card token for the given information.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardpayments/v1/cardtokens",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/cardtokens",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "ckTCt4rHFVdUjg71k-Lxf",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardpayments/v1/cardtokens' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA3NjQxOCwiaWF0IjoxNzc2MDc2NDE4LCJleHAiOjE3NzYwNzgyMTgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkE0RTA4N0VFRUIyODNBNENGNTE0RUNGMDk3MUMxNEIyIn0.QLxmFznRw6J4XX3b3i7Z9L_f9bF3cS7qykLtj5U6WcTSQG5BYWNsX37YG5UCKTpjWZBEeZH2svFlLHomr_hXBioSkdT2P8q78yMDnc0QHk4E4_jsF7zKAYFtKzMAC8aN2TRUgk-X5uh592WIOMrzi2j1CVP8S_KnL2voabn8KYcqpQ6BnxEQUXxNjGFv3monJtYqHqcrUWiTwMXhG4hIhCWInDnSElhzhf5-5aUS0QBG703qx5oErPg4mPBVoa9wZFDQi9Fa-K0VwOwWcmg6TFbC8E-xKlJUDeXT-07LRaUJCm_k8yocVdaCusevyUO4B-3m0xfkZ1KmuFJGGikPfQ' \\\n--data-raw '{\n    \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n    \"accountNumber\": \"2287979807\",\n    \"clientIdentifier\": \"string\",\n    \"firstName\": \"Bob\",\n    \"lastName\": \"Bobbie\",\n    \"address\": {\n        \"street1\": \"101 Main Street\",\n        \"street2\": \"More address info\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"07666\",\n        \"countryCode\": \"US\"\n    },\n    \"phone\": \"2015551212\",\n    \"emailAddress\": \"mmm@xxx.com\",\n    \"pan\": \"4111111111111111\",\n    \"expirationMonth\": 12,\n    \"expirationYear\": 2030,\n    \"cvv\": \"263\"\n}'"
      },
      {
        "id": "zJdNpmlElrTMusMH2JaS5",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardpayments/v1/cardtokens',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Accept': 'application/json',\n    'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA3NjQxOCwiaWF0IjoxNzc2MDc2NDE4LCJleHAiOjE3NzYwNzgyMTgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkE0RTA4N0VFRUIyODNBNENGNTE0RUNGMDk3MUMxNEIyIn0.QLxmFznRw6J4XX3b3i7Z9L_f9bF3cS7qykLtj5U6WcTSQG5BYWNsX37YG5UCKTpjWZBEeZH2svFlLHomr_hXBioSkdT2P8q78yMDnc0QHk4E4_jsF7zKAYFtKzMAC8aN2TRUgk-X5uh592WIOMrzi2j1CVP8S_KnL2voabn8KYcqpQ6BnxEQUXxNjGFv3monJtYqHqcrUWiTwMXhG4hIhCWInDnSElhzhf5-5aUS0QBG703qx5oErPg4mPBVoa9wZFDQi9Fa-K0VwOwWcmg6TFbC8E-xKlJUDeXT-07LRaUJCm_k8yocVdaCusevyUO4B-3m0xfkZ1KmuFJGGikPfQ'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n  \"accountNumber\": \"2287979807\",\n  \"clientIdentifier\": \"string\",\n  \"firstName\": \"Bob\",\n  \"lastName\": \"Bobbie\",\n  \"address\": {\n    \"street1\": \"101 Main Street\",\n    \"street2\": \"More address info\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"07666\",\n    \"countryCode\": \"US\"\n  },\n  \"phone\": \"2015551212\",\n  \"emailAddress\": \"mmm@xxx.com\",\n  \"pan\": \"4111111111111111\",\n  \"expirationMonth\": 12,\n  \"expirationYear\": 2030,\n  \"cvv\": \"263\"\n});\n\nreq.write(postData);\n\nreq.end();"
      },
      {
        "id": "s0F_UDYXIIzUDqFeRn20i",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n  \"accountNumber\": \"2287979807\",\n  \"clientIdentifier\": \"string\",\n  \"firstName\": \"Bob\",\n  \"lastName\": \"Bobbie\",\n  \"address\": {\n    \"street1\": \"101 Main Street\",\n    \"street2\": \"More address info\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"07666\",\n    \"countryCode\": \"US\"\n  },\n  \"phone\": \"2015551212\",\n  \"emailAddress\": \"mmm@xxx.com\",\n  \"pan\": \"4111111111111111\",\n  \"expirationMonth\": 12,\n  \"expirationYear\": 2030,\n  \"cvv\": \"263\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'application/json',\n  'Authorization': '••••••'\n}\nconn.request(\"POST\", \"/cardpayments/v1/cardtokens\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "Szw1ShGa_n230r3Hbkqrq",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardpayments/v1/cardtokens\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA3NjQxOCwiaWF0IjoxNzc2MDc2NDE4LCJleHAiOjE3NzYwNzgyMTgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkE0RTA4N0VFRUIyODNBNENGNTE0RUNGMDk3MUMxNEIyIn0.QLxmFznRw6J4XX3b3i7Z9L_f9bF3cS7qykLtj5U6WcTSQG5BYWNsX37YG5UCKTpjWZBEeZH2svFlLHomr_hXBioSkdT2P8q78yMDnc0QHk4E4_jsF7zKAYFtKzMAC8aN2TRUgk-X5uh592WIOMrzi2j1CVP8S_KnL2voabn8KYcqpQ6BnxEQUXxNjGFv3monJtYqHqcrUWiTwMXhG4hIhCWInDnSElhzhf5-5aUS0QBG703qx5oErPg4mPBVoa9wZFDQi9Fa-K0VwOwWcmg6TFbC8E-xKlJUDeXT-07LRaUJCm_k8yocVdaCusevyUO4B-3m0xfkZ1KmuFJGGikPfQ\"\nrequest.body = JSON.dump({\n  \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n  \"accountNumber\": \"2287979807\",\n  \"clientIdentifier\": \"string\",\n  \"firstName\": \"Bob\",\n  \"lastName\": \"Bobbie\",\n  \"address\": {\n    \"street1\": \"101 Main Street\",\n    \"street2\": \"More address info\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"07666\",\n    \"countryCode\": \"US\"\n  },\n  \"phone\": \"2015551212\",\n  \"emailAddress\": \"mmm@xxx.com\",\n  \"pan\": \"4111111111111111\",\n  \"expirationMonth\": 12,\n  \"expirationYear\": 2030,\n  \"cvv\": \"263\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "IJSUh_sVyOZPSxbz7lZ6I",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardpayments/v1/cardtokens\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",`+\"\n\"+`\n    \"accountNumber\": \"2287979807\",`+\"\n\"+`\n    \"clientIdentifier\": \"string\",`+\"\n\"+`\n    \"firstName\": \"Bob\",`+\"\n\"+`\n    \"lastName\": \"Bobbie\",`+\"\n\"+`\n    \"address\": {`+\"\n\"+`\n        \"street1\": \"101 Main Street\",`+\"\n\"+`\n        \"street2\": \"More address info\",`+\"\n\"+`\n        \"city\": \"New York\",`+\"\n\"+`\n        \"state\": \"NY\",`+\"\n\"+`\n        \"postalCode\": \"07666\",`+\"\n\"+`\n        \"countryCode\": \"US\"`+\"\n\"+`\n    },`+\"\n\"+`\n    \"phone\": \"2015551212\",`+\"\n\"+`\n    \"emailAddress\": \"mmm@xxx.com\",`+\"\n\"+`\n    \"pan\": \"4111111111111111\",`+\"\n\"+`\n    \"expirationMonth\": 12,`+\"\n\"+`\n    \"expirationYear\": 2030,`+\"\n\"+`\n    \"cvv\": \"263\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA3NjQxOCwiaWF0IjoxNzc2MDc2NDE4LCJleHAiOjE3NzYwNzgyMTgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkE0RTA4N0VFRUIyODNBNENGNTE0RUNGMDk3MUMxNEIyIn0.QLxmFznRw6J4XX3b3i7Z9L_f9bF3cS7qykLtj5U6WcTSQG5BYWNsX37YG5UCKTpjWZBEeZH2svFlLHomr_hXBioSkdT2P8q78yMDnc0QHk4E4_jsF7zKAYFtKzMAC8aN2TRUgk-X5uh592WIOMrzi2j1CVP8S_KnL2voabn8KYcqpQ6BnxEQUXxNjGFv3monJtYqHqcrUWiTwMXhG4hIhCWInDnSElhzhf5-5aUS0QBG703qx5oErPg4mPBVoa9wZFDQi9Fa-K0VwOwWcmg6TFbC8E-xKlJUDeXT-07LRaUJCm_k8yocVdaCusevyUO4B-3m0xfkZ1KmuFJGGikPfQ\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "ckTCt4rHFVdUjg71k-Lxf"
  },
  "results": {
    "languages": [
      {
        "id": "zSKeGucw0Ij9uNyBPihiv",
        "language": "200",
        "code": "{\n    \"id\": \"759f4eab-5400-4e25-9815-b4af0085684e\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n    \"accountNumber\": \"2113556886\",\n    \"masterAccountNumber\": \"2113556886\",\n    \"token\": \"39A99D770B354E63AC4EFAF64E757F24000000\",\n    \"rail\": \"VisaDirect\",\n    \"cardType\": \"Debit\",\n    \"productType\": \"Unknown\",\n    \"authorizationStatus\": \"Approved\",\n    \"statusReasonCode\": \"00\",\n    \"statusReasonDescription\": \"Approved and completed successfully\",\n    \"isAuthorized\": true,\n    \"firstName\": \"Bob\",\n    \"lastName\": \"Bobbie\",\n    \"address\": {\n        \"street1\": \"101 Main Street\",\n        \"street2\": \"More address info\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"07666\",\n        \"countryCode\": \"US\"\n    },\n    \"isAddressVerified\": true,\n    \"addressVerificationDetails\": {\n        \"avsResponseCode\": \"Y\",\n        \"cvv2ResultCode\": \"M\",\n        \"isCVVMatched\": true\n    },\n    \"accountNameInquiryUsed\": \"Used\",\n    \"accountNameInquiryResult\": \"Match\",\n    \"nameVerificationDetails\": {\n        \"lastNameVerificationStatus\": \"Match\",\n        \"firstNameVerificationStatus\": \"Match\",\n        \"middleNameVerificationStatus\": \"Match\",\n        \"nameVerificationProcessingResult\": \"Name Match Performed\"\n    },\n    \"phone\": \"2015551212\",\n    \"emailAddress\": \"mmm@xxx.com\",\n    \"binNumber\": \"411111\",\n    \"panLastFour\": \"1111\",\n    \"expirationMonth\": 12,\n    \"expirationYear\": 2030,\n    \"cardFingerprint\": \"7BleaDLyA+3nxDUkoX6WjE0GKUHvEniZuoJFFjVd0muNYH4P3VOoV0w5LX3JW4h75OMx50mIRTS6xnpcxLX/2w==\",\n    \"isExpired\": false,\n    \"cardBrand\": \"Visa\",\n    \"capabilities\": {\n        \"fastFundsSupported\": true,\n        \"domesticPushEnabled\": true,\n        \"domesticPullEnabled\": true,\n        \"internationalPushEnabled\": true,\n        \"internationalPullEnabled\": true\n    },\n    \"issuerCountryCode\": \"US\",\n    \"clientIdentifier\": \"string\",\n    \"createdAt\": \"2026-08-23T04:05:43.2992459-04:00\",\n    \"isActive\": true,\n    \"authorizedAt\": \"2026-08-23T04:05:43.5967548-04:00\",\n    \"lastModifiedAt\": \"0001-01-01T00:00:00-04:57\"\n}\n",
        "customLabel": ""
      },
      {
        "id": "W5Gl11RtUiB7WeXh6Hp_d",
        "language": "400",
        "code": "{\n   \"errors\": [\n     {\n       \"code\": 0,\n       \"message\": \"string\"\n     } \n   ] \n}    ",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zSKeGucw0Ij9uNyBPihiv"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "A number that identifies the account you are using to create this card token ",
        "": "A number that identifies the account you are using to create this card token "
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "A string that identifies the client associated with the payment. Max 50 characters",
        "": "A string that identifies the client associated with the payment. Max 50 characters"
      },
      {
        "name": "firstName",
        "kind": "required",
        "type": "string",
        "description": "First name. Min 1 character, max 35 characters",
        "": "First name. Min 1 character, max 35 characters"
      },
      {
        "name": "middleName",
        "kind": "optional",
        "type": "string",
        "description": "Middle name. Min 1 character, max 35 characters",
        "": "Middle name. Min 1 character, max 35 characters"
      },
      {
        "name": "lastName",
        "kind": "required",
        "type": "string",
        "description": "Last name. Min 1 character, max 35 characters",
        "": "Last name. Min 1 character, max 35 characters"
      },
      {
        "name": "address",
        "kind": "optional",
        "type": "object",
        "description": "Address of card holder",
        "": "Address of card holder",
        "children": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Address of card holder - Street address line 1. Max length 60"
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Address of card holder - Street address line 2. Max length 60"
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "City full name. 50 character maximum"
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "State code. 2 characters"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Max 10 characters"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code"
          }
        ],
        "schema": [
          {
            "name": "street1",
            "kind": "required",
            "type": "string",
            "description": "Address of card holder - Street address line 1. Max length 60"
          },
          {
            "name": "street2",
            "kind": "optional",
            "type": "string",
            "description": "Address of card holder - Street address line 2. Max length 60"
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "City full name. 50 character maximum"
          },
          {
            "name": "state",
            "kind": "required",
            "type": "string",
            "description": "State code. 2 characters"
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Max 10 characters"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code"
          }
        ]
      },
      {
        "name": "phone",
        "kind": "optional",
        "type": "string",
        "description": "Valid phone number",
        "": "optional"
      },
      {
        "name": "emailAddress",
        "kind": "optional",
        "type": "string",
        "description": "Valid email address",
        "": "Valid email address"
      },
      {
        "name": "pan",
        "kind": "required",
        "type": "string",
        "description": "Full PAN number. Must be a real valid card number. Length is 12-19 characters depending on the provider.  \nFull PAN is tokenized and not returned in response",
        "": "Full PAN number. Must be a real valid card number. Length is 12-19 characters depending on the provider.  \nFull PAN is tokenized and not returned in response"
      },
      {
        "name": "expirationMonth",
        "kind": "required",
        "type": "integer",
        "description": "Two-digit month. Credit cards expire at the end of the month written on the card",
        "": "integer"
      },
      {
        "name": "expirationYear",
        "kind": "required",
        "type": "integer",
        "description": "Two-digit year",
        "": "integer"
      },
      {
        "name": "cVV",
        "kind": "optional",
        "type": "string",
        "description": "The card verification value on the card",
        "": "cVV"
      }
    ]
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID of the card token you want to retrieve"
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the partner, as defined in COS."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the product, as defined in COS."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number"
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The master account number that the card token's account belongs to. If `accountNumber` is a sub-account, this is the parent account it rolls up to; otherwise the two values are the same."
    },
    {
      "name": "token",
      "kind": "optional",
      "type": "string",
      "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters). "
    },
    {
      "name": "rail",
      "kind": "optional",
      "type": "string",
      "description": "The processor that communicates with the card network:\n\n- McSend\n- TabaPay\n- VisaDirect"
    },
    {
      "name": "cardType",
      "kind": "optional",
      "type": "string",
      "description": "The kind of payment card:\n\n- Credit\n- Debit\n- Prepaid\n- Combo\n- ChargeCard\n- DeferredDebit\n- VisaPlus\n- Unknown"
    },
    {
      "name": "productType",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder card type:\n\n- Consumer\n- Commercial\n- Government\n- Business\n- Unknown"
    },
    {
      "name": "authorizationStatus",
      "kind": "optional",
      "type": "string",
      "description": "Responses can be:\n- NotRequired\n- New\n- Pending\n- Approved\n- Rejected\n- Failed"
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "A code indicating the reason for certain statuses, particularly useful in rejections or failures."
    },
    {
      "name": "statusReasonDescription",
      "kind": "optional",
      "type": "string",
      "description": "A description explaining the reason code."
    },
    {
      "name": "isAuthorized",
      "kind": "optional",
      "type": "boolean",
      "description": "An indicator on whether or not the card token is authorized"
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "First name. Min 1 character, max 35 characters"
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Middle name. Min 1 character, max 35 characters",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Last name. Min 1 character, max 35 characters"
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "object",
      "description": "Address of card holder",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Street address line 1. Max length 60"
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Street address line 2. Max length 60"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the city. Max length 60"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State code. 2 characters"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Max 10 characters"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        }
      ]
    },
    {
      "name": "isAddressVerified",
      "kind": "optional",
      "type": "boolean",
      "description": "An indicator on whether or not the address was verified"
    },
    {
      "name": "addressVerificationDetails",
      "kind": "optional",
      "type": "object",
      "description": "Detailed results from Address Verification Service (AVS) and CVV2 verification performed during card authorization",
      "children": [
        {
          "name": "avsResponseCode",
          "kind": "optional",
          "type": "string",
          "description": "AVS response code from the card network (e.g., 'Y' for match, 'N' for no match). Max 10 characters"
        },
        {
          "name": "avsResponseDesc",
          "kind": "optional",
          "type": "string",
          "description": "Human-readable description of the AVS response. Max 255 characters"
        },
        {
          "name": "cvv2ResultCode",
          "kind": "optional",
          "type": "string",
          "description": "CVV2 verification result code from the card network. Max 10 characters"
        },
        {
          "name": "isCVVMatched",
          "kind": "optional",
          "type": "boolean",
          "description": "Indicates whether the CVV2 provided matched the card on file"
        }
      ]
    },
    {
      "name": "accountNameInquiryUsed",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether Cross River tried to contact the ANI service. This attribute value will also let you know if the merchant isn't configured for the ANI service. In that case, we recommend contacting your Cross River relationship manager for details on how to connect to ANI.",
      "children": []
    },
    {
      "name": "accountNameInquiryResult",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the initiator-provided card details match fully, partially, or not at all, or if they are unknown. Possible values are:\nMatch\nNo Match\nPartial Match\nUnknown",
      "children": []
    },
    {
      "name": "nameVerificationDetails",
      "kind": "optional",
      "type": "object",
      "description": "Acquirer Network Information (ANI) results for cardholder name verification performed during card authorization",
      "children": [
        {
          "name": "lastNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the last name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "firstNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the first name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "middleNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the middle name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "nameVerificationProcessingResult",
          "kind": "optional",
          "type": "string",
          "description": "Overall processing result for name verification (e.g., 'SUCCESS', 'FAILED')"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "string",
      "description": "Valid phone number"
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Valid email address"
    },
    {
      "name": "binNumber",
      "kind": "optional",
      "type": "string",
      "description": "The first 4 digits on the card. This identification number indicates the card-issuing bank."
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of PAN "
    },
    {
      "name": "expirationMonth",
      "kind": "optional",
      "type": "integer",
      "description": "Two-digit month. Credit cards expire at the end of the month written on the card"
    },
    {
      "name": "expirationYear",
      "kind": "optional",
      "type": "integer",
      "description": "Two-digit year"
    },
    {
      "name": "cardFingerprint",
      "kind": "optional",
      "type": "string",
      "description": "A consistent, opaque identifier for a card without exposing any PAN-related data or risking reversibility",
      "children": []
    },
    {
      "name": "isExpired",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the card is expired"
    },
    {
      "name": "cardBrand",
      "kind": "optional",
      "type": "string",
      "description": "Will be one of the following:\n- AmericanExpress\n- ChinaUnionPay\n- Dankort\n- DinersClub\n- Discover\n- Hipercard\n- JCB\n- Laser\n- Maestro\n- MasterCard\n- RuPay\n- Solo\n- Switch\n- Visa\n- Unknown"
    },
    {
      "name": "capabilities",
      "kind": "optional",
      "type": "object",
      "description": "Capabilities are the actions permitted to do on a specific card, these are returned from the rails when the card is authorized",
      "children": [
        {
          "name": "fastFundsSupported",
          "kind": "optional",
          "type": "boolean",
          "description": "Card network can move the funds to the card immediately"
        },
        {
          "name": "domesticPushEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to push within the US"
        },
        {
          "name": "domesticPullEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to pull within the US"
        },
        {
          "name": "internationalPushEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to push internationally- outside of the US"
        },
        {
          "name": "internationalPullEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to pull internationally- outside of the US. \nNote: internationalPullEnabled - IS NOT YET SUPPORTED ACROSS ALL OF THE RAILS"
        }
      ]
    },
    {
      "name": "issuerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "ISO country of issuer. Used for domestic/international logic & compliance"
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "User reference id. Max 50 characters"
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When token was created"
    },
    {
      "name": "isActive",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the card is active "
    },
    {
      "name": "authorizedAt",
      "kind": "optional",
      "type": "string",
      "description": "When authorized"
    },
    {
      "name": "deActivatedAt",
      "kind": "optional",
      "type": "string",
      "description": "When deactivated"
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Last update timestamp"
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cardpaymentsv1cardtokens",
  "legacyHash": "m_LzttfqmT90GnK-CUNyO"
}
```
:::


[title] Cancel transfer
[path] Payments/Wires/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Wire.Payment.Canceled](docId\:OA3cg-apKn_510VPq2yYe)&#x20;

## API reference

:::hint{type="warning"}
In November 2027, the Fedwire Funds Service will remove the fully unstructured postal address option in favor of a single hybrid postal address format. **All parties** (intermediaryFi, beneficiaryFi, beneficiary, originator)  across **all message types** must transition from free-text address lines (address1, address2, address3) to a new **postalAddress object** with mandatory adrLine1, country and city fields.

In advance of the Fedwire enforcement date, all partners must use the new **postalAddress&#x20;**&#x73;tructure in production no later tha&#x6E;**&#x20;October 2027.&#x20;**&#x4D;essages sent in the old format after this date will be rejected.
:::

Cancels a wire transfer payment.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /wires/v1/payments/{id}/cancel",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/wires/v1/payments/{id}/cancel",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "kVBLn-zyAJW6SbXQfBh1v",
        "language": "curl",
        "code": "curl -L -g 'https://sandbox.crbcos.com/wires/v1/payments/{id}/cancel' ^\n-H 'Idempotency-key: 0b700631-e844-464d-a747-ecb65c15d2c5' ^\n-d '\n\n'",
        "customLabel": ""
      },
      {
        "id": "eVXKEG1Zz07we-iLjma2W",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/wires/v1/payments/{id}/cancel',\n  'headers': {\n    'Idempotency-key': '0b700631-e844-464d-a747-ecb65c15d2c5'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"\\n\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "LQ1cZ3PDpLX4hyQEJxDVb",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/wires/v1/payments/{id}/cancel\"\n\npayload = \"\\n\\n\"\nheaders = {\n  'Idempotency-key': '0b700631-e844-464d-a747-ecb65c15d2c5'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "U85MflcVL6dCcEJSitjZj",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/wires/v1/payments/{id}/cancel\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"0b700631-e844-464d-a747-ecb65c15d2c5\"\nrequest.body = \"\\n\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "Ko1fx9FrSFFunaUZuCU7b",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/wires/v1/payments/{id}/cancel\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`\n\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"0b700631-e844-464d-a747-ecb65c15d2c5\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kVBLn-zyAJW6SbXQfBh1v"
  },
  "results": {
    "languages": [
      {
        "id": "pbxJLj26WBQHEgkbU1goU",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"932ab92c-6cf6-4af3-b9fb-b288017529d7\",\n  \"accountNumber\": \"2330604998\",\n  \"coreTransactionId\": \"5d7b8635-1bc6-4a7b-a1fa-b288017529d7\",\n  \"referenceId\": \"S65BRYJR29S\",\n  \"direction\": \"Outbound\",\n  \"paymentType\": \"Transfer\",\n  \"source\": \"Api\",\n  \"status\": \"Canceled\",\n  \"posting\": \"Posted\",\n  \"partnerAuthorization\": \"Canceled\",\n  \"partnerAuthorization2\": \"Canceled\",\n  \"enteredById\": \"3Qtu9nljXwHcd33wn0XxmRbR5P7fxX0z\",\n  \"amount\": 5000,\n  \"currency\": \"usd\",\n  \"purpose\": \"Testing\",\n  \"businessFunctionCode\": \"CTR\",\n  \"typeCode\": \"1000\",\n  \"senderRoutingNumber\": \"021214891\",\n  \"senderName\": \"CROSS RIVER BANK\",\n  \"senderReference\": \"S65BRYJR29S\",\n  \"receiverRoutingNumber\": \"026009593\",\n  \"receiverName\": \"BK AMER NYC\",\n  \"originatingFi\": {\n    \"idCode\": \"F\",\n    \"identifier\": \"021214891\",\n    \"name\": \"CRB 21852936\",\n    \"address1\": \"400 KELBY STREET\",\n    \"address2\": \"FORT LEE, NJ\",\n    \"address3\": \"US\"\n  },\n  \"originator\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"2330604998\",\n    \"name\": \"PETER GRIFFIN\",\n    \"address1\": \"31 SPOONER ST\",\n    \"address2\": \"\",\n    \"address3\": \"QUAHOG RI 33156 US\"\n  },\n  \"beneficiaryFi\": {\n    \"idCode\": \"F\",\n    \"identifier\": \"026009593\",\n    \"name\": \"BANK OF AMERICA, N.A., NY\",\n    \"address1\": \"NEW YORK, NY\"\n  },\n  \"beneficiary\": {\n    \"idCode\": \"D\",\n    \"identifier\": \"316840684\",\n    \"name\": \"Stewie Griffin\",\n    \"address1\": \"31 Spooner St\",\n    \"address2\": \"Quahog RI 33030\",\n    \"address3\": \"US\"\n  },\n  \"originatorToBeneficiary1\": \"HAPPY BIRTHDAY\",\n  \"beneficiaryReference\": \"GIFT\",\n  \"wasReversed\": false,\n  \"isInternational\": false,\n  \"clientIdentifier\": \"05d73490-65ac-4725-98b6-cbf8252e52fe\",\n  \"createdAt\": \"2025-02-18T17:38:38.79-05:00\",\n  \"canceledAt\": \"2025-02-18T17:38:46.6595381-05:00\",\n  \"effectiveDate\": \"2025-02-18T00:00:00-05:00\",\n  \"postedAt\": \"2025-02-18T17:38:45.013-05:00\",\n  \"originalPaymentId\": \"932ab92c-6cf6-4af3-b9fb-b288017529d7\",\n  \"partnerId\": \"ba9d0234-26e9-43a2-9070-aedd0108eadb\",\n  \"productId\": \"2733f398-b44a-4f0c-9064-b1b700e619af\",\n  \"lastModifiedAt\": \"2025-02-18T17:38:46.6595381-05:00\",\n  \"postingCode\": \"OK\",\n  \"investigated\": false,\n  \"isoPaymentType\": \"CustomerCreditTransfer\"\n}"
      }
    ],
    "selectedLanguageId": "pbxJLj26WBQHEgkbU1goU"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The payment ID. First appears in the initial response to the originate a payment request. This ID is in GUID format.",
        "": "The payment ID. First appears in the initial response to the originate a payment request. This ID is in GUID format."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The payment ID. First appears in the initial response to the originate a payment request. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River account number. In Cross River, depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier in GUID format for the Federal Reserve batch the payment went out on (or came in on for inbound payments)",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of payment in batch",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Inbound or outbound",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Transfer, Drawdown, DrawdownResponse, ServiceMessage, Reversal",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Method used to send payment instructions: Phone, fax, email, file, API, partner portal, Ops portal.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Payment status: Created, Pending, Hold, Batched, Processing, Completed, Rejected, Canceled, Blocked",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status: Pending, Posted, Failed, Canceled",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- OfacCancelUnableToDetermine\n- OfacConfirmed\n- OfacUnconfirmed\n- Other",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "Blocked because: OfacMatch, Other",
      "children": []
    },
    {
      "name": "partnerAuthorization",
      "kind": "optional",
      "type": "string",
      "description": "Partner authorization for out-of-band payment requests: NotRequired, Pending , Approved, Canceled",
      "children": []
    },
    {
      "name": "authorizedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the wire was authorized. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "authorizedById",
      "kind": "optional",
      "type": "string",
      "description": "Cross River user ID of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "authorizedByName",
      "kind": "optional",
      "type": "string",
      "description": "Cross River username of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "partnerAuthorization2",
      "kind": "optional",
      "type": "string",
      "description": "Second partner authorization for out-of-band payment requests: NotRequired, Pending , Approved, Canceled",
      "children": []
    },
    {
      "name": "authorizedAt2",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the wire was authorized. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "authorizedById2",
      "kind": "optional",
      "type": "string",
      "description": "Cross River user ID of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "authorizedByName2",
      "kind": "optional",
      "type": "string",
      "description": "Cross River username of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "integer",
      "description": "Dollar amount of wire transfer in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of funds transfer",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the wire transfer, such as \"daily settlement.\" Also use this field if you submit multiple wires for the same amount, such as \"1 of 2, 2 of 2.\" This data is not included with the outgoing FedWire message.",
      "children": []
    },
    {
      "name": "imad",
      "kind": "optional",
      "type": "string",
      "description": "Input Messaging Accountability Data. A combination of a date, source identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application. Unique to the payment.",
      "children": []
    },
    {
      "name": "omad",
      "kind": "optional",
      "type": "string",
      "description": "Output Messaging Accountability Data. A combination of a date, destination identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application.",
      "children": []
    },
    {
      "name": "businessFunctionCode",
      "kind": "optional",
      "type": "string",
      "description": "The business purpose of the wire transfer. The most common type is customer wire transfer (CTR) where the beneficiary isn't a bank. See the full list of codes and descriptions.",
      "children": []
    },
    {
      "name": "typeCode",
      "kind": "optional",
      "type": "string",
      "description": "The type code value provides information about the type of wire transfer sent (type code, first 2 digits) and more details about the transfer (subtype code, second 2 digits).",
      "children": []
    },
    {
      "name": "senderRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "Fedwire routing number for the sender's bank",
      "children": []
    },
    {
      "name": "senderName",
      "kind": "optional",
      "type": "string",
      "description": "Entity sending the wire",
      "children": []
    },
    {
      "name": "senderReference",
      "kind": "optional",
      "type": "string",
      "description": "Sender's assigned reference number",
      "children": []
    },
    {
      "name": "receiverRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The 9-digit Fedwire routing number of the financial institution receiving the wire drawdown request. The ABA directory provides financial institution routing numbers.",
      "children": []
    },
    {
      "name": "receiverName",
      "kind": "optional",
      "type": "string",
      "description": "Name of the FI receiving the funds",
      "children": []
    },
    {
      "name": "originatingFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of the financial institution sending the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier at the financial institution sending the wire"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originating financial institution. Maximum 140 characteres."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "object",
      "description": "Details of the party sending the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the party sending the wire. For outbound payments where originator details are submitted with the payment request, this is the customer account number. Otherwise, the system automatically populates this field."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Originator name. Maximum 140 characteres."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "intermediaryFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of any intermediary bank involved in the wire transaction. Not all wire transfers use an intermediary FI.",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the intermediary bank involved with the wire transaction."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Intermediary financial institution name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "beneficiaryFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of the financial institution receiving the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes.\n\nFor outbound payments, the value for the beneficiary FI is F to indicate the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the bank receiving the wire. For outbound payments, this is the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary financial institution name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "object",
      "description": "Details of the party receiving the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Identifier code for the party receiving the wire. For outbound payments, this is \"D\" to indicate a deposit account."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the party receiving the wire. For outbound payments, this is the beneficiary's account number."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "originatorToBeneficiary1",
      "kind": "optional",
      "type": "string",
      "description": "Field for additional information from the originator to the beneficiary.",
      "children": []
    },
    {
      "name": "beneficiaryReference",
      "kind": "optional",
      "type": "string",
      "description": "Optional field for additional information. 35 characters maximum.",
      "children": []
    },
    {
      "name": "receiptDate",
      "kind": "optional",
      "type": "string",
      "description": "Month and day the wire was received in the format mmdd",
      "children": []
    },
    {
      "name": "receiptTime",
      "kind": "optional",
      "type": "string",
      "description": "Time the wire was received, in the format hhmm",
      "children": []
    },
    {
      "name": "wasReversed",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the payment was reversed, otherwise false",
      "children": []
    },
    {
      "name": "isInternational",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the payment is international, otherwise false",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "releasedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was released in a distribution to the Fed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Business date on which the payment is effective",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was posted to the Cross River account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID of a previously sent wire that was reversed. Otherwise, the same as the payment ID.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, the Cross River account involved in the payment. More about Product IDs.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Includes OK (posted), RES (account restricted), NSF (insufficient funds in the account sending the wire)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-wiresv1paymentsidcancel",
  "legacyHash": "lJ5R4akXo_sV7z36_gLUt"
}
```
:::

#


[title] Send ACH  transaction
[path] Payments/ACH/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:&#x20;

- [Ach.Payment.Sent](docId\:AVRvavzdk7hC0UfXn6XZ9)&#x20;
- [Core.Transaction.Completed](docId\:eAs8aFqW7M97baeZUC8Sr)&#x20;
- [Ach.Noc.Received](docId\:AVRvavzdk7hC0UfXn6XZ9)&#x20;
- Ach.Payment.Returned

## API reference

Sends a single ACH transaction.

:::hint{type="warning"}
**IMPORTANT**
The payment information and data you send to Cross River must include a [Nacha SEC code](docId\:M8a5dbzFhH5TV1NytK9Aw) and conform to  [Nacha settlement rules](docId\:qQ3D8sBTuETGRtKaXTK1M).
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /ach/v1/payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/ach/v1/payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "HRBR9MsKSwwyH-NYrjwNM",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/ach/v1/payments' \\\n--header 'Idempotency-key: c10314ee-e737-4681-8e8d-f9cf547c9967' \\\n--data '{\n      \"accountNumber\": \"2207975570\",\n      \"receiver\": {\n        \"routingNumber\": \"021000021\",\n        \"accountNumber\": \"2151546989\",\n        \"accountType\": \"Checking\",\n        \"name\": \"Peter Griffin\"\n      },\n      \"secCode\": \"PPD\",\n      \"description\": \"Purchase\",\n      \"transactionType\": \"Push\",\n      \"amount\": 2500,\n      \"serviceType\": \"SameDay\",\n      \"clientIdentifier\": \"c10314ee-e737-4681-8e8d-f9cf547c9967\"\n      }'",
        "customLabel": ""
      },
      {
        "id": "Sv7nF_dbswuBC1naIgDjC",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/payments',\n  'headers': {\n    'Idempotency-key': 'c10314ee-e737-4681-8e8d-f9cf547c9967'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n      \\\"accountNumber\\\": \\\"2207975570\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"Peter Griffin\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 2500,\\r\\n      \\\"serviceType\\\": \\\"SameDay\\\",\\r\\n      \\\"clientIdentifier\\\": \\\"c10314ee-e737-4681-8e8d-f9cf547c9967\\\"\\r\\n      }\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "0fhf31t89iCNXQvtYF81M",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n      \\\"accountNumber\\\": \\\"2207975570\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"Peter Griffin\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 2500,\\r\\n      \\\"serviceType\\\": \\\"SameDay\\\",\\r\\n      \\\"clientIdentifier\\\": \\\"c10314ee-e737-4681-8e8d-f9cf547c9967\\\"\\r\\n      }\"\nheaders = {\n  'Idempotency-key': 'c10314ee-e737-4681-8e8d-f9cf547c9967'\n}\nconn.request(\"POST\", \"/ach/v1/payments\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "OvGlJj2pYMD2AuGECCfll",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"c10314ee-e737-4681-8e8d-f9cf547c9967\"\nrequest.body = \"{\\r\\n      \\\"accountNumber\\\": \\\"2207975570\\\",\\r\\n      \\\"receiver\\\": {\\r\\n        \\\"routingNumber\\\": \\\"021000021\\\",\\r\\n        \\\"accountNumber\\\": \\\"2151546989\\\",\\r\\n        \\\"accountType\\\": \\\"Checking\\\",\\r\\n        \\\"name\\\": \\\"Peter Griffin\\\"\\r\\n      },\\r\\n      \\\"secCode\\\": \\\"PPD\\\",\\r\\n      \\\"description\\\": \\\"string\\\",\\r\\n      \\\"transactionType\\\": \\\"Push\\\",\\r\\n      \\\"amount\\\": 2500,\\r\\n      \\\"serviceType\\\": \\\"SameDay\\\",\\r\\n      \\\"clientIdentifier\\\": \\\"c10314ee-e737-4681-8e8d-f9cf547c9967\\\"\\r\\n      }\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "azSbUgraxEn8b_olYeCcU",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n      \"accountNumber\": \"2207975570\",`+\"\n\"+`\n      \"receiver\": {`+\"\n\"+`\n        \"routingNumber\": \"021000021\",`+\"\n\"+`\n        \"accountNumber\": \"2151546989\",`+\"\n\"+`\n        \"accountType\": \"Checking\",`+\"\n\"+`\n        \"name\": \"Peter Griffin\"`+\"\n\"+`\n      },`+\"\n\"+`\n      \"secCode\": \"PPD\",`+\"\n\"+`\n      \"description\": \"string\",`+\"\n\"+`\n      \"transactionType\": \"Push\",`+\"\n\"+`\n      \"amount\": 2500,`+\"\n\"+`\n      \"serviceType\": \"SameDay\",`+\"\n\"+`\n      \"clientIdentifier\": \"c10314ee-e737-4681-8e8d-f9cf547c9967\"`+\"\n\"+`\n      }`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"c10314ee-e737-4681-8e8d-f9cf547c9967\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "HRBR9MsKSwwyH-NYrjwNM"
  },
  "results": {
    "languages": [
      {
        "id": "OaQ6YHIkwFzOhLKg7zsw2",
        "language": "200",
        "code": "{\n  \"id\": \"f546de65-bc68-4af0-99be-b155014a4502\",\n  \"accountNumber\": \"2207975570\",\n  \"referenceId\": \"A108531EZ185\",\n  \"paymentType\": \"Origination\",\n  \"direction\": \"Outbound\",\n  \"status\": \"Created\",\n  \"source\": \"Api\",\n  \"postingType\": \"Individual\",\n  \"memoPostId\": \"97e9e4e0-705f-400c-9124-b155014a4502\",\n  \"postingCode\": \"OK\",\n  \"posting\": \"Pending\",\n  \"originator\": {\n    \"routingNumber\": \"021214891\",\n    \"accountNumber\": \"2207975570\",\n    \"accountType\": \"Checking\",\n    \"name\": \"Cross River Bank\",\n    \"identification\": \"021214891\"\n  },\n  \"receiver\": {\n    \"routingNumber\": \"021000021\",\n    \"accountNumber\": \"2151546989\",\n    \"accountType\": \"Checking\",\n    \"name\": \"Peter Griffin\"\n  },\n  \"secCode\": \"PPD\",\n  \"description\": \"Purchase\",\n  \"transactionType\": \"Push\",\n  \"amount\": 2500,\n  \"serviceType\": \"SameDay\",\n  \"effectiveDate\": \"240417\",\n  \"traceNumber\": \"021214890554323\",\n  \"wasReturned\": false,\n  \"wasCorrected\": false,\n  \"holdDays\": 0,\n  \"original\": {\n    \"paymentId\": \"f546de65-bc68-4af0-99be-b155014a4502\"\n  },\n  \"createdAt\": \"2024-04-17T16:02:28.4794568-04:00\",\n  \"partnerId\": \"1e5d3f04-ae24-4af6-9e30-aecf012b99dd\",\n  \"productId\": \"cc62e17f-5912-483e-9e42-aed30112fbb6\",\n  \"lastModifiedAt\": \"2024-04-17T16:02:28.4794568-04:00\",\n  \"clientIdentifier\": \"c10314ee-e737-4681-8e8d-f9cf547c9967\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "OaQ6YHIkwFzOhLKg7zsw2"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Cross River account number for payment originator.  Depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
        "": "Cross River account number for payment originator.  Depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
      },
      {
        "name": "originator",
        "kind": "optional",
        "type": "object",
        "description": "Details about the entity sending the payment. If the account originating the payment is enabled to provide this information according to the supplied account number, all the values should be null. If these values are supplied in the request they override the originator profile defined for the account.\nUse the originator object if you originate ACH transactions on behalf of different clients, each with their own value for the identification attribute.",
        "": "originator",
        "children": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name of the originator of the transaction. Nacha refers to this as Company Name. 16 character maximum."
          },
          {
            "name": "identification",
            "kind": "required",
            "type": "string",
            "description": "Originator Identification. Nacha refers to this as the Company Identification. 10 character maximum."
          },
          {
            "name": "data",
            "kind": "optional",
            "type": "string",
            "description": "Additional metadat provided by the originator. Nacha refers to this as Company Discretionary Data. 20 character maximum."
          }
        ],
        "schema": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Name of the originator of the transaction. Nacha refers to this as Company Name. 16 character maximum."
          },
          {
            "name": "identification",
            "kind": "required",
            "type": "string",
            "description": "Originator Identification. Nacha refers to this as the Company Identification. 10 character maximum."
          },
          {
            "name": "data",
            "kind": "optional",
            "type": "string",
            "description": "Additional metadat provided by the originator. Nacha refers to this as Company Discretionary Data. 20 character maximum."
          }
        ]
      },
      {
        "name": "receiver",
        "kind": "required",
        "type": "Object",
        "description": "In the case of Pull payments, this is the account the funds are being pulled from.",
        "children": [
          {
            "name": "routingNumber",
            "kind": "required",
            "type": "string",
            "description": "9-digit ABA routing number that identifies the receiver financial institution"
          },
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number for the receiver. 35 characters maximum. Uses regular expression: ^[A-Za-z0-9^ !_\\-@'`()#\"\"*\\]+{}|~$%&,:.-\\\\]+$"
          },
          {
            "name": "accountType",
            "kind": "required",
            "type": "string",
            "description": "Deposit account type: Checking, Savings, GeneralLedger, Loan"
          },
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Receiver name. 22 characters maximum, unless the SEC code is CTX. In that case the maximum is 16 characters."
          },
          {
            "name": "identification",
            "kind": "optional",
            "type": "string",
            "description": "Receiver Identification. Nacha refers to this as the Individual Identification Number. 15 character maximum."
          }
        ],
        "schema": [
          {
            "name": "routingNumber",
            "kind": "required",
            "type": "string",
            "description": "9-digit ABA routing number that identifies the receiver financial institution"
          },
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number for the receiver. 35 characters maximum. Uses regular expression: ^[A-Za-z0-9^ !_\\-@'`()#\"\"*\\]+{}|~$%&,:.-\\\\]+$"
          },
          {
            "name": "accountType",
            "kind": "required",
            "type": "string",
            "description": "Deposit account type: Checking, Savings, GeneralLedger, Loan"
          },
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Receiver name. 22 characters maximum, unless the SEC code is CTX. In that case the maximum is 16 characters."
          },
          {
            "name": "identification",
            "kind": "optional",
            "type": "string",
            "description": "Receiver Identification. Nacha refers to this as the Individual Identification Number. 15 character maximum."
          }
        ]
      },
      {
        "name": "secCode",
        "kind": "required",
        "type": "string",
        "description": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page.",
        "": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page."
      },
      {
        "name": "description",
        "kind": "required",
        "type": "string",
        "description": "Description of the payment. Maximum 10 characters.",
        "children": []
      },
      {
        "name": "transactionType",
        "kind": "required",
        "type": "string",
        "description": "Sending or requesting funds:\n- Push (originator is sending funds—debit)\n- Pull (originator is receiving funds—credit)",
        "children": []
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "Integer",
        "description": "Dollar amount of payment in positive integral cents. For example, $1.00 appears as 100.",
        "": "Dollar amount of payment in positive integral cents. For example, $1.00 appears as 100."
      },
      {
        "name": "serviceType",
        "kind": "required",
        "type": "string",
        "description": "When the payment completes:\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)",
        "": "When the payment completes:\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)"
      },
      {
        "name": "fedBatchWindow",
        "kind": "optional",
        "type": "integer",
        "description": "",
        "": "integer"
      },
      {
        "name": "extendedDetails",
        "kind": "optional",
        "type": "Object",
        "description": "ACH-specific details.\n\nIf the transactionType is pull and secCode is WEB you must include a paymentType value in this object.\n\nIf the secCode is POS you must include a cardTransactionType value.\n\nLearn more on the Nacha site.",
        "children": [
          {
            "name": "authCode",
            "kind": "optional",
            "type": "string",
            "description": "Authorization code related to card-based transactions"
          },
          {
            "name": "cardAccountNumber",
            "kind": "optional",
            "type": "string",
            "description": "Card account number used in the transaction"
          },
          {
            "name": "cardExpDate",
            "kind": "optional",
            "type": "string",
            "description": "Expiration date of the card used"
          },
          {
            "name": "cardTransactionType",
            "kind": "optional",
            "type": "string",
            "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
          },
          {
            "name": "checkSerialNumber",
            "kind": "optional",
            "type": "string",
            "description": "Serial number for check-based transactions"
          },
          {
            "name": "docReferenceNumber",
            "kind": "optional",
            "type": "string",
            "description": "Document reference number associated with the transaction"
          },
          {
            "name": "itemType",
            "kind": "optional",
            "type": "string",
            "description": "Type of financial item, for example, Check or Card"
          },
          {
            "name": "networkIdentification",
            "kind": "optional",
            "type": "string",
            "description": "Network through which the transaction was processed"
          },
          {
            "name": "paymentType",
            "kind": "optional",
            "type": "string",
            "description": "Payment types are a single character, and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
          },
          {
            "name": "processControl",
            "kind": "optional",
            "type": "string",
            "description": "Internal Cross River processing control code"
          },
          {
            "name": "reference1",
            "kind": "optional",
            "type": "string",
            "description": "Reference field for reconciliation"
          },
          {
            "name": "reference2",
            "kind": "optional",
            "type": "string",
            "description": "Reference field for reconciliation"
          },
          {
            "name": "researchNumber",
            "kind": "optional",
            "type": "string",
            "description": "Research ID for dispute or trace purposes"
          },
          {
            "name": "terminalIdentification",
            "kind": "optional",
            "type": "string",
            "description": "ID of the terminal where the transaction occurred"
          },
          {
            "name": "terminalLocation",
            "kind": "optional",
            "type": "string",
            "description": "Location descriptor of the terminal"
          },
          {
            "name": "terminalCity",
            "kind": "optional",
            "type": "string",
            "description": "City where the terminal is located"
          },
          {
            "name": "terminalState",
            "kind": "optional",
            "type": "string",
            "description": "State where the terminal is located"
          },
          {
            "name": "transactionDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the transaction happened"
          },
          {
            "name": "transactionDesc",
            "kind": "optional",
            "type": "string",
            "description": "Additional description of the transaction"
          },
          {
            "name": "transactionSerial",
            "kind": "optional",
            "type": "string",
            "description": "Serial number of the transaction"
          },
          {
            "name": "transactionTime",
            "kind": "optional",
            "type": "string",
            "description": "Transaction timestamp"
          }
        ],
        "schema": [
          {
            "name": "authCode",
            "kind": "optional",
            "type": "string",
            "description": "Authorization code related to card-based transactions"
          },
          {
            "name": "cardAccountNumber",
            "kind": "optional",
            "type": "string",
            "description": "Card account number used in the transaction"
          },
          {
            "name": "cardExpDate",
            "kind": "optional",
            "type": "string",
            "description": "Expiration date of the card used"
          },
          {
            "name": "cardTransactionType",
            "kind": "optional",
            "type": "string",
            "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
          },
          {
            "name": "checkSerialNumber",
            "kind": "optional",
            "type": "string",
            "description": "Serial number for check-based transactions"
          },
          {
            "name": "docReferenceNumber",
            "kind": "optional",
            "type": "string",
            "description": "Document reference number associated with the transaction"
          },
          {
            "name": "itemType",
            "kind": "optional",
            "type": "string",
            "description": "Type of financial item, for example, Check or Card"
          },
          {
            "name": "networkIdentification",
            "kind": "optional",
            "type": "string",
            "description": "Network through which the transaction was processed"
          },
          {
            "name": "paymentType",
            "kind": "optional",
            "type": "string",
            "description": "Payment types are a single character, and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
          },
          {
            "name": "processControl",
            "kind": "optional",
            "type": "string",
            "description": "Internal Cross River processing control code"
          },
          {
            "name": "reference1",
            "kind": "optional",
            "type": "string",
            "description": "Reference field for reconciliation"
          },
          {
            "name": "reference2",
            "kind": "optional",
            "type": "string",
            "description": "Reference field for reconciliation"
          },
          {
            "name": "researchNumber",
            "kind": "optional",
            "type": "string",
            "description": "Research ID for dispute or trace purposes"
          },
          {
            "name": "terminalIdentification",
            "kind": "optional",
            "type": "string",
            "description": "ID of the terminal where the transaction occurred"
          },
          {
            "name": "terminalLocation",
            "kind": "optional",
            "type": "string",
            "description": "Location descriptor of the terminal"
          },
          {
            "name": "terminalCity",
            "kind": "optional",
            "type": "string",
            "description": "City where the terminal is located"
          },
          {
            "name": "terminalState",
            "kind": "optional",
            "type": "string",
            "description": "State where the terminal is located"
          },
          {
            "name": "transactionDate",
            "kind": "optional",
            "type": "string",
            "description": "Date the transaction happened"
          },
          {
            "name": "transactionDesc",
            "kind": "optional",
            "type": "string",
            "description": "Additional description of the transaction"
          },
          {
            "name": "transactionSerial",
            "kind": "optional",
            "type": "string",
            "description": "Serial number of the transaction"
          },
          {
            "name": "transactionTime",
            "kind": "optional",
            "type": "string",
            "description": "Transaction timestamp"
          }
        ]
      },
      {
        "name": "iatDetails",
        "kind": "optional",
        "type": "Object",
        "description": "International ACH details. Required if the secCode is IAT.\nDo not enter values for these attributes for any other secCode.",
        "children": [
          {
            "name": "originator",
            "kind": "optional",
            "type": "Object",
            "description": "Payment sender details",
            "children": [
              {
                "name": "address",
                "kind": "required",
                "type": "string",
                "description": "Originator street or post office box address. 35 characters maximum."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Originator city full name. 33 characters maximum."
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "Originator state or province name. 33 characters maximum."
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Originator postal or ZIP code. Regular expression. 32 characters maximum."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "receiver",
            "kind": "required",
            "type": "Object",
            "description": "Payment receiver details",
            "children": [
              {
                "name": "address",
                "kind": "required",
                "type": "string",
                "description": "Receiver street or post office box address. 35 characters maximum."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Receiver city full name. 33 characters maximum."
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "Receiver state or province name. 33 characters maximum."
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Receiver postal or ZIP code. Regular expression. 32 characters maximum."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "originatingBank",
            "kind": "optional",
            "type": "Object",
            "description": "Details of financial institution originating the IAT",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of originating financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Originating bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "Originating bank 2-letter ISO country code"
              }
            ]
          },
          {
            "name": "receivingBank",
            "kind": "required",
            "type": "Object",
            "description": "Details of financial institution receiving the IAT",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of receiving financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Receiving bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "Receiving DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "remittanceInfo1",
            "kind": "optional",
            "type": "string",
            "description": "Additional IAT information. 80 characters.\nA second field is available as remittanceInfo2."
          },
          {
            "name": "correspondentBank1",
            "kind": "optional",
            "type": "Object",
            "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5 , each with the same child attributes.",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "DFI Identification Number Qualifier:\n\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "transactionTypeCode",
            "kind": "required",
            "type": "string",
            "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
          },
          {
            "name": "originatingCurrency",
            "kind": "optional",
            "type": "string",
            "description": "An ISO three-character code to identify the originating currency"
          },
          {
            "name": "destinationCurrency",
            "kind": "optional",
            "type": "string",
            "description": "An ISO three-character code to identify the receiving currency"
          }
        ],
        "schema": [
          {
            "name": "originator",
            "kind": "optional",
            "type": "Object",
            "description": "Payment sender details",
            "children": [
              {
                "name": "address",
                "kind": "required",
                "type": "string",
                "description": "Originator street or post office box address. 35 characters maximum."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Originator city full name. 33 characters maximum."
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "Originator state or province name. 33 characters maximum."
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Originator postal or ZIP code. Regular expression. 32 characters maximum."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "receiver",
            "kind": "required",
            "type": "Object",
            "description": "Payment receiver details",
            "children": [
              {
                "name": "address",
                "kind": "required",
                "type": "string",
                "description": "Receiver street or post office box address. 35 characters maximum."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Receiver city full name. 33 characters maximum."
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "Receiver state or province name. 33 characters maximum."
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Receiver postal or ZIP code. Regular expression. 32 characters maximum."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "originatingBank",
            "kind": "optional",
            "type": "Object",
            "description": "Details of financial institution originating the IAT",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of originating financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Originating bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "Originating DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "Originating bank 2-letter ISO country code"
              }
            ]
          },
          {
            "name": "receivingBank",
            "kind": "required",
            "type": "Object",
            "description": "Details of financial institution receiving the IAT",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of receiving financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "Receiving bank DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "Receiving DFI Identification Number Qualifier:\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "remittanceInfo1",
            "kind": "optional",
            "type": "string",
            "description": "Additional IAT information. 80 characters.\nA second field is available as remittanceInfo2."
          },
          {
            "name": "correspondentBank1",
            "kind": "optional",
            "type": "Object",
            "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5 , each with the same child attributes.",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Name of financial institution. 35 characters maximum."
              },
              {
                "name": "identification",
                "kind": "required",
                "type": "string",
                "description": "DFI Identification number, which is the first 8 digits of that financial institution's routing number"
              },
              {
                "name": "idQualifier",
                "kind": "required",
                "type": "string",
                "description": "DFI Identification Number Qualifier:\n\n- 01 (National Clearing System Number. For example, US Routing transit number)\n- 02 BIC Code\n- 03 IBAN"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          },
          {
            "name": "transactionTypeCode",
            "kind": "required",
            "type": "string",
            "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
          },
          {
            "name": "originatingCurrency",
            "kind": "optional",
            "type": "string",
            "description": "An ISO three-character code to identify the originating currency"
          },
          {
            "name": "destinationCurrency",
            "kind": "optional",
            "type": "string",
            "description": "An ISO three-character code to identify the receiving currency"
          }
        ],
        "": "International ACH details. Required if the secCode is IAT.\nDo not enter values for these attributes for any other secCode."
      },
      {
        "name": "addenda",
        "kind": "optional",
        "type": "string",
        "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as an invoice number. 80 characters maximum.",
        "": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as an invoice number. 80 characters maximum."
      },
      {
        "name": "addendas",
        "kind": "optional",
        "type": "string",
        "description": "Like the addenda attribute, use addendas for supplemental data to identify an account holder or provide information about the payment. This may include details such as multiple invoice numbers. Add each invoice number or other information as a line in an array. Each line has a maximum of 80 characters, and you can add up to 9999 lines.\nOnly use this attribute if the SEC code is CTX.\nThe addenda and addendas attributes are mutually exclusive. You cannot use both.",
        "": "Like the addenda attribute, use addendas for supplemental data to identify an account holder or provide information about the payment. This may include details such as multiple invoice numbers. Add each invoice number or other information as a line in an array. Each line has a maximum of 80 characters, and you can add up to 9999 lines.\nOnly use this attribute if the SEC code is CTX.\nThe addenda and addendas attributes are mutually exclusive. You cannot use both."
      },
      {
        "name": "purpose",
        "kind": "optional",
        "type": "string",
        "description": "Reason for the ACH transfer. For internal use only. The data is not included with the outgoing ACH batch file.",
        "children": []
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
        "children": []
      },
      {
        "name": "externalPrefix",
        "kind": "optional",
        "type": "string",
        "description": "Prefix from external system integration",
        "": "Prefix from external system integration"
      },
      {
        "name": "externalAccountNumber",
        "kind": "optional",
        "type": "string",
        "description": "External-facing account reference number",
        "": "External-facing account reference number"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID. This ID first appears as the value for this attribute in the response to the originate a payment call. This ID is in the GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River account number for payment originator.  Depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment. The reference ID always begins with the first letter of the rail. For ACH the reference ID starts with 'A'.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "What kind of payment was sent, for example, origination or return. See the ACH Request and response codes page for a list of payment types.",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "The payment direction, which includes:\n- Inbound: payment received by a Cross River account from another bank\n- Outbound: a payment sent from a Cross River account to another bank",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Current lifecycle status of the payment, for example, Created, Processing, or Completed. See the ACH Request and response codes page for a list of payment statuses.",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Payment channel:\n- Api\n- PartnerPortal\n- OpsPortal\n- File",
      "children": []
    },
    {
      "name": "postingType",
      "kind": "optional",
      "type": "string",
      "description": "How the payment is grouped for posting:\n- Individual\n- Aggregate (batch)",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier (GUID) used to group related client payments in batch submissions, if you originate the client batch",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "Integer",
      "description": "Sequence number of the payment in the batch, if you originate the client batch",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Fedwire or ACH batch ID used for settlement tracking",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "Integer",
      "description": "Sequence of the payment inside of the batch sent to or received from the Fed",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "ID representing the memo post associated with this transaction",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code representing the posting category used internally",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "The related Cross River system transaction status. When you originate a payment, the system initially returns OK. If the payment fails or is declined, the value changes to a Cross River system-generated code:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Processing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because: \n- OfacUnableToDetermine\n- OfacConfirmed\n- OfacUnconfirmed\n- Other",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "Reason for any OFAC or compliance-based block:\n- Ofac\n- Other",
      "children": []
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "Object",
      "description": "Originator bank details",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies the originator financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number for payment originator"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Originator deposit account type:\n- Checking\n- Savings\n- GeneralLedger\n- Loan"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originator of the transaction. Nacha refers to this as Company Name."
        },
        {
          "name": "identification",
          "kind": "optional",
          "type": "string",
          "description": "Originator Identification. Nacha refers to this as the Company Identification."
        },
        {
          "name": "data",
          "kind": "optional",
          "type": "string",
          "description": "Additional metadata provided by the originator. Nacha refers to this as Company Discretionary Data."
        }
      ]
    },
    {
      "name": "receiver",
      "kind": "optional",
      "type": "Object",
      "description": "Receiver bank details",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies  the receiver financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number for the receiver"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Receiver deposit account type:\n- Checking\n- Savings\n- GeneralLedger\n- Loan"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Receiver name as it appears on the receiver account. Nacha refers to this as the Individual Name."
        },
        {
          "name": "identification",
          "kind": "optional",
          "type": "string",
          "description": "Receiver Identification. Nacha refers to this as the Individual Identification Number. 15 character maximum."
        },
        {
          "name": "data",
          "kind": "optional",
          "type": "string",
          "description": "Additional metadata provided by the receiver. Nacha refers to this as Discretionary Data."
        }
      ]
    },
    {
      "name": "secCode",
      "kind": "optional",
      "type": "string",
      "description": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page.",
      "children": []
    },
    {
      "name": "description",
      "kind": "optional",
      "type": "string",
      "description": "Description of the payment provided at origination",
      "children": []
    },
    {
      "name": "transactionType",
      "kind": "optional",
      "type": "string",
      "description": "Sending or requesting funds:\n- Push (originator is sending funds—debit)\n- Pull (originator is receiving funds—credit)",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of payment in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "serviceType",
      "kind": "optional",
      "type": "string",
      "description": "When the payment completes:\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)",
      "children": []
    },
    {
      "name": "extendedDetails",
      "kind": "optional",
      "type": "Object",
      "description": "ACH-specific fields. Learn more on the Nacha site.",
      "children": [
        {
          "name": "authCode",
          "kind": "optional",
          "type": "string",
          "description": "Authorization code related to card-based transactions"
        },
        {
          "name": "cardExpDate",
          "kind": "optional",
          "type": "string",
          "description": "Expiration date of the card used"
        },
        {
          "name": "cardTransactionType",
          "kind": "optional",
          "type": "string",
          "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
        },
        {
          "name": "checkSerialNumber",
          "kind": "optional",
          "type": "string",
          "description": "Serial number for check-based transactions"
        },
        {
          "name": "docReferenceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Document reference number associated with the transaction"
        },
        {
          "name": "itemType",
          "kind": "optional",
          "type": "string",
          "description": "Type of financial item, for example, Check or  Card"
        },
        {
          "name": "networkIdentification",
          "kind": "optional",
          "type": "string",
          "description": "Network through which the transaction was processed"
        },
        {
          "name": "paymentType",
          "kind": "optional",
          "type": "string",
          "description": "Payment types are used in proceessing and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
        },
        {
          "name": "processControl",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River processing control code"
        },
        {
          "name": "reference1",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "reference2",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "researchNumber",
          "kind": "optional",
          "type": "string",
          "description": "Research ID for dispute or trace purposes"
        },
        {
          "name": "terminalIdentification",
          "kind": "optional",
          "type": "string",
          "description": "ID of the terminal where the transaction occurred"
        },
        {
          "name": "terminalLocation",
          "kind": "optional",
          "type": "string",
          "description": "Location descriptor of the terminal"
        },
        {
          "name": "terminalCity",
          "kind": "optional",
          "type": "string",
          "description": "City where the terminal is located"
        },
        {
          "name": "terminalState",
          "kind": "optional",
          "type": "string",
          "description": "State where the terminal is located"
        },
        {
          "name": "transactionDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the transaction happened"
        },
        {
          "name": "transactionDesc",
          "kind": "optional",
          "type": "string",
          "description": "Additional description of the transaction"
        },
        {
          "name": "transactionSerial",
          "kind": "optional",
          "type": "string",
          "description": "Serial number of the transaction"
        },
        {
          "name": "transactionTime",
          "kind": "optional",
          "type": "string",
          "description": "Transaction timestamp"
        },
        {
          "name": "cardAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Card account number used in the transaction"
        }
      ]
    },
    {
      "name": "iatDetails",
      "kind": "optional",
      "type": "Object",
      "description": "International ACH details. \nThis object is only returned for the IAT secCode.",
      "children": [
        {
          "name": "originator",
          "kind": "optional",
          "type": "Object",
          "description": "Payment sender details",
          "children": [
            {
              "name": "address",
              "kind": "optional",
              "type": "string",
              "description": "Originator street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Originator city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Originator state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receiver",
          "kind": "optional",
          "type": "Object",
          "description": "Payment receiver details",
          "children": [
            {
              "name": "address",
              "kind": "optional",
              "type": "string",
              "description": "Receiver street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Receiver city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Receiver state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "originatingBank",
          "kind": "optional",
          "type": "Object",
          "description": "Details of financial institution originating the IAT",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of originating financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank DFI Identification number, which is the first 8 digits of its routing number."
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Originating DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receivingBank",
          "kind": "optional",
          "type": "Object",
          "description": "Details of financial institution receiving the IAT",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of receiving financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank DFI Identification number, which is the first 8 digits of its routing number"
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Receiving DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "remittanceInfo1",
          "kind": "optional",
          "type": "string",
          "description": "Additional IAT information.\nA second field is available as remittanceInfo2."
        },
        {
          "name": "correspondentBank1",
          "kind": "optional",
          "type": "Object",
          "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5, each with the same child attributes.",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": " Name of financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification number, which is the first 8 digits of its routing number."
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "transactionTypeCode",
          "kind": "optional",
          "type": "string",
          "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
        },
        {
          "name": "originatingCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the originating currency"
        },
        {
          "name": "destinationCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the receiving currency"
        }
      ]
    },
    {
      "name": "addenda",
      "kind": "optional",
      "type": "string",
      "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as invoice numbers.",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Effective date of the ACH payment (YYYY-MM-DD)",
      "children": []
    },
    {
      "name": "reasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Valid ACH return code explaining the return reason in accordance with NACHA guidelines (for example, R01, R02). See the ACH Request and Response Codes page for the return codes. ",
      "children": []
    },
    {
      "name": "reasonData",
      "kind": "optional",
      "type": "string",
      "description": "More information about the reason for the return.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Unique ACH trace number for the transaction",
      "children": []
    },
    {
      "name": "settlementDate",
      "kind": "optional",
      "type": "string",
      "description": "Date payment settled in the receiver's account",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if payment was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "wasCorrected",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if a payment is sent with bad info but the receiving FI fixes it and sends back the information (NOC). Otherwise false.",
      "children": []
    },
    {
      "name": "holdDays",
      "kind": "optional",
      "type": "Integer",
      "description": "For ACH pulls, allows defining a number of days to delay credit of funds to an account to mitigate fraud and NSF scenarios",
      "children": []
    },
    {
      "name": "previous",
      "kind": "optional",
      "type": "Object",
      "description": "Previous payment details",
      "children": [
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "Payment ID for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Trace number for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "settlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Settlement date for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "reasonData",
          "kind": "optional",
          "type": "string",
          "description": "Supporting data for the reason code for an original payment if the payment is returned or the system sends a NOC"
        }
      ]
    },
    {
      "name": "original",
      "kind": "optional",
      "type": "Object",
      "description": "Original payment details when a payment was returned or a NOC was sent.\nResending a payment after failure as a completely new request. The new payment cannot be linked to the failed payment.",
      "children": [
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "Payment ID for an original payment before any returns or corrections"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code for an original payment"
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Trace number for an original payment"
        },
        {
          "name": "settlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Settlement date for an original payment"
        },
        {
          "name": "reasonData",
          "kind": "optional",
          "type": "string",
          "description": "Supporting data for the reason code for an original payment"
        }
      ]
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was posted to the Cross River account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, the Cross River account involved in the payment.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the ACH transfer. For internal use only. The data is not included with the outgoing ACH batch file.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "externalPrefix",
      "kind": "optional",
      "type": "string",
      "description": "Prefix from external system integration",
      "children": []
    },
    {
      "name": "externalAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "External-facing account reference number",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-achv1payments",
  "legacyHash": "MHMqQcZ5W0fiT5WcbEgiR"
}
```
:::

#


[title] Card activation
[path] Payments/Card payments/Card Tokens APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [CardPayments.Card.Approved](docId\:wso2E9CMh8zs8PyIjC-7r)
- [CardPayments.Card.Rejected](docId\:wso2E9CMh8zs8PyIjC-7r)

## API reference

Active or deactivate a card token

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardpayments/v1/cardtokens/{id}/activation",
  "method": "PUT",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/cardtokens/{id}/activation",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "-rsdK0P7ah2W3ofiOMt1a",
        "language": "curl",
        "code": "curl --location --globoff --request PUT '{{baseUrl}}/cardpayments/v1/cardtokens/26acd726-dade-4064-996a-b42b00b634df/activation' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--data '{\n  \"activate\": true\n}'"
      },
      {
        "id": "3l35lyJo40hIWrZJ1jEYB",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'PUT',\n  'hostname': '{{baseUrl}}',\n  'path': '/cardpayments/v1/cardtokens/26acd726-dade-4064-996a-b42b00b634df/activation',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Accept': 'application/json'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"activate\": true\n});\n\nreq.write(postData);\n\nreq.end();"
      },
      {
        "id": "6KENM-gkkaXY9Az-KAZ8R",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"{{baseUrl}}\")\npayload = json.dumps({\n  \"activate\": True\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'application/json'\n}\nconn.request(\"PUT\", \"/cardpayments/v1/cardtokens/26acd726-dade-4064-996a-b42b00b634df/activation\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "4NOUJlfNDpmrc-AjHPKp7",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"{{baseUrl}}/cardpayments/v1/cardtokens/26acd726-dade-4064-996a-b42b00b634df/activation\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Put.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Accept\"] = \"application/json\"\nrequest.body = JSON.dump({\n  \"activate\": true\n})\n\nresponse = http.request(request)\nputs response.read_body\n"
      },
      {
        "id": "b3oDDiceVZWDOKHweP9vK",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"{{baseUrl}}/cardpayments/v1/cardtokens/26acd726-dade-4064-996a-b42b00b634df/activation\"\n  method := \"PUT\"\n\n  payload := strings.NewReader(`{\n  \"activate\": true\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"application/json\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "-rsdK0P7ah2W3ofiOMt1a"
  },
  "results": {
    "languages": [
      {
        "id": "zSKeGucw0Ij9uNyBPihiv",
        "language": "200",
        "code": "{\n    \"id\": \"26acd726-dade-4064-996a-b42b00b634df\",\n    \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n    \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n    \"accountNumber\": \"2287979807\",\n    \"token\": \"11FB445C487140A9BEA51457A796172A000000\",\n    \"authorizationStatus\": \"Approved\",\n    \"statusReasonCode\": \"00\",\n    \"statusReasonDescription\": \"Approved and completed successfullly\",\n    \"isAuthorized\": true,\n    \"firstName\": \"Bob\",\n    \"lastName\": \"Bobbie\",\n    \"address\": {\n        \"street1\": \"101 Main Street\",\n        \"street2\": \"More address info\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postalCode\": \"07666\",\n        \"countryCode\": \"US\"\n    },\n    \"isAddressVerified\": false,\n    \"accountNameInquiryUsed\": \"Used\",\n    \"accountNameInquiryResult\": \"Match\",\n    \"phone\": \"2015551212\",\n    \"emailAddress\": \"mmm@xxx.com\",\n    \"binNumber\": \"411111\",\n    \"panLastFour\": \"1111\",\n    \"expirationMonth\": 12,\n    \"expirationYear\": 2030,\n    \"cardFingerprint\": \"7BleaDLyA+3nxDUkoX6WjE0GKUHvEniZuoJFFjVd0muNYH4P3VOoV0w5LX3JW4h75OMx50mIRTS6xnpcxLX/2w==\",\n    \"isExpired\": false,\n    \"cardBrand\": \"Visa\",\n    \"capabilities\": {\n        \"fastFundsSupported\": true,\n        \"domesticPushEnabled\": true,\n        \"domesticPullEnabled\": true,\n        \"internationalPushEnabled\": true,\n        \"internationalPullEnabled\": true\n    },\n    \"issuerCountryCode\": \"US\",\n    \"clientIdentifier\": \"string\",\n    \"createdAt\": \"2026-04-13T07:03:23.62-04:00\",\n    \"isActive\": true,\n    \"authorizedAt\": \"2026-04-13T07:03:24.177-04:00\",\n    \"lastModifiedAt\": \"2026-04-13T07:11:06.4967045-04:00\"\n}",
        "customLabel": ""
      },
      {
        "id": "W5Gl11RtUiB7WeXh6Hp_d",
        "language": "400",
        "code": "{\n   \"errors\": [\n     {\n       \"code\": 0,\n       \"message\": \"string\"\n     } \n   ] \n}    ",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zSKeGucw0Ij9uNyBPihiv"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The GUID of the card token you want to update",
        "": "The GUID of the card token you want to update"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "activate",
        "kind": "required",
        "type": "boolean",
        "description": "Whether or not you want to activate the card token ",
        "": "Whether or not you want to activate the card token "
      }
    ]
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID of the card token you want to retrieve"
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the partner, as defined in COS."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the product, as defined in COS."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number"
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The master account number that the card token's account belongs to. If `accountNumber` is a sub-account, this is the parent account it rolls up to; otherwise the two values are the same."
    },
    {
      "name": "token",
      "kind": "optional",
      "type": "string",
      "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters). "
    },
    {
      "name": "rail",
      "kind": "optional",
      "type": "string",
      "description": "The processor that communicates with the card network:\n\n- McSend\n- TabaPay\n- VisaDirect"
    },
    {
      "name": "cardType",
      "kind": "optional",
      "type": "string",
      "description": "The kind of payment card:\n\n- Credit\n- Debit\n- Prepaid\n- Combo\n- ChargeCard\n- DeferredDebit\n- VisaPlus\n- Unknown"
    },
    {
      "name": "productType",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder card type:\n\n- Consumer\n- Commercial\n- Government\n- Business\n- Unknown"
    },
    {
      "name": "authorizationStatus",
      "kind": "optional",
      "type": "string",
      "description": "Responses can be:\n- NotRequired\n- New\n- Pending\n- Approved\n- Rejected\n- Failed"
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "A code indicating the reason for certain statuses, particularly useful in rejections or failures."
    },
    {
      "name": "statusReasonDescription",
      "kind": "optional",
      "type": "string",
      "description": "A description explaining the reason code."
    },
    {
      "name": "isAuthorized",
      "kind": "optional",
      "type": "boolean",
      "description": "An indicator on whether or not the card token is authorized"
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "First name. Min 1 character, max 35 characters"
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Middle name. Min 1 character, max 35 characters",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Last name. Min 1 character, max 35 characters"
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "object",
      "description": "Address of card holder",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Street address line 1. Max length 60"
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Street address line 2. Max length 60"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the city. Max length 60"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State code. 2 characters"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Max 10 characters"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        }
      ]
    },
    {
      "name": "isAddressVerified",
      "kind": "optional",
      "type": "boolean",
      "description": "An indicator on whether or not the address was verified"
    },
    {
      "name": "addressVerificationDetails",
      "kind": "optional",
      "type": "object",
      "description": "Detailed results from Address Verification Service (AVS) and CVV2 verification performed during card authorization",
      "children": [
        {
          "name": "avsResponseCode",
          "kind": "optional",
          "type": "string",
          "description": "AVS response code from the card network (e.g., 'Y' for match, 'N' for no match). Max 10 characters"
        },
        {
          "name": "avsResponseDesc",
          "kind": "optional",
          "type": "string",
          "description": "Human-readable description of the AVS response. Max 255 characters"
        },
        {
          "name": "cvv2ResultCode",
          "kind": "optional",
          "type": "string",
          "description": "CVV2 verification result code from the card network. Max 10 characters"
        },
        {
          "name": "isCVVMatched",
          "kind": "optional",
          "type": "boolean",
          "description": "Indicates whether the CVV2 provided matched the card on file"
        }
      ]
    },
    {
      "name": "accountNameInquiryUsed",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether Cross River tried to contact the ANI service. This attribute value will also let you know if the merchant isn't configured for the ANI service. In that case, we recommend contacting your Cross River relationship manager for details on how to connect to ANI.",
      "children": []
    },
    {
      "name": "accountNameInquiryResult",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the initiator-provided card details match fully, partially, or not at all, or if they are unknown. Possible values are:\nMatch\nNo Match\nPartial Match\nUnknown",
      "children": []
    },
    {
      "name": "nameVerificationDetails",
      "kind": "optional",
      "type": "object",
      "description": "Acquirer Network Information (ANI) results for cardholder name verification performed during card authorization",
      "children": [
        {
          "name": "lastNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the last name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "firstNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the first name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "middleNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the middle name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "nameVerificationProcessingResult",
          "kind": "optional",
          "type": "string",
          "description": "Overall processing result for name verification (e.g., 'SUCCESS', 'FAILED')"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "string",
      "description": "Valid phone number"
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Valid email address"
    },
    {
      "name": "binNumber",
      "kind": "optional",
      "type": "string",
      "description": "The first 4 digits on the card. This identification number indicates the card-issuing bank."
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of PAN "
    },
    {
      "name": "expirationMonth",
      "kind": "optional",
      "type": "integer",
      "description": "Two-digit month. Credit cards expire at the end of the month written on the card"
    },
    {
      "name": "expirationYear",
      "kind": "optional",
      "type": "integer",
      "description": "Two-digit year"
    },
    {
      "name": "cardFingerprint",
      "kind": "optional",
      "type": "string",
      "description": "A consistent, opaque identifier for a card without exposing any PAN-related data or risking reversibility",
      "children": []
    },
    {
      "name": "isExpired",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the card is expired"
    },
    {
      "name": "cardBrand",
      "kind": "optional",
      "type": "string",
      "description": "Will be one of the following:\n- AmericanExpress\n- ChinaUnionPay\n- Dankort\n- DinersClub\n- Discover\n- Hipercard\n- JCB\n- Laser\n- Maestro\n- MasterCard\n- RuPay\n- Solo\n- Switch\n- Visa\n- Unknown"
    },
    {
      "name": "capabilities",
      "kind": "optional",
      "type": "object",
      "description": "Capabilities are the actions permitted to do on a specific card, these are returned from the rails when the card is authorized",
      "children": [
        {
          "name": "fastFundsSupported",
          "kind": "optional",
          "type": "boolean",
          "description": "Card network can move the funds to the card immediately"
        },
        {
          "name": "domesticPushEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to push within the US"
        },
        {
          "name": "domesticPullEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to pull within the US"
        },
        {
          "name": "internationalPushEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to push internationally- outside of the US"
        },
        {
          "name": "internationalPullEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to pull internationally- outside of the US. \nNote: internationalPullEnabled - IS NOT YET SUPPORTED ACROSS ALL OF THE RAILS"
        }
      ]
    },
    {
      "name": "issuerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "ISO country of issuer. Used for domestic/international logic & compliance"
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "User reference id. Max 50 characters"
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When token was created"
    },
    {
      "name": "isActive",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the card is active "
    },
    {
      "name": "authorizedAt",
      "kind": "optional",
      "type": "string",
      "description": "When authorized"
    },
    {
      "name": "deActivatedAt",
      "kind": "optional",
      "type": "string",
      "description": "When deactivated"
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Last update timestamp"
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cardpaymentsv1cardtokensidactivation",
  "legacyHash": "wJuXgxL_exORHTCXoDJ4H"
}
```
:::


[title] Payment purpose codes
[path] Payments/International payments/

## Payment purpose codes intro

**P**ayment **P**urpose **C**odes (PPCs), also known as payment reason codes, are standardized identifiers that provide the reason for a crossborder or international payment. PPCs enable payers to categorize the payment, whether for goods, services, investments, or other purposes. In crossborder payments, PPCs add an additional layer of transparency by ensuring funds are used for legitimate purposes and are considered mandatory or required fields by the Central Banking authority in certain jurisdictions, i.e. China, India, Malaysia, and the United Arab Emirates.&#x20;

## Payment origination

All outbound payments where the “To” currency is one of: CNY (China), INR (India), MYR (Malaysia), and AED (United Arab Emirates) require the use of the Payment Purpose Code field to be populated with the corresponding PPC for the respective currency.

The following API fields, found in the [Request payment quote](docId\:OnbkGeBIHVb4ihvB1haKL) endpoint are associated with payment purpose codes:

- `purposeCode`
- `invoiceNumber` - see [Trade payments compliance](docId\:kmgW82p6BkYZJX-aojTae).
- `InvoiceDate` -  see [Trade payments compliance](docId\:kmgW82p6BkYZJX-aojTae).

## Payment types

There are specific types of payments for each of these countries that require Payment Purpose Codes.&#x20;

The specific payment codes in the following table are used for  and .&#x20;

| Country                                       | Payment Type           | Purpose of Payment Code<br />(applies to both individual and corporate)                                                                                                                                                                                   |
| --------------------------------------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [India (IN)](docId\:kmgW82p6BkYZJX-aojTae)    | Local INR              | **Transfer**                                                                                                                                                                                                                                              |
| [Malaysia (MY)](docId\:kmgW82p6BkYZJX-aojTae) | Local MYR              | **Transfer**                                                                                                                                                                                                                                              |
| [UAE (AE)](docId\:kmgW82p6BkYZJX-aojTae)      | SWIFT - All currencies | - AFA: Receipts or payments from personal residents bank account or deposits abroad (where customer is a resident of UAE).
- AFL: Receipts or payments from personal non-residents bank account in Bahrain (where the customer is a non-resident of UAE). |



## China (CNY)

| Code | Description                   |
| ---- | ----------------------------- |
| CTF  | Cross-border capital transfer |
| GOD  | Cross-border goods trade      |
| STR  | Cross-border service transfer |
| OTF  | Other transfers               |

## India (INR)

| Code               | Description                                                      | Use                | Trade-Related |
| ------------------ | ---------------------------------------------------------------- | ------------------ | ------------- |
| advertising        | Advertising and public relations-related expenses                | B2B, B2C, P2B      | Yes           |
| advisor\_fees      | Fees for advisory, technical, academic, or specialist assistance | B2B, B2C, P2B      | Yes           |
| construction       | Construction costs/expenses                                      | B2B, B2C, P2B      | Yes           |
| education          | Education-related student expenses                               | B2B, B2C, P2B      | No            |
| exports            | Payments for exported goods                                      | B2B, B2C, P2B      | Yes           |
| family             | Family maintenance                                               | P2P                | No            |
| fund\_investment   | Mutual fund investment                                           | B2B, B2C, P2B      | No            |
| goods              | Trade settlement for goods and general goods trades              | B2B, B2C, P2B      | Yes           |
| hotel              | Hotel accommodation                                              | B2B, B2C           | No            |
| insurance\_claims  | Insurance claims payment                                         | P2B, P2P           | Yes           |
| insurance\_premium | Insurance premium                                                | B2B, B2C, P2B, P2P | No            |
| loan\_repayment    | Repayment of loans                                               | B2B, B2C, P2B      | No            |
| medical            | Medical treatment and expenses                                   | B2B, B2C, P2B      | No            |
| other\_fees        | Broker, front end, commitment, guarantee, and custodian fees     | B2B, B2C, P2B      | Yes           |
| property\_purchase | Purchase of residential property                                 | B2B, B2C, P2B      | No            |
| property\_rental   | Payment of property rental                                       | B2B, B2C, P2B      | No            |
| royalties          | Royalty, trademark, patent, and copyright fees                   | B2B, B2C, P2B      | Yes           |
| services           | Information service charges                                      | B2B, B2C, P2B      | Yes           |
| tax                | Tax payment                                                      | B2B, B2C, P2B      | No            |
| transfer           | Transfer to own account                                          | B2B, B2C,P2B       | No            |
| travel             | Travel                                                           | B2B, B2C, P2B      | No            |
| utilities          | Utility bills                                                    | B2B, B2C, P2B      | No            |

### Important restrictions&#x20;

- Local INR payments are not supported for the following purpose codes: salary, product indemnity insurance, and investment in shares.
- Trade-related INR payments to a HDFC beneficiary bank and INR payments to any beneficiary bank using the code ‘delivery - delivery fees for goods’ are also not supported.

### Trade payments compliance

- For trade-related payments, `invoiceNumber` and `InvoiceDate` are required.
- Maximum 1.5M INR per beneficiary account per day under RDA limits.

### Charity restrictions

- Only the following organizations are supported: UNICEF, Prime Minister Relief Fund, International Red Cross.

### Sample code

Sample response for the `/International/v1/quotes` endpoint for India containing a Payment Purpose Code.

:::CodeblockTabs
Request for payment quote for India for PPC

```json
{
  "currency": "inr",
  "accountNumber": "158560897123",
  "fromAmount": "500",
  "toAmount": "",
  "beneficiary": {
    "firstName": "Jon",
    "lastName": "Smith",
    //"companyName": "",
    "fullName": "JonSmith",
    //"email": "js@smith.com",
    "birthDate": "2001-06-18T13:05:09.015Z",
    "address": "1 Street",
    "city": "Winfield",
    "stateProvince": "",
    "postalCode": "IN12345",
    "countryCode": "IN",
    "entityType": "Individual"
  },
  "beneficiaryFi": {
    "bankName": "Bank IN",
    "bankCountryCode": "IN",
    "bankAddress": "1 Avenue",
    "bankAccountType": "Checking",
    "routingCodeType1": "SortCode",
    "routingCodeValue1": "123456789",
    "routingCodeType2": "aba",
    "routingCodeValue2": "123456789",
    "bicSwift": "TGCLGB99",
    "iban": "IN33BUKB20201555555555"
  },
  "priority": true,
  //"conversionFeeBps": 10,
  //"transactionFeeAmount": 10,
  "purposeCode": "exports",
  "invoiceNumber": "12345",
  "invoiceDate": "20250809"
  "purpose": "SRV"
}
```
:::

:::CodeblockTabs
Response for Request a payment quote API

```json
{
    "id": "ea5a8df9-26ea-4ac7-8f0f-b35a00c61234",
    "accountNumber": "158560897007",
    "currency": "inr",
    "beneficiary": {
        "companyName": "Tech Importers India Pvt Ltd",
        "email": "accounts@techimporters.in",
        "address": "23 Industrial Road",
        "city": "Bangalore",
        "stateProvince": "KA",
        "postalCode": "560001",
        "countryCode": "IN",
        "entityType": "Company"
    },
    "beneficiaryFi": {
        "bankName": "ICICI Bank",
        "bankCountryCode": "IN",
        "bankAddress": "MG Road",
        "bankAccountType": "Checking",
        "accountNumber": "123456789012",
        "routingCodeType1": "Ifsc",
        "routingCodeValue1": "ICIC0001234"
    },
    "fromAmount": 1500000,
    "toAmount": 123966750,
    "transactionFee": 100,
    "conversionRate": 82.6445,
    "estimatedDeliveryDate": "2025-09-17",
    "expiresAt": "2025-09-16T08:05:27.1354807-04:00",
    "status": "Created",
    "priority": false,
    "paymentNetwork": "Regular",
    "purpose": "Export of goods",
    "purposeCode": "exports",
    "invoiceNumber": "INV-20250825-001",
    "invoiceDate": "2025-08-25T06:00:00-04:00"
}
```
:::

## Malaysia (MYR)

| Code                | Description                |
| ------------------- | -------------------------- |
| advertising         | Advertising payment        |
| advisor\_fees       | Advisor fees payment       |
| business\_insurance | Business insurance payment |
| construction        | Construction payment       |
| delivery            | Delivery payment           |
| education           | Education payment          |
| exports             | Exports payment            |
| family              | Family payment             |
| fund\_investment    | Fund investment payment    |
| hotel               | Hotel payment              |
| insurance\_claims   | Insurance claims payment   |
| insurance\_premium  | Insurance premium payment  |
| loan\_repayment     | Loan repayment             |
| medical             | Medical payment            |
| office              | Office payment             |
| other\_fees         | Other fees payment         |
| property\_purchase  | Property purchase payment  |
| property\_rental    | Property rental payment    |
| royalties           | Royalties payment          |
| services            | Services payment           |
| share\_investment   | Share investment payment   |
| tax                 | Tax payment                |
| transfer            | Transfer payment           |
| transportation      | Transportation payment     |
| travel              | Travel payment             |
| utilities           | Utilities payment          |

## United Arab Emirates (UED)

| Code | Description                                                                                                                                                                                                                                                               |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ACM  | Agency Commission                                                                                                                                                                                                                                                         |
| AES  | Advance payment against EOS                                                                                                                                                                                                                                               |
|      | Receipts or payments from personal residents bank account or deposits abroad                                                                                                                                                                                              |
|      | Receipts or payments from personal non-resident bank account in the UAE                                                                                                                                                                                                   |
| ALW  | Allowances                                                                                                                                                                                                                                                                |
| ATS  | Air transport                                                                                                                                                                                                                                                             |
| BON  | Bonus                                                                                                                                                                                                                                                                     |
| CCP  | Corporate Card Payment                                                                                                                                                                                                                                                    |
| CEA  | Equity and investment fund shares for the establishment of new company from residents abroad, equity of merger or acquisition of companies abroad from residents and participation to capital increase of related companies abroad                                        |
| CEL  | Equity and investment fund shares for the establishment of new company in the UAE from non-residents, equity of merger or acquisition of companies in the UAE from non-residents and participation to capital increase of related companies from non-residents in the UAE |
| CHC  | Charitable Contributions                                                                                                                                                                                                                                                  |
| CIN  | Commercial Investments                                                                                                                                                                                                                                                    |
| COM  | Commission                                                                                                                                                                                                                                                                |
| COP  | Compensation                                                                                                                                                                                                                                                              |
| CRP  | Credit Card Payments                                                                                                                                                                                                                                                      |
| DCP  | Pre-Paid Reloadable & Personalized Debit Card Payments                                                                                                                                                                                                                    |
| DIV  | Dividend Payouts                                                                                                                                                                                                                                                          |
| DLA  | Purchases and sales of foreign debt securities in not related companies – More than a year                                                                                                                                                                                |
| DLF  | Debt instruments intragroup loans, deposits foreign                                                                                                                                                                                                                       |
| DLL  | Purchases and sales of securities issued by residents in not related companies – More than a year                                                                                                                                                                         |
| DOE  | Dividends on equity not intra group                                                                                                                                                                                                                                       |
| DSA  | Purchases and sales of foreign debt securities in not related companies – Less than a year                                                                                                                                                                                |
| DSF  | Debt instruments intragroup foreign securities                                                                                                                                                                                                                            |
| DSL  | Purchases and sales of securities issued by residents in not related companies – Less than a year                                                                                                                                                                         |
| EDU  | Educational Support                                                                                                                                                                                                                                                       |
| EMI  | Equated Monthly Instalments                                                                                                                                                                                                                                               |
| EOS  | End of Service                                                                                                                                                                                                                                                            |
| FAM  | Family Support                                                                                                                                                                                                                                                            |
| FDA  | Financial derivatives foreign                                                                                                                                                                                                                                             |
| FDL  | Financial derivatives in the UAE                                                                                                                                                                                                                                          |
| FIA  | Investment fund shares foreign                                                                                                                                                                                                                                            |
| FIL  | Investment fund shares in the UAE                                                                                                                                                                                                                                         |
| FIS  | Financial services                                                                                                                                                                                                                                                        |
| FSA  | Equity other than investment fund shares in not related companies abroad                                                                                                                                                                                                  |
| FSL  | Equity other than investment fund shares in not related companies in the UAE                                                                                                                                                                                              |
| GDE  | Goods Sold                                                                                                                                                                                                                                                                |
| GDI  | Goods bought                                                                                                                                                                                                                                                              |
| GMS  | Processing repair and maintenance services on goods                                                                                                                                                                                                                       |
| GOS  | Government goods and services embassies etc                                                                                                                                                                                                                               |
| GRI  | Government related income taxes tariffs capital transfers etc                                                                                                                                                                                                             |
| IFS  | Information services                                                                                                                                                                                                                                                      |
| IGD  | Intra group dividends                                                                                                                                                                                                                                                     |
| IGT  | Inter group transfer                                                                                                                                                                                                                                                      |
| IID  | Intra group interest on debt                                                                                                                                                                                                                                              |
| INS  | Insurance services                                                                                                                                                                                                                                                        |
| IOD  | Income on deposits                                                                                                                                                                                                                                                        |
| IOL  | Income on loans                                                                                                                                                                                                                                                           |
| IPC  | Charges for the use of intellectual property royalties                                                                                                                                                                                                                    |
| IPO  | IPO subscriptions                                                                                                                                                                                                                                                         |
| IRP  | Interest rate swap payments                                                                                                                                                                                                                                               |
| IRW  | Interest rate unwind payments                                                                                                                                                                                                                                             |
| ISH  | Income on investment funds share                                                                                                                                                                                                                                          |
| ISL  | Interest on securities more than a year                                                                                                                                                                                                                                   |
| ISS  | Interest on securities less than a year                                                                                                                                                                                                                                   |
| ITS  | Computer services                                                                                                                                                                                                                                                         |
| LAS  | Leave salary                                                                                                                                                                                                                                                              |
| LDL  | Debt instruments intragroup loans, deposits in the UAE                                                                                                                                                                                                                    |
| LDS  | Debt instruments intragroup securities in the UAE                                                                                                                                                                                                                         |
| LEA  | Leasing abroad                                                                                                                                                                                                                                                            |
| LEL  | Leasing in the UAE                                                                                                                                                                                                                                                        |
| LIP  | Loan interest payments                                                                                                                                                                                                                                                    |
| LLA  | Loans – Drawings or Repayments on loans extended to nonresidents – Long-term                                                                                                                                                                                              |
| LLL  | Loans – Drawings or Repayments on foreign loans extended to residents – Long-term                                                                                                                                                                                         |
| LNC  | Loan charges                                                                                                                                                                                                                                                              |
| LND  | Loan disbursements                                                                                                                                                                                                                                                        |
| MCR  | Monetary Claim Reimbursements Medical Insurance or Auto Insurance etc.                                                                                                                                                                                                    |
| MWI  | Mobile wallet cash in                                                                                                                                                                                                                                                     |
| MWO  | Mobile wallet cash out                                                                                                                                                                                                                                                    |
| MWP  | Mobile wallet payments                                                                                                                                                                                                                                                    |
| OAT  | Own account transfer                                                                                                                                                                                                                                                      |
| OTS  | Other modes of transport                                                                                                                                                                                                                                                  |
| OVT  | Overtime                                                                                                                                                                                                                                                                  |
| PEN  | Pension                                                                                                                                                                                                                                                                   |
| PIN  | Personal Investments                                                                                                                                                                                                                                                      |
| PIP  | Profits on Islamic products                                                                                                                                                                                                                                               |
| PMS  | Professional and management consulting services                                                                                                                                                                                                                           |
| POR  | Refunds or Reversals on IPO subscriptions                                                                                                                                                                                                                                 |
| POS  | POS Merchant Settlement                                                                                                                                                                                                                                                   |
| PPA  | Purchase of real estate abroad from residents                                                                                                                                                                                                                             |
| PPL  | Purchase of real estate in the UAE from non-residents                                                                                                                                                                                                                     |
| PRP  | Profit rate swap payments                                                                                                                                                                                                                                                 |
| PRR  | Profits or rents on real estate                                                                                                                                                                                                                                           |
| PRS  | Personal cultural audio visual and recreational services                                                                                                                                                                                                                  |
| PRW  | Profit rate unwind payments                                                                                                                                                                                                                                               |
| RDS  | Research and development services                                                                                                                                                                                                                                         |
| RFS  | Repos on foreign securities                                                                                                                                                                                                                                               |
| RLS  | Repos on securities issued by residents                                                                                                                                                                                                                                   |
| RNT  | Rent payments                                                                                                                                                                                                                                                             |
| SAA  | Salary advance                                                                                                                                                                                                                                                            |
| SAL  | Salary                                                                                                                                                                                                                                                                    |
| SCO  | Construction                                                                                                                                                                                                                                                              |
| SLA  | Loans – Drawings or Repayments on loans extended to nonresidents – Short-term                                                                                                                                                                                             |
| SLL  | Loans – Drawings or Repayments on foreign loans extended to residents – Short-term                                                                                                                                                                                        |
| STR  | Travel                                                                                                                                                                                                                                                                    |
| STS  | Sea transport                                                                                                                                                                                                                                                             |
| SVI  | Stored value card cash-in                                                                                                                                                                                                                                                 |
| SVO  | Stored value card cash-out                                                                                                                                                                                                                                                |
| SVP  | Stored value card payments                                                                                                                                                                                                                                                |
| TCP  | Trade credits and advances payable                                                                                                                                                                                                                                        |
| TCR  | Trade credits and advances receivable                                                                                                                                                                                                                                     |
| TCS  | Telecommunication services                                                                                                                                                                                                                                                |
| TKT  | Tickets                                                                                                                                                                                                                                                                   |
| TOF  | Transfer of funds between persons Normal and Juridical                                                                                                                                                                                                                    |
| TTS  | Technical trade-related and other business services                                                                                                                                                                                                                       |
| UTL  | Utility Bill Payments                                                                                                                                                                                                                                                     |


[title] Webhook events: International payments
[path] Payments/International payments/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific [webhooks](docId\:BN5XtgkJogBe-CtwomCbS) which have a specific [format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents `international payments` webhook events that are described in detail below.

| Event Name                                                      | Description                                                                                                                        | Related Endpoint                                |
| --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| [Core.Transaction.Completed](docId\:o9fUc2dKPczcl1h4yIChr)      | Transaction completed successfully                                                                                                 | [Send payment](docId\:eVBwhQlRGZlamLd2hRwVd)    |
| [International.Payment.Returned](docId\:o9fUc2dKPczcl1h4yIChr)  |                                                                                                                                    | [Send payment](docId\:eVBwhQlRGZlamLd2hRwVd)    |
| [International.Hold.Cleared  ](docId\:o9fUc2dKPczcl1h4yIChr)    | Hold on the international payment has cleared and the funds have be sent to the receiver's bank account.                           | [Send payment](docId\:eVBwhQlRGZlamLd2hRwVd)    |
| [International.Hold.Escalated](docId\:o9fUc2dKPczcl1h4yIChr)    | International payment is on hold and it's status was escalated. This is often used to indicate that additional actions are needed. | [Send payment](docId\:eVBwhQlRGZlamLd2hRwVd)    |
| [International.Payment.Sent](docId\:o9fUc2dKPczcl1h4yIChr)      | International payment has been successfully sent to the receiving institution.                                                     | [Send payment](docId\:eVBwhQlRGZlamLd2hRwVd)    |
| [International.Payment.Canceled](docId\:o9fUc2dKPczcl1h4yIChr)  | International payment canceled at partner request.                                                                                 | [Cancel payment](docId\:SwyRh0F0e40q1DOFZmuNr)  |
| [International.Payment.Rejected](docId\:o9fUc2dKPczcl1h4yIChr)  | International payment was rejected from the receiving bank.                                                                        | [Send payment](docId\:eVBwhQlRGZlamLd2hRwVd)    |

## Core.Transaction.Completed

Transaction completed successfully.

:::CodeblockTabs
Sample Event

```curl
{
  "id": "f131d2c4-1b44-4edd-8b44-b3bd00836435",
  "eventName": "Core.Transaction.Completed",
  "status": "Pending",
  "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
  "createdAt": "2025-12-24T02:58:22.903-05:00",
  "resources": [
    "core/v1/transactions/172c21b8-6a0d-4e17-975b-b3bd0083464d",
    "core/v1/transactions/3016a902-bf3b-4588-8223-b3bd008346b5"  
    ],  
    "details": [
    {      
      "transactionId": "172c21b8-6a0d-4e17-975b-b3bd0083464d",
      "transactionCode": "INTL Outgoing",
      "debitSubAccount": "158560897007",
      "debitMasterAccount": "158560897007",
      "debitResult": "OK",
      "creditSubAccount": "10014200011",
      "creditMasterAccount": "10014200011",
      "creditResult": "OK",
      "rail": "International",
      "railId": "payment/b4f74751-cb17-4b8c-83a9-b3bd008345be",
      "amount": "500",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "International payment from 158560897007",
      "proposedAt": "12/24/2025 02:57:57",
      "executedAt": "12/24/2025 02:57:57",
      "schedule": ""    
      },    
      {      
        "transactionId": "3016a902-bf3b-4588-8223-b3bd008346b5",
        "transactionCode": "INTL Return",
        "debitSubAccount": "10014200011",
        "debitMasterAccount": "10014200011",
        "debitResult": "OK",
        "creditSubAccount": "158560897007",
        "creditMasterAccount": "158560897007",
        "creditResult": "OK",
        "rail": "International",
        "railId": "return/129fce4a-d324-4e8b-bec7-b3bd00834673",
        "amount": "500",
        "currency": "usd",
        "clientIdentifier": null,
        "description": "International return payment from 158560897007",
        "proposedAt": "12/24/2025 02:57:57",
        "executedAt": "12/24/2025 02:57:57",
        "schedule": ""
    }
  ]
}
```
:::

## International.Payment.Returned

The `referencedPaymentID` parameter links an inbound return to a prior outbound payment, used to clearly identify which original payment each specific return is linked to. If there is none, a `null` value is returned.

:::CodeblockTabs
Sample Event

```curl
{
  "id": "c256329e-8fb4-4492-96e8-b43200abe620",
  "eventName": "International.Payment.Sent",
  "status": "Pending",
  "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
  "createdAt": "2026-04-20T06:25:51.893-04:00",
  "resources": [
    "international/v1/payments/4b0cd383-1cfb-4905-acbe-b43200ab3e33"
  ],
  "details": [
    {
      "paymentId": "4b0cd383-1cfb-4905-acbe-b43200ab3e33",
      "productId": "57146944-b145-4326-884d-b2f700ecf688",
      "quoteId": "ac6ad316-be57-4b27-b8fb-b43200ab2418",
      "fromCurrency": "usd",
      "toCurrency": "gbp",
      "fromAmount": "500",
      "toAmount": "375",
      "feeAmount": "0",
      "accountNumber": "158560897007",
      "status": "Completed",
      "purpose": "SRV",
      "rejectReason": null,
      "statusReason": null,
      "clientIdentifier": null,
      "priority": "True",
      "beneficiaryEntityType": "Individual",
      "beneficiaryCompanyName": null,
      "beneficiaryFirstName": "Jon",
      "beneficiaryLastName": "Smith",
      "beneficiaryAddress": "1 Street",
      "beneficiaryCity": "Winfield",
      "beneficiaryStateProvince": null,
      "beneficiaryPostalCode": "GB12345",
      "beneficiaryCountryCode": "GB",
      "referencedPaymentId": null
    }
  ]
```
:::

## Hold cleared

A hold on the international payment has cleared.

**Extended webhook event details**

:::CodeblockTabs
Sample Event

```curl
{
  "id": "2618e009-7339-41a8-bd4d-b0fb013a523b",
  "eventName": "International.Hold.Cleared",
  "status": "Pending",
  "partnerId": "e30bfd38-907a-45f1-b5b7-af08014c8e79",
  "createdAt": "2024-01-18T14:04:24.507-05:00",
  "resources": [
    "international/v1/payments/aefff994-148e-4f28-9ddc-b0fb013610c7/holds/62a79dad-8e47-48a3-a707-b0fb0136137b"
  ],
  "details": [
    {
      "holdId": "62a79dad-8e47-48a3-a707-b0fb0136137b",
      "paymentId": "aefff994-148e-4f28-9ddc-b0fb013610c7",
      "holdType": "InternalReview"
    }
  ]
}
```
:::

## Hold escalated

International payment is on hold and it's status was escalated. This is often used to indicate that additional actions are needed.

**Extended webhook event details**

:::CodeblockTabs
Sample Event

```curl
{
  "id": "9fd99994-f1e9-4b84-9386-b0fb01381f6f",
  "eventName": "International.Hold.Escalated",
  "status": "Pending",
  "partnerId": "e30bfd38-907a-45f1-b5b7-af08014c8e79",
  "createdAt": "2024-01-18T13:56:24.25-05:00",
  "resources": [
    "international/v1/payments/aefff994-148e-4f28-9ddc-b0fb013610c7/holds/62a79dad-8e47-48a3-a707-b0fb0136137b"
  ],
  "details": [
    {
      "holdId": "62a79dad-8e47-48a3-a707-b0fb0136137b",
      "paymentId": "aefff994-148e-4f28-9ddc-b0fb013610c7",
      "holdType": "InternalReview"
    }
  ]
}
```
:::

## Payment sent

International payment has been successfully sent to the receiving institution.

*Unique End-to-End Transaction Reference (*&#x75;etr) has been added at the bottom of the “details” portion, for all payment events (however, it will be null for events that are not payment sent). It is a *36-character UUID (ISO 20022/Swift) that identifies the SWIFT payment across all institutions in the chain. Use it to track the payment.*

**Extended webhook event details**

:::CodeblockTabs
Sample Event

```curl
{
  "id": "ff9b72ce-d770-42e8-b914-b4a800af80af",
  "eventName": "International.Payment.Sent",
  "status": "Pending",
  "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
  "createdAt": "2026-08-16T06:38:59.147-04:00",
  "resources": [
    "international/v1/payments/4d6a7e3f-c94b-467d-83fc-b4a800af19cc"  ],
  "details": [
    {
      "paymentId": "4d6a7e3f-c94b-467d-83fc-b4a800af19cc",
      "productId": "57146944-b145-4326-884d-b2f700ecf688",
      "quoteId": "9df5ff56-1b74-4549-be60-b4a800aee9a8",
      "fromCurrency": "usd",
      "toCurrency": "gbp",
      "fromAmount": "500",
      "toAmount": "374",
      "feeAmount": "0",
      "accountNumber": "158560897007",
      "status": "Completed",
      "purpose": "SRV",
      "rejectReason": null,
      "statusReason": null,
      "clientIdentifier": null,
      "priority": "True",
      "beneficiaryEntityType": "Individual",
      "beneficiaryCompanyName": null,
      "beneficiaryFirstName": "Jon",
      "beneficiaryLastName": "Smith",
      "beneficiaryAddress": "1 Street",
      "beneficiaryCity": "Winfield",
      "beneficiaryStateProvince": null,
      "beneficiaryPostalCode": "GB12345",
      "beneficiaryCountryCode": "GB",
      "referencedPaymentId": null,
      "uetr": "c5dff89f-30eb-4136-a1f2-b4a800af76d3"    }
  ]
}
```
:::

## Payment canceled

International payment canceled at partner request.

**Extended webhook event details**

:::CodeblockTabs
Sample Event

```curl
{
  "id": "9370fa9b-3e1e-4077-a1f9-b0fb013a7568",
  "eventName": "International.Payment.Canceled",
  "status": "Pending",
  "partnerId": "e30bfd38-907a-45f1-b5b7-af08014c8e79",
  "createdAt": "2024-01-18T14:04:54.533-05:00",
  "resources": [
    "international/v1/payments/aefff994-148e-4f28-9ddc-b0fb013610c7"
  ],
  "details": [
    {
      "paymentId": "aefff994-148e-4f28-9ddc-b0fb013610c7",
      "productId": "e8164629-96ad-47d9-ba6a-af08014dd6d1",
      "quoteId": "b7f05b12-3205-4328-8eb6-b0fb0135fa26",
      "fromCurrency": "usd",
      "toCurrency": "eur",
      "fromAmount": "1026",
      "toAmount": "1075",
      "feeAmount": "1510",
      "accountNumber": "2283489405",
      "status": "Canceled",
      "reason": null,
      "clientIdentifier": "string",
      "priority": "True",
      "beneficiaryEntityType": "Individual",
      "beneficiaryCompanyName": null,
      "beneficiaryFirstName": "John",
      "beneficiaryLastName": "Doe",
      "beneficiaryAddress": "1234 somewhere lane",
      "beneficiaryCity": "seattle",
      "beneficiaryStateProvince": "WA",
      "beneficiaryPostalCode": "98001",
      "beneficiaryCountryCode": "us",
      "referencedPaymentId": null
    }
  ]
}
```
:::

## Payment rejected

International payment was rejected from the receiving bank. A `rejectReason` is provided.

**Extended webhook event details**

:::CodeblockTabs
Sample Event

```curl
{
  "id": "786F34C9-B789-4FCC-AC6A-B3D100A07C13",
  "eventName": "International.Payment.Rejected",
  "status": "Pending",
  "partnerId": "e30bfd38-907a-45f1-b5b7-af08014c8e79",
  "createdAt": "2026-01-13T14:04:54.533-05:00",
  "resources": [
    "international/v1/payments/62f9cea2-2963-42f0-b187-b3c800a5595e"
  ],
  "details": [
{
    "paymentId": "62f9cea2-2963-42f0-b187-b3c800a5595e",
    "productId": "57146944-b145-4326-884d-b2f700ecf688",
    "quoteId": "d8d3c5e0-1148-4423-a0da-b3c800a52243",
    "fromCurrency": "usd",
    "toCurrency": "gbp",
    "fromAmount": "10000",
    "toAmount": "7865",
    "feeAmount": "100",
    "accountNumber": "158560897007",
    "status": "Rejected",
    "purpose": "SRV",
    "rejectReason": "OfacUnableToDetermine",
    "clientIdentifier": null,
    "priority": "True",
    "beneficiaryEntityType": "Individual",
    "beneficiaryCompanyName": null,
    "beneficiaryFirstName": "Jon",
    "beneficiaryLastName": "Smith",
    "beneficiaryAddress": "1 Street",
    "beneficiaryCity": "Winfield",
    "beneficiaryStateProvince": null,
    "beneficiaryPostalCode": "GB12345",
    "beneficiaryCountryCode": "GB"
}
  ]
}
```
:::


[title] Webhook events: Cards
[path] Cards/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific [webhooks](docId\:BN5XtgkJogBe-CtwomCbS) which have a specific [format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents `cards` webhook events that are described in detail below.

| Event Name                                                                   | Description                                                                       | Related Endpoint                                                                                                                                                                                  |
| ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Cards.Card.Ordered](docId\:paDKAtuyIo5w0YsAexxwl)                           | Card has been ordered                                                             |                                                                                                                                                                                                   |
| [Cards.Card.Created](docId\:paDKAtuyIo5w0YsAexxwl)                           | Card created                                                                      | [Create new card](docId\:EJCciNVxb0oMKjA567gUM)                                                                                                                                                   |
| [Cards.Card.Activated](docId\:paDKAtuyIo5w0YsAexxwl)                         | Card has been activated                                                           | [Activate card by ID](docId\:E_U42earZiwDZOiIXuunI)                                                                                                                                               |
| [Cards.Card.Status.Changed](docId\:paDKAtuyIo5w0YsAexxwl)                    | Card state has changed                                                            |                                                                                                                                                                                                   |
| [Cards.Card.Pin.Set](docId\:paDKAtuyIo5w0YsAexxwl)                           | Set PIN for card                                                                  | [Set PIN](docId\:yFZLDNDP2NxSd7hQ2tIKu)                                                                                                                                                           |
| [Cards.Card.Suspended](docId\:paDKAtuyIo5w0YsAexxwl)                         | Card use temporarily suspended                                                    | [Suspend card](docId\:K4JUvw-0ny1dOxTSOVNFx)                                                                                                                                                      |
| [Cards.Card.Suspended](docId\:paDKAtuyIo5w0YsAexxwl)                         | Card suspended by admin                                                           | [Admin block](docId\:eRw0IIaPwTMvyz_stwvLJ)                                                                                                                                                       |
| [Cards.Card.Unsuspended](docId\:paDKAtuyIo5w0YsAexxwl)                       | Suspension removed from card                                                      | [Unsuspend card](docId\:m4ISy77gMgYBkgwRXliaX)                                                                                                                                                    |
| [Cards.Card.Profile.Changed](docId\:paDKAtuyIo5w0YsAexxwl)                   | Card profile has been updated                                                     | [Change card profile](docId\:P_TiF6EjyBAGbP4VsIEg6)                                                                                                                                               |
| [Cards.Card Replaced](docId\:paDKAtuyIo5w0YsAexxwl)                          | Card replaced                                                                     | [Replace card by ID](docId\:AxI2pLSUCMHXDN8-vhCoH)                                                                                                                                                |
| [Cards.Card.Closed](docId\:paDKAtuyIo5w0YsAexxwl)                            | Card closed                                                                       | [Close card](docId:9tDjvhU9S37a-7Cqj3VEJ)                                                                                                                                                         |
| [Cards.Transaction.Authorized](docId\:paDKAtuyIo5w0YsAexxwl)                 | Card transaction approved                                                         |                                                                                                                                                                                                   |
| [Cards.Transaction.Cleared](docId\:paDKAtuyIo5w0YsAexxwl)                    | Card transaction successfully completed                                           |                                                                                                                                                                                                   |
| [Cards.Transaction.Declined](docId\:paDKAtuyIo5w0YsAexxwl)                   | Card transaction not approved                                                     |                                                                                                                                                                                                   |
| [Cards.Transaction.Reversed](docId\:paDKAtuyIo5w0YsAexxwl)                   | Payment credited to the originating account                                       |                                                                                                                                                                                                   |
| [Cards.Token.ProvisioningReceived](docId\:paDKAtuyIo5w0YsAexxwl)<br />       | Wallet provisioning request initiated when user adds card to Apple Pay/Google Pay | [Retrieve wallet tokens](docId\:XkoW0XYhCILYqvZGbtuRS)<br />[Retrieve specific wallet token](docId\:m4QVkVrG6emlcJBmOtz-7)<br />[Update token status](docId\:oSHmkZDitQJD88th2HSXe) <br /><br />  |
| [Cards.Token.ActivationReceived](docId\:paDKAtuyIo5w0YsAexxwl)               | Token activation requested. After provisioning approval.                          | [Retrieve wallet tokens](docId\:XkoW0XYhCILYqvZGbtuRS)<br />[Retrieve specific wallet token](docId\:m4QVkVrG6emlcJBmOtz-7)<br />[Update token status](docId\:oSHmkZDitQJD88th2HSXe)  <br /><br /> |
| [Cards. Token. CompletionReceived](docId\:paDKAtuyIo5w0YsAexxwl)             | Tokenization process completed. Token successfully activated.                     | [Retrieve wallet tokens](docId\:XkoW0XYhCILYqvZGbtuRS)<br />[Retrieve specific wallet token](docId\:m4QVkVrG6emlcJBmOtz-7)<br />[Update token status](docId\:oSHmkZDitQJD88th2HSXe)               |
| [Cards.3ds.OtpTransactionReceived](docId\:paDKAtuyIo5w0YsAexxwl)             | Sent when <br />OTP-based authentication is initiated                             | [3DS authentication details](docId\:Su5NVsUfruWN28v1O7gM8) <br />[Simulate authentication](docId\:VDmgALvyG_2Gld_bUaJXf)                                                                          |
| [Cards.3ds.OutOfBandTransactionReceived](docId\:paDKAtuyIo5w0YsAexxwl)<br /> | Sent when out-of-band authentication is initiated (requires validation)           | [3DS authentication details](docId\:Su5NVsUfruWN28v1O7gM8) <br />[Simulate authentication](docId\:VDmgALvyG_2Gld_bUaJXf) <br />[Validate OUTOFBANDOTHER](docId:0-MnW4CrKX4T_GPrujleW)             |

## Card Issuing

### Order a card

:::CodeblockTabs
Sample Event

```curl
{
    "id": "1a175de4-5e0a-47af-8e56-b2f200d6cf7a",
    "eventName": "Cards.Card.Ordered",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:02:06.05+00:00",
    "resources": [
        "cardmanagement/v1/cards/e29b514d-a71d-494d-86da-b2f200d6be43"
    ],
    "details": [
        {
            "cardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
            "status": "Unactivated",
            "statusReasonCode": "NotSet",
            "fraudSuspect": "False",
            "adminBlocked": "False"
        }
    ]
}
```
:::

### Create a card

:::CodeblockTabs
Sample Event

```curl
{
    "id": "b757dedd-1156-4e7e-9178-b2f200d6cf7b",
    "eventName": "Cards.Card.Created",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:02:06.067+00:00",
    "resources": [
        "cardmanagement/v1/cards/e29b514d-a71d-494d-86da-b2f200d6be43"
    ],
    "details": [
        {
            "cardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
            "status": "Unactivated",
            "statusReasonCode": "NotSet",
            "fraudSuspect": "False",
            "adminBlocked": "False"
        }
    ]
}
```
:::

### Activate a card

:::CodeblockTabs
Sample Event

```curl
{
    "id": "ab1e566b-de09-4004-ba19-b2f200d78196",
    "eventName": "Cards.Card.Activated",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:04:38.043+00:00",
    "resources": [
        "cardmanagement/v1/cards/e29b514d-a71d-494d-86da-b2f200d6be43"
    ],
    "details": [
        {
            "cardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
            "status": "Active",
            "statusReasonCode": "NotSet",
            "fraudSuspect": "False",
            "adminBlocked": "False",
            "previousStatus": "Unactivated",
            "previousStatusReasonCode": "NotSet",
            "previousFraudSuspect": "False",
            "previousAdminBlocked": "False"
        }
    ]
}
```
:::

### Card status has changed

:::CodeblockTabs
Sample Event

```curl
{
  "id": "07d815aa-696d-4643-8ab9-b2f200d78195",
  "eventName": "Cards.Card.Status.Changed",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-06-04T09:04:38.043+00:00",
  "resources": [
    "cardmanagement/v1/cards/e29b514d-a71d-494d-86da-b2f200d6be43"
  ],
  "details": [
    {
      "cardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
      "status": "Active",
      "statusReasonCode": "NotSet",
      "fraudSuspect": "False",
      "adminBlocked": "False",
      "previousStatus": "Unactivated",
      "previousStatusReasonCode": "NotSet",
      "previousFraudSuspect": "False",
      "previousAdminBlocked": "False"
    }
  ]
}
```
:::

### Set a card PIN

:::CodeblockTabs
Sample Event

```curl
{
    "id": "60207330-ac6d-408d-a71f-b2f200d80d2b",
    "eventName": "Cards.Card.Pin.Set",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:06:37.157+00:00",
    "resources": [
        "cardmanagement/v1/cards/e29b514d-a71d-494d-86da-b2f200d6be43"
    ],
    "details": [
        {
            "cardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
            "status": "Active",
            "statusReasonCode": "NotSet",
            "fraudSuspect": "False",
            "adminBlocked": "False"
        }
    ]
}
```
:::

### Card has been suspended

:::CodeblockTabs
Sample Event

```curl
{
    "id": "11c8368c-6b2f-42a5-9bb4-b2f200d89d3d",
    "eventName": "Cards.Card.Suspended",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:08:40.093+00:00",
    "resources": [
        "cardmanagement/v1/cards/e29b514d-a71d-494d-86da-b2f200d6be43"
    ],
    "details": [
        {
            "cardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
            "status": "Suspended",
            "statusReasonCode": "NotSet",
            "fraudSuspect": "False",
            "adminBlocked": "False",
            "previousStatus": "Active",
            "previousStatusReasonCode": "NotSet",
            "previousFraudSuspect": "False",
            "previousAdminBlocked": "False"
        }
    ]
}
```
:::

### Card has been unsuspended

:::CodeblockTabs
Sample Event

```curl
{
    "id": "53979cb2-a5fc-431a-b068-b2f200d92ba9",
    "eventName": "Cards.Card.Unsuspended",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:10:41.623+00:00",
    "resources": [
        "cardmanagement/v1/cards/e29b514d-a71d-494d-86da-b2f200d6be43"
    ],
    "details": [
        {
            "cardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
            "status": "Active",
            "statusReasonCode": "NotSet",
            "fraudSuspect": "False",
            "adminBlocked": "False",
            "previousStatus": "Suspended",
            "previousStatusReasonCode": "NotSet",
            "previousFraudSuspect": "False",
            "previousAdminBlocked": "False"
        }
    ]
}
```
:::

### Change card profile

:::CodeblockTabs
Sample Event

```curl
{
    "id": "9d6bc42e-aa79-4bc7-8d74-b2f200d9ff46",
    "eventName": "Cards.Card.Profile.Changed",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:13:42.203+00:00",
    "resources": [
        "cardmanagement/v1/cards/e29b514d-a71d-494d-86da-b2f200d6be43"
    ],
    "details": [
        {
            "cardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
            "status": "Active",
            "statusReasonCode": "NotSet",
            "fraudSuspect": "False",
            "adminBlocked": "False"
        }
    ]
}
```
:::

### Card replaced

:::CodeblockTabs
Sample Event

```curl
{
    "id": "5fcae666-d3f3-45c3-b67c-b2f200da6c3e",
    "eventName": "Cards.Card.Replaced",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:15:15.19+00:00",
    "resources": [
        "cardmanagement/v1/cards/7484bc54-47d4-441c-a409-b2f200da5aff"
    ],
    "details": [
        {
            "cardId": "7484bc54-47d4-441c-a409-b2f200da5aff",
            "previousCardId": "e29b514d-a71d-494d-86da-b2f200d6be43",
            "status": "Unactivated",
            "statusReasonCode": "NotSet"
        }
    ]
}
```
:::

### Card suspended by admin

:::CodeblockTabs
Sample Event

```curl
{
  "id": "7054e36b-2c8f-401b-8853-b2f200db1c1f",
  "eventName": "Cards.Card.Suspended",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-06-04T09:17:45.277+00:00",
  "resources": [
    "cardmanagement/v1/cards/7484bc54-47d4-441c-a409-b2f200da5aff"
  ],
  "details": [
    {
      "cardId": "7484bc54-47d4-441c-a409-b2f200da5aff",
      "status": "Suspended",
      "statusReasonCode": "NotSet",
      "fraudSuspect": "False",
      "adminBlocked": "True",
      "previousStatus": "Active",
      "previousStatusReasonCode": "NotSet",
      "previousFraudSuspect": "False",
      "previousAdminBlocked": "False"
    }
  ]

```
:::

### Card closed

:::CodeblockTabs
Sample Event

```curl
{
    "id": "ba915833-4fe3-4e41-84c3-b2f200db64be",
    "eventName": "Cards.Card.Closed",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-04T09:18:47.247+00:00",
    "resources": [
        "cardmanagement/v1/cards/7484bc54-47d4-441c-a409-b2f200da5aff"
    ],
    "details": [
        {
            "cardId": "7484bc54-47d4-441c-a409-b2f200da5aff",
            "status": "Closed",
            "statusReasonCode": "NotSet",
            "fraudSuspect": "False",
            "adminBlocked": "False",
            "previousStatus": "Suspended",
            "previousStatusReasonCode": "NotSet",
            "previousFraudSuspect": "False",
            "previousAdminBlocked": "True"
        }
    ]
}
```
:::

## Card Transactions

### Cards.Transaction.Authorized

:::CodeblockTabs
Sample Event

```curl
{
    "id": "af816e87-15c4-4bd3-a7cd-b2f3012e950f",
    "eventName": "Cards.Transaction.Authorized",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-05T14:21:40.103+00:00",
    "resources": [
        "cardmanagement/v1/transactions/49e8a49f-6750-49dd-aaff-b2f3012e72d9"
    ],
    "details": [
        {
            "transactionId": "49e8a49f-6750-49dd-aaff-b2f3012e72d9",
            "outboundResponseCode": "00",
            "accountNumber": "2434801953",
            "memoPostId": "fcea0e4d-ff12-415d-9b1b-b2f3012e72ef",
            "coreTransactionId": null,
            "description": "015963889974 StreamFlix               Anywhere     NYUSA BillPayment on 2434801953",
            "processingCode": "BillPayment",
            "amount": "1999",
            "processor": "i2c",
            "messageType": "0100"
        }
    ]
}
```
:::

### Cards.Transaction.Cleared

:::CodeblockTabs
Sample Event

```curl
{
    "id": "c3dd1a56-f1e4-48ed-8dcf-b2f3012f21c5",
    "eventName": "Cards.Transaction.Cleared",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-05T14:23:40.163+00:00",
    "resources": [
        "cardmanagement/v1/transactions/ae6cf986-2cbf-4754-bc5e-b2f3012f050b"
    ],
    "details": [
        {
            "transactionId": "ae6cf986-2cbf-4754-bc5e-b2f3012f050b",
            "outboundResponseCode": "00",
            "accountNumber": "2434801953",
            "memoPostId": "fcea0e4d-ff12-415d-9b1b-b2f3012e72ef",
            "coreTransactionId": "ae6cf986-2cbf-4754-bc5e-b2f3012f050b",
            "description": "015963889974 StreamFlix               Anywhere     NYUSA BillPayment on 2434801953",
            "processingCode": "BillPayment",
            "amount": "1999",
            "processor": "i2c",
            "messageType": "0200"
        }
    ]
}
```
:::

### Cards.Transaction.Declined

:::CodeblockTabs
Sample Event

```curl
{
    "id": "fdc69fac-4e37-436c-9f2e-b2f3012ffa8e",
    "eventName": "Cards.Transaction.Declined",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-05T14:26:45.153+00:00",
    "resources": [
        "cardmanagement/v1/transactions/a47edf85-3417-4fb3-a071-b2f3012fd6e7"
    ],
    "details": [
        {
            "transactionId": "a47edf85-3417-4fb3-a071-b2f3012fd6e7",
            "outboundResponseCode": "51",
            "accountNumber": "2434801953",
            "memoPostId": null,
            "coreTransactionId": null,
            "description": "976310542139 StreamFlix               Anywhere     NYUSA BillPayment on 2434801953",
            "processingCode": "BillPayment",
            "amount": "700000",
            "processor": "i2c",
            "messageType": "0100"
        }
    ]
}
```
:::

### Cards.Transaction.Reversed

:::CodeblockTabs
Sample Event

```curl
{
    "id": "d85606f7-3584-4958-9266-b2f301334d0e",
    "eventName": "Cards.Transaction.Reversed",
    "status": "Pending",
    "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
    "createdAt": "2025-06-05T14:38:50.913+00:00",
    "resources": [
        "cardmanagement/v1/transactions/94d112f2-7c94-4178-a832-b2f3013343bc"
    ],
    "details": [
        {
            "transactionId": "94d112f2-7c94-4178-a832-b2f3013343bc",
            "outboundResponseCode": "00",
            "accountNumber": "2434801953",
            "memoPostId": "8e29c5d1-627d-4c25-9181-b2f30133342c",
            "coreTransactionId": null,
            "description": "(Reversal) 873023855855 Coffee Xpress            Anywhere     NYUSA Purchase on 2434801953",
            "processingCode": "Purchase",
            "amount": "742",
            "processor": "i2c",
            "messageType": "0420"
        }
    ]
}
```
:::

### Card.Token.ProvisioningReceived

:::CodeblockTabs
Sample Event

```curl
{
  "id": "5e87a305-3813-4776-a7c3-b44f00db703e",
  "eventName": "Cards.Token.ProvisioningReceived",
  "status": "Pending",
  "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
  "createdAt": "2026-05-19T09:18:57.057-04:00",
  "resources": [
    "cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/c25cabee-2533-4a46-a52b-c74991559bd7"
  ],
  "details": [
    {
      "id": "c25cabee-2533-4a46-a52b-c74991559bd7",
      "cardId": "89a3ca77-10dc-4b88-b0a7-b4480095d104",
      "correlationId": "",
      "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
      "eventDate": "2026-05-19T09:18:20.0000000-04:00",
      "activeTokens": "0",
      "tokenState": "INACTIVE",
      "tokenType": "",
      "walletIdentifier": null
    }
  ]
}
```
:::

### Card.Token.ActivationReceived

:::CodeblockTabs
Sample Event

```curl
{
  "id": "c598ff46-13ef-4c10-830b-b44f00dff8f7",
  "eventName": "Cards.Token.ActivationReceived",
  "status": "Pending",
  "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
  "createdAt": "2026-05-19T09:35:27.543-04:00",
  "resources": [
    "cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/89a3ca77-10dc-4b88-b0a7-b4480095d104"
  ],
  "details": [
    {
      "id": "89a3ca77-10dc-4b88-b0a7-b4480095d104",
      "cardId": "89a3ca77-10dc-4b88-b0a7-b4480095d104",
      "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
      "eventDate": "2026-05-19T09:35:07.0000000-04:00",
      "activationCode": "364766",
      "activationCodeExpiration": "5/22/2026 1:35:07?PM",
      "activationMethodPreferenceType": "MASKED_EMAIL",
      "activationMethodPreferenceValue": "d****@gmail.com",
      "tokenState": "INACTIVE",
      "walletIdentifier": null
    }
  ]
}
```
:::

### Card.Token.CompletionReceived

:::CodeblockTabs
Sample Event

```curl
{
  "id": "cd1b4b30-c106-4bc1-8ee4-b44f00db703e",
  "eventName": "Cards.Token.CompletionReceived",
  "status": "Pending",
  "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
  "createdAt": "2026-05-19T09:18:57.057-04:00",
  "resources": [
    "cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/cbd6c950-1417-4c87-ba18-99fdfd72d9a6",
    "cardmanagement/v1/cards/89a3ca77-10dc-4b88-b0a7-b4480095d104/tokens/cbd6c950-1417-4c87-ba18-99fdfd72d9a6"
  ],
  "details": [
    {
      "id": "cbd6c950-1417-4c87-ba18-99fdfd72d9a6",
      "cardId": "89a3ca77-10dc-4b88-b0a7-b4480095d104",
      "correlationId": "",
      "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
      "eventDate": "2026-05-19T09:18:25.0000000-04:00",
      "activeTokens": "0",
      "tokenState": "ACTIVE",
      "tokenType": "SECURE_ELEMENT",
      "finalDecision": "TOKEN_CREATED",
      "finalDecisionIndicator": "85"
    },
    {
      "id": "cbd6c950-1417-4c87-ba18-99fdfd72d9a6",
      "cardId": "89a3ca77-10dc-4b88-b0a7-b4480095d104",
      "correlationId": "",
      "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
      "eventDate": "2026-05-19T09:18:25.0000000-04:00",
      "activeTokens": "0",
      "tokenState": "ACTIVE",
      "tokenType": "HCE",
      "finalDecision": "OTP_VERIFICATION_RESULT",
      "finalDecisionIndicator": "00"
    }
  ]
}
```
:::

### Cards.3ds.OtpTransactionReceived

:::CodeblockTabs
Sample Event

```curl
{
  "id": "54f57237-64a4-463a-a4ee-b45600a904b6",
  "eventName": "Cards.3ds.OtpTransactionReceived",
  "status": "Pending",
  "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
  "createdAt": "2026-05-26T06:15:22.637-04:00",
  "resources": [
    "cardmanagement/v1/3ds/3a63b0f1-12fb-4eff-81b5-b45600a8ee0f"
  ],
  "details": [
    {
      "id": "3a63b0f1-12fb-4eff-81b5-b45600a8ee0f",
      "authenticationId": "d8709ba6-2ba1-4130-a73e-0a1a62d4caae",
      "transactionId": "2c76820c-b8a9-4b34-a866-5d87a3edfcb6",
      "stepUpRequestId": "dda5d674-20c4-4d9e-9361-9bf9b53f2cef",
      "stepUpCounter": "1",
      "stepUpType": "OTPSMS",
      "verificationToken": "847296",
      "otpReferenceCode": "REF-847296",
      "merchantId": "MERCH_12345678",
      "merchantName": "ACME",
      "merchantUrl": "https://www.examplestore.com",
      "merchantCategoryCode": "5411",
      "merchantCountryCode": "GB",
      "cardId": "89a3ca77-10dc-4b88-b0a7-b4480095d104",
      "transactionAmount": "10"
    }
  ]
}
```
:::

### Cards.3ds.OutOfBandTransactionReceived

:::CodeblockTabs
Sample Event

```curl
{
  "id": "895e7062-bfe5-4d85-b311-b45600a99166",
  "eventName": "Cards.3ds.OutOfBandTransactionReceived",
  "status": "Pending",
  "partnerId": "19222b81-0e1e-452d-a842-b2f1011c16f3",
  "createdAt": "2026-05-26T06:17:22.69-04:00",
  "resources": [
    "cardmanagement/v1/3ds/ca9cff74-796b-4a22-9e30-b45600a9783b"
  ],
  "details": [
    {
      "id": "ca9cff74-796b-4a22-9e30-b45600a9783b",
      "authenticationId": "c03c5399-d0ff-4622-aac9-cf102df2edb6",
      "transactionId": "9a8d9109-fd4d-4c29-afdf-02d97367e196",
      "stepUpRequestId": "7664f11a-4a0b-44cb-8551-d277e51a6068",
      "stepUpCounter": "0",
      "stepUpType": "OUTOFBANDOTHER",
      "verificationToken": null,
      "otpReferenceCode": null,
      "merchantId": "MERCH_12345678",
      "merchantName": "ACME",
      "merchantUrl": "https://www.examplestore.com",
      "merchantCategoryCode": "5411",
      "merchantCountryCode": "GB",
      "cardId": "89a3ca77-10dc-4b88-b0a7-b4480095d104",
      "transactionAmount": "10"
    }
  ]
}
```
:::


[title] Cancel payment
[path] Payments/International payments/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:&#x20;

- [International.Payment.Canceled](docId\:o9fUc2dKPczcl1h4yIChr)&#x20;

## API reference

Cancels a cross border money transfer **for consumer remittances only**.  This must be sent during a 30 minute window which starts once the Send Payment endpoint has been sent.&#x20;

The input `id` is generated by the [Send payment](docId\:eVBwhQlRGZlamLd2hRwVd) API. It is the first `id` (Payment ID) in the response.

Quote IDs submitted in request are typically only valid for 60 seconds.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /international/v1/payments/{id}/cancel",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/International/v1/payments/{id}/cancel",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "pwXZxFZ8U6EuCPaY8tIbN",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n \nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/international/v1/payments/1d2c2103-149f-44dc-91eb-b4390086f885/cancel',\n  'headers': {\n    'Authorization': 'Bearer \n  },\n  'maxRedirects': 20\n};\n \nvar req = https.request(options, function (res) {\n  var chunks = [];\n \n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n \n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n \n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n \nreq.end();"
      },
      {
        "id": "IK3yO5GIfbd9LPnkGbhGF",
        "language": "python",
        "code": "import requests\n \nurl = \"https://sandbox.crbcos.com/international/v1/payments/1d2c2103-149f-44dc-91eb-b4390086f885/cancel%22\n \npayload = {}\nheaders = {\n  'Authorization': 'Bearer '\n}\n \nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n \nprint(response.text)"
      },
      {
        "id": "e47b637yTj1XR6nf-GD6V",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n \nurl = URI(\"https://sandbox.crbcos.com/international/v1/payments/1d2c2103-149f-44dc-91eb-b4390086f885/cancel%22)\n \nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n \nrequest = Net::HTTP::Post.new(url)\nrequest[\"Authorization\"] = \"Bearer \"\n \nresponse = https.request(request)\nputs response.read_body"
      },
      {
        "id": "f5wLotdRhekNiFkhUvUzU",
        "language": "go",
        "code": "package main\n \nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n \nfunc main() {\n \n  url := \"https://sandbox.crbcos.com/international/v1/payments/1d2c2103-149f-44dc-91eb-b4390086f885/cancel%22\n  method := \"POST\"\n \n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n \n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer \")\n \n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n \n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      },
      {
        "id": "VqLanivbWqqm4sp1B0XSY",
        "language": "curl",
        "code": "url --location --request POST 'https://sandbox.crbcos.com/international/v1/payments/1d2c2103-149f-44dc-91eb-b4390086f885/cancel"
      }
    ],
    "selectedLanguageId": "VqLanivbWqqm4sp1B0XSY"
  },
  "results": {
    "languages": [
      {
        "id": "_qq8_titI2NzDm7PhXHyr",
        "language": "200",
        "code": "{\n    \"id\": \"1d2c2103-149f-44dc-91eb-b4390086f885\",\n    \"partnerId\": \"19222b81-0e1e-452d-a842-b2f1011c16f3\",\n    \"productId\": \"57146944-b145-4326-884d-b2f700ecf688\",\n    \"quoteId\": \"e4b4bd78-a9d2-4a2c-b6f2-b4390086dd1e\",\n    \"fromCurrency\": \"usd\",\n    \"toCurrency\": \"gbp\",\n    \"fromAmount\": 500,\n    \"toAmount\": 374,\n    \"accountNumber\": \"383773221643\",\n    \"estimatedDeliveryDate\": \"4/27/2026 12:00:00 AM\",\n    \"originator\": {\n        \"entityName\": \"Cross River Bank\",\n        \"firstName\": \"\",\n        \"lastName\": \"\",\n        \"fullName\": \"Cross River Bank\",\n        \"address\": \"885 Teaneck Road\",\n        \"city\": \"Teaneck\",\n        \"state\": \"NJ\",\n        \"postalCode\": \"07666\",\n        \"countryCode\": \"US\",\n        \"entityType\": \"Company\",\n        \"birthDate\": \"2008-06-23\",\n        \"identificationType\": \"IncorporationNumber\",\n        \"identificationValue\": \"0400170263\"\n    },\n    \"beneficiary\": {\n        \"companyName\": \"ACME\",\n        \"fullName\": \"ACME\",\n        \"birthDate\": \"2001-06-18T00:00:00-04:00\",\n        \"address\": \"1 Street\",\n        \"city\": \"Winfield\",\n        \"postalCode\": \"GB12345\",\n        \"countryCode\": \"GB\",\n        \"entityType\": \"Company\"\n    },\n    \"beneficiaryFi\": {\n        \"bankName\": \"Bank UK\",\n        \"bankCountryCode\": \"GB\",\n        \"bankAddress\": \"1 Avenue\",\n        \"bankAccountType\": \"Checking\",\n        \"routingCodeType1\": \"SortCode\",\n        \"routingCodeValue1\": \"123456789\",\n        \"routingCodeType2\": \"ABA\",\n        \"routingCodeValue2\": \"123456789\",\n        \"bicSwift\": \"TGCLGB99\",\n        \"iban\": \"GB33BUKB20201555555555\"\n    },\n    \"status\": \"Canceled\",\n    \"purpose\": \"SRV\",\n    \"paymentType\": \"Transfer\",\n    \"direction\": \"Outbound\",\n    \"priority\": true,\n    \"feeAmount\": 0,\n    \"feeCurrency\": \"usd\",\n    \"source\": \"Api\",\n    \"postingStatus\": \"Posted\",\n    \"postingCode\": \"OK\",\n    \"coreTransactionId\": \"ed84039f-ff16-4300-b90c-b4390086f940\",\n    \"vendorSpreadFeeTransactionId\": \"534a894b-5ee7-47c0-a532-b43900876f02\",\n    \"spreadFeeTransactionId\": \"07af70e8-5f34-493e-be40-b43900876f02\",\n    \"canceledAt\": \"2026-04-27T04:16:48.6803203-04:00\",\n    \"processedAt\": \"2026-04-27T04:11:25.44-04:00\",\n    \"createdAt\": \"2026-04-27T04:11:24.8166667-04:00\",\n    \"lastModifiedAt\": \"2026-04-27T04:16:48.6991424-04:00\",\n    \"limitsEligibleOn\": \"2026-04-27T04:11:24.817-04:00\"\n}",
        "customLabel": ""
      },
      {
        "id": "qjrEFaPuKavXc3UC1LWA5",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2404,\n            \"message\": \"Quote has expired\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "_qq8_titI2NzDm7PhXHyr"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "Payment ID. This ID first appears as the value for this attribute in the response to the originate a payment call. This ID is in GUID format.",
        "": "Payment ID. This ID first appears as the value for this attribute in the response to the originate a payment call. This ID is in GUID format."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID. This ID first appears as the value for this attribute in the response to the originate a payment call. This ID is in GUID format."
    },
    {
      "name": "referencePaymentId",
      "kind": "optional",
      "type": "string",
      "description": "A unique ID of a transaction that is associated with the payment. For example, a return.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "quoteId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the quote used to execute the money transfer, found in the id field of the response to the create a payment quote call.\n\nThis ID is in GUID format.",
      "children": []
    },
    {
      "name": "fromCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency the payment is sent in",
      "children": []
    },
    {
      "name": "toCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency the payment is received in",
      "children": []
    },
    {
      "name": "fromAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount in USD to be transferred",
      "children": []
    },
    {
      "name": "toAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount in the specified currency to be received",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of the sending Cross River account",
      "children": []
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "Object",
      "description": "The individual or company sending the payment",
      "children": [
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name of the originator of the funds. Required if entityType is individual"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name of the originator of the funds. Required if entityType is individual"
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originator company. Required if entityType is company."
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "string",
          "description": "Originator street address"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "If entityType is company, date of registration. If entityType is individual, date of birth. The date is this format: \"yyyy-mm-dd\""
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "string",
          "description": "Originator street address"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City where the originator is based"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "Originator state "
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Originator postal or ZIP code"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter ISO country code. For a company entity, the country where it's registered. For an individual, the country where they're based."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Legal status of the entity, whether beneficiary or originator:\n\n- Individual\n- Company\n\nThe default value is individual."
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the company. "
        },
        {
          "name": "identificationType",
          "kind": "optional",
          "type": "string",
          "description": "- None \n- DriversLicense\n- SSN \n- GreenCard \n- Passport \n- Visa \n- MatriculaConsular \n- RegistroFederalDeContribuyentes\n- ClaveUnicaDeRegistroDePoblacion \n- CredentialDeElector\n- SocialInsuranceNumber \n- CitizenshipPapers\n- DriversLicenseCanadian \n- ExistingCreditCardDetails\n- NationalId\n- IncorporationNumber\n- Other"
        },
        {
          "name": "identificationValue",
          "kind": "optional",
          "type": "string",
          "description": ""
        }
      ]
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "Object",
      "description": "The individual or company who gets the payment",
      "children": [
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name of the beneficiary of the funds. Required if entityType is individual"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name of the beneficiary of the funds. Required if entityType is individual"
        },
        {
          "name": "companyName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the beneficiary company. Required if entityType is company."
        },
        {
          "name": "email",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary's email address, whether a company or an individual"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "If entityType is company, date of registration. If entityType is individual, date of birth. The date and time are in this format: \"yyyy-mm-dd\""
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "string",
          "description": "Complete beneficiary street address"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary city"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary state or province"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary postal or ZIP code."
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter ISO country code. For a company entity, the country where it's registered. For an individual, the country where they're based."
        },
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Legal status of the entity, whether beneficiary or originator:\n\n- Individual\n- Company\n\nThe default value is individual."
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": ""
        }
      ]
    },
    {
      "name": "beneficiaryFi",
      "kind": "optional",
      "type": "Object",
      "description": "Details of the beneficiary's financial institution (where the payment goes)",
      "children": [
        {
          "name": "bankName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the beneficiary's bank"
        },
        {
          "name": "bankCountryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter code for the country where the beneficiary's bank account is held"
        },
        {
          "name": "bankAddress",
          "kind": "optional",
          "type": "string",
          "description": "Street address of the Beneficiary's bank"
        },
        {
          "name": "bankAccountType",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary bank account type:\n\n- Checking\n- Savings"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number receiving the payment. Maximum n characters."
        },
        {
          "name": "routingCodeType1",
          "kind": "optional",
          "type": "string",
          "description": "Local payment routing system type. If supplied, you must also give the actual code for routingCodeValue1.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
        },
        {
          "name": "routingCodeValue1",
          "kind": "optional",
          "type": "string",
          "description": "Routing code of the routing code type.\n\nRequired if you supply a value for routingCodeType1."
        },
        {
          "name": "routingCodeType2",
          "kind": "optional",
          "type": "string",
          "description": "Sometimes certain corridors will require 2 routing codes. In that case, use this attribute for the second code type. If supplied, you must also give the actual code for routingCodeValue2.\n\n- SortCode (UK, Ireland)\n- ABA (United States)\n- BSBCode (Australia)\n- InstitutionNo\n- BankCode\n- BranchCode\n- Clabe (Mexico)\n- Cnaps (China)\n- Ifsc"
        },
        {
          "name": "routingCodeValue2",
          "kind": "optional",
          "type": "string",
          "description": "Routing code of the routing code type.\nRequired if you supplied a value for routingCodeType2."
        },
        {
          "name": "bicSwift",
          "kind": "optional",
          "type": "string",
          "description": "BIC/SWIFT code of the beneficiary FI"
        },
        {
          "name": "iban",
          "kind": "optional",
          "type": "string",
          "description": "IBAN number of the beneficiary FI"
        }
      ]
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the payment object\n\n- Created\n- Pending\n- Processing\n- Hold\n- Canceled\n- Completed\n- Failed\n- Rejected\n- Blocked",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "A 1-50 character code that indicates the reason for a transaction. ",
      "children": []
    },
    {
      "name": "rejectReason",
      "kind": "optional",
      "type": "string",
      "description": "Reason for rejecting the payment",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "- OfacMatch\n- Other",
      "children": []
    },
    {
      "name": "statusReason",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "paymentDate",
      "kind": "optional",
      "type": "string",
      "description": "The date and time of anticipated payment delivery, in the format: yyyy-mm-ddThh:mm:ss[.mmm].\n\nPayment delivery times cannot be guaranteed.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Tell you whether this is an original transfer or return payment:\n\n- Transfer\n- Return",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "This can be Inbound or Outbound.",
      "children": []
    },
    {
      "name": "priority",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.",
      "children": []
    },
    {
      "name": "feeAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Transaction fee amount",
      "children": []
    },
    {
      "name": "feeCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency used for the fee",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "The source of the request to send a cross border payment:\n\n- Api\n- PartnerPortal\n- OpsPortal",
      "children": []
    },
    {
      "name": "postingStatus",
      "kind": "optional",
      "type": "string",
      "description": "- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- NotApplicable",
      "children": []
    },
    {
      "name": "PostingCode",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the core transaction. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "feeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the transaction free debited from the partners account. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "vendorSpreadFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the markup that can be levied on the spread fee by the vendor to their client.",
      "children": []
    },
    {
      "name": "spreadFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the spread free debited from the partners account. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "partnerSpreadFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the markup that can be levied on the spread fee by the partner to their client.",
      "children": []
    },
    {
      "name": "vendorTransactionFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the markup that can be levied on the transaction fee by the vendor to their client.",
      "children": []
    },
    {
      "name": "partnerTransactionFeeTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River identifier for the markup that can be levied on the transaction fee by the partner to their client.",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "limitsEligibleOn",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "purposeCode",
      "kind": "optional",
      "type": "string",
      "description": "Required for payments to India (INR), Malaysia (MYR), and United Arab Emirates (AED). Check our Payment purpose codes page for additional details.",
      "children": []
    },
    {
      "name": "invoiceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Necessary when making trade-related INR payments, check our Payment purpose codes page for additional details.  1-30 characters.",
      "children": []
    },
    {
      "name": "invoiceDate",
      "kind": "optional",
      "type": "string",
      "description": "Necessary when making trade-related INR payments, check our Payment purpose codes page for additional details. ISO 8601 format (YYYY-MM-DD).",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-internationalv1paymentsidcancel",
  "legacyHash": "3KjPXkYOPrvaiV1b90w1s"
}
```
:::

:::hint{type="info"}
For additional information, refer to our International payments [tutorial](docId:0mIEXzUcyTurPvZq13y1Z).
:::


[title] Reversals
[path] Payments/ACH/APIs/

## API reference

Requests to retrieve funds from a payment sent in error, such as a duplicate payment or one sent to the wrong account.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /ach/v1/payments/{id}/reversals",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/ach/v1/payments/{id}/reversals",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "HRBR9MsKSwwyH-NYrjwNM",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/ach/v1/payments/9a3ba6f6-206c-42bf-b266-b339008a2c3e/reversals' \\\n--data '{\n  \"reason\": \"IncorrectAmount\"\n}'",
        "customLabel": ""
      },
      {
        "id": "Sv7nF_dbswuBC1naIgDjC",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/payments/9a3ba6f6-206c-42bf-b266-b339008a2c3e/reversals',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"reason\\\": \\\"IncorrectAmount\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "0fhf31t89iCNXQvtYF81M",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"reason\\\": \\\"IncorrectAmount\\\"\\r\\n}\"\nheaders = {}\nconn.request(\"POST\", \"/ach/v1/payments/9a3ba6f6-206c-42bf-b266-b339008a2c3e/reversals\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "OvGlJj2pYMD2AuGECCfll",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/payments/9a3ba6f6-206c-42bf-b266-b339008a2c3e/reversals\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"reason\\\": \\\"IncorrectAmount\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "azSbUgraxEn8b_olYeCcU",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/payments/9a3ba6f6-206c-42bf-b266-b339008a2c3e/reversals\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"reason\": \"IncorrectAmount\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "azSbUgraxEn8b_olYeCcU"
  },
  "results": {
    "languages": [
      {
        "id": "OaQ6YHIkwFzOhLKg7zsw2",
        "language": "200",
        "code": "{\n    \"id\": \"04228e9c-361e-4005-b68f-b339008ae4dc\",\n    \"accountNumber\": \"2819503463\",\n    \"referenceId\": \"A2261852368Q\",\n    \"paymentType\": \"Origination\",\n    \"direction\": \"Outbound\",\n    \"status\": \"Created\",\n    \"source\": \"Api\",\n    \"postingType\": \"Individual\",\n    \"coreTransactionId\": \"82ec0cc2-7855-46fe-9ff0-b339008ae4dc\",\n    \"memoPostId\": \"8febfea2-3c40-4ba9-b055-b339008ae4dc\",\n    \"postingCode\": \"OK\",\n    \"posting\": \"Pending\",\n    \"originator\": {\n        \"routingNumber\": \"021214891\",\n        \"accountNumber\": \"2819503463\",\n        \"accountType\": \"Checking\",\n        \"name\": \"Cross River Bank\",\n        \"identification\": \"021214891\"\n    },\n    \"receiver\": {\n        \"routingNumber\": \"021000021\",\n        \"accountNumber\": \"2151546989\",\n        \"accountType\": \"Checking\",\n        \"name\": \"Peter Griffin\"\n    },\n    \"secCode\": \"PPD\",\n    \"description\": \"REVERSAL\",\n    \"transactionType\": \"Pull\",\n    \"amount\": 15000,\n    \"serviceType\": \"Standard\",\n    \"effectiveDate\": \"250815\",\n    \"traceNumber\": \"021214899390032\",\n    \"wasReturned\": false,\n    \"wasCorrected\": false,\n    \"holdDays\": 0,\n    \"previous\": {\n        \"paymentId\": \"9a3ba6f6-206c-42bf-b266-b339008a2c3e\",\n        \"traceNumber\": \"021214890959332\"\n    },\n    \"original\": {\n        \"paymentId\": \"9a3ba6f6-206c-42bf-b266-b339008a2c3e\",\n        \"traceNumber\": \"021214890959332\"\n    },\n    \"createdAt\": \"2025-08-14T04:25:41.85124-04:00\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"lastModifiedAt\": \"2025-08-14T04:25:41.85124-04:00\",\n    \"purpose\": \"REVERSAL - Incorrect Amount\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "OaQ6YHIkwFzOhLKg7zsw2"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "Payment ID. This ID first appears as the value for the id attribute in the response to the originate a payment call. This ID is in the GUID format.",
        "": "required"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "reason",
        "kind": "required",
        "type": "string",
        "description": "Must be one of the following to be able to request a reversal:\n- Duplicate\n- Incorrect Receiver\n- Incorrect Amount\n- Incorrect Date\n- PPD Entry",
        "": "Must be one of the following to be able to request a reversal:\n- Duplicate\n- Incorrect Receiver\n- Incorrect Amount\n- Incorrect Date\n- PPD Entry"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID. This ID first appears as the value for this attribute in the response to the originate a payment call. This ID is in the GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River account number for payment originator.  Depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment. The reference ID always begins with the first letter of the rail. For ACH the reference ID starts with 'A'.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "What kind of payment was sent, for example, origination or return. See the ACH Request and response codes page for a list of payment types.",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "The payment direction, which includes:\n- Inbound: payment received by a Cross River account from another bank\n- Outbound: a payment sent from a Cross River account to another bank",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Current lifecycle status of the payment, for example, Created, Processing, or Completed. See the ACH Request and response codes page for a list of payment statuses.",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Payment channel:\n- Api\n- PartnerPortal\n- OpsPortal\n- File",
      "children": []
    },
    {
      "name": "postingType",
      "kind": "optional",
      "type": "string",
      "description": "How the payment is grouped for posting:\n- Individual\n- Aggregate (batch)",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier (GUID) used to group related client payments in batch submissions, if you originate the client batch",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "Integer",
      "description": "Sequence number of the payment in the batch, if you originate the client batch",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Fedwire or ACH batch ID used for settlement tracking",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "Integer",
      "description": "Sequence of the payment inside of the batch sent to or received from the Fed",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "ID representing the memo post associated with this transaction",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code representing the posting category used internally",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "The related Cross River system transaction status. When you originate a payment, the system initially returns OK. If the payment fails or is declined, the value changes to a Cross River system-generated code:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Processing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- OfacUnableToDetermine\n- OfacConfirmed\n- OfacUnconfirmed\n- Other",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "Reason for any OFAC or compliance-based block:\n- Ofac\n- Other",
      "children": []
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "Object",
      "description": "Originator bank details",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies the originator financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number for payment originator"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Originator deposit account type:\n- Checking\n- Savings\n- GeneralLedger\n- Loan"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originator of the transaction. Nacha refers to this as Company Name."
        },
        {
          "name": "identification",
          "kind": "optional",
          "type": "string",
          "description": "Originator Identification. Nacha refers to this as the Company Identification."
        },
        {
          "name": "data",
          "kind": "optional",
          "type": "string",
          "description": "Additional metadata provided by the originator. Nacha refers to this as Company Discretionary Data."
        }
      ]
    },
    {
      "name": "receiver",
      "kind": "optional",
      "type": "Object",
      "description": "Receiver bank details",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies the receiver financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number for the receiver"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Receiver deposit account type:\n- Checking\n- Savings\n- GeneralLedger\n- Loan"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Receiver name as it appears on the receiver account. Nacha refers to this as the Individual Name."
        },
        {
          "name": "identification",
          "kind": "optional",
          "type": "string",
          "description": "Receiver Identification. Nacha refers to this as the Individual Identification Number. 15 character maximum."
        },
        {
          "name": "data",
          "kind": "optional",
          "type": "string",
          "description": "Additional metadata provided by the receiver. Nacha refers to this as Discretionary Data."
        }
      ]
    },
    {
      "name": "secCode",
      "kind": "optional",
      "type": "string",
      "description": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page.",
      "children": []
    },
    {
      "name": "description",
      "kind": "optional",
      "type": "string",
      "description": "Description of the payment provided at origination",
      "children": []
    },
    {
      "name": "transactionType",
      "kind": "optional",
      "type": "string",
      "description": "Sending or requesting funds:\n- Push (originator is sending funds—debit)\n- Pull (originator is receiving funds—credit)",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of payment in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "serviceType",
      "kind": "optional",
      "type": "string",
      "description": "When the payment completes:\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)",
      "children": []
    },
    {
      "name": "extendedDetails",
      "kind": "optional",
      "type": "Object",
      "description": "ACH-specific fields. Learn more on the Nacha site.",
      "children": [
        {
          "name": "authCode",
          "kind": "optional",
          "type": "string",
          "description": "Authorization code related to card-based transactions"
        },
        {
          "name": "cardExpDate",
          "kind": "optional",
          "type": "string",
          "description": "Expiration date of the card used"
        },
        {
          "name": "cardTransactionType",
          "kind": "optional",
          "type": "string",
          "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
        },
        {
          "name": "checkSerialNumber",
          "kind": "optional",
          "type": "string",
          "description": "Serial number for check-based transactions"
        },
        {
          "name": "docReferenceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Document reference number associated with the transaction"
        },
        {
          "name": "itemType",
          "kind": "optional",
          "type": "string",
          "description": "Type of financial item, for example, Check or  Card"
        },
        {
          "name": "networkIdentification",
          "kind": "optional",
          "type": "string",
          "description": "Network through which the transaction was processed"
        },
        {
          "name": "paymentType",
          "kind": "optional",
          "type": "string",
          "description": "Payment types are used in proceessing and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
        },
        {
          "name": "processControl",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River processing control code"
        },
        {
          "name": "reference1",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "reference2",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "researchNumber",
          "kind": "optional",
          "type": "string",
          "description": "Research ID for dispute or trace purposes"
        },
        {
          "name": "terminalIdentification",
          "kind": "optional",
          "type": "string",
          "description": "ID of the terminal where the transaction occurred"
        },
        {
          "name": "terminalLocation",
          "kind": "optional",
          "type": "string",
          "description": "Location descriptor of the terminal"
        },
        {
          "name": "terminalCity",
          "kind": "optional",
          "type": "string",
          "description": "City where the terminal is located"
        },
        {
          "name": "terminalState",
          "kind": "optional",
          "type": "string",
          "description": "State where the terminal is located"
        },
        {
          "name": "transactionDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the transaction happened"
        },
        {
          "name": "transactionDesc",
          "kind": "optional",
          "type": "string",
          "description": "Additional description of the transaction"
        },
        {
          "name": "transactionSerial",
          "kind": "optional",
          "type": "string",
          "description": "Serial number of the transaction"
        },
        {
          "name": "transactionTime",
          "kind": "optional",
          "type": "string",
          "description": "Transaction timestamp"
        },
        {
          "name": "cardAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Card account number used in the transaction"
        }
      ]
    },
    {
      "name": "iatDetails",
      "kind": "optional",
      "type": "Object",
      "description": "International ACH details.\nThis object is only returned for the IAT secCode.",
      "children": [
        {
          "name": "originator",
          "kind": "optional",
          "type": "Object",
          "description": "Payment sender details",
          "children": [
            {
              "name": "address",
              "kind": "optional",
              "type": "string",
              "description": "Originator street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Originator city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Originator state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receiver",
          "kind": "optional",
          "type": "Object",
          "description": "Payment receiver details",
          "children": [
            {
              "name": "address",
              "kind": "optional",
              "type": "string",
              "description": "Receiver street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Receiver city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Receiver state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "originatingBank",
          "kind": "optional",
          "type": "Object",
          "description": "Details of financial institution originating the IAT",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of originating financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank DFI Identification number, which is the first 8 digits of its routing number."
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Originating DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receivingBank",
          "kind": "optional",
          "type": "Object",
          "description": "Details of financial institution receiving the IAT",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of receiving financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank DFI Identification number, which is the first 8 digits of its routing number"
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Receiving DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "remittanceInfo1",
          "kind": "optional",
          "type": "string",
          "description": "Additional IAT information.\nA second field is available as remittanceInfo2."
        },
        {
          "name": "correspondentBank1",
          "kind": "optional",
          "type": "Object",
          "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5, each with the same child attributes.",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": " Name of financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification number, which is the first 8 digits of its routing number."
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "transactionTypeCode",
          "kind": "optional",
          "type": "string",
          "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
        },
        {
          "name": "originatingCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the originating currency"
        },
        {
          "name": "destinationCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the receiving currency"
        }
      ]
    },
    {
      "name": "addenda",
      "kind": "optional",
      "type": "string",
      "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as invoice numbers.",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Effective date of the ACH payment (YYYY-MM-DD)",
      "children": []
    },
    {
      "name": "reasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Valid ACH return code explaining the return reason in accordance with NACHA guidelines (for example, R01, R02). See the ACH Request and Response Codes page for the return codes. ",
      "children": []
    },
    {
      "name": "reasonData",
      "kind": "optional",
      "type": "string",
      "description": "More information about the reason for the return.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Unique ACH trace number for the transaction",
      "children": []
    },
    {
      "name": "settlementDate",
      "kind": "optional",
      "type": "string",
      "description": "Date payment settled in the receiver's account",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if payment was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "wasCorrected",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if a payment is sent with bad info but the receiving FI fixes it and sends back the information (NOC). Otherwise false.",
      "children": []
    },
    {
      "name": "holdDays",
      "kind": "optional",
      "type": "Integer",
      "description": "For ACH pulls, allows defining a number of days to delay credit of funds to an account to mitigate fraud and NSF scenarios",
      "children": []
    },
    {
      "name": "previous",
      "kind": "optional",
      "type": "Object",
      "description": "Previous payment details",
      "children": [
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "Payment ID for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Trace number for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "settlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Settlement date for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "reasonData",
          "kind": "optional",
          "type": "string",
          "description": "Supporting data for the reason code for an original payment if the payment is returned or the system sends a NOC"
        }
      ]
    },
    {
      "name": "original",
      "kind": "optional",
      "type": "Object",
      "description": "Original payment details when a payment was returned or a NOC was sent.\nResending a payment after failure as a completely new request. The new payment cannot be linked to the failed payment.",
      "children": [
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "Payment ID for an original payment before any returns or corrections"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code for an original payment"
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Trace number for an original payment"
        },
        {
          "name": "settlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Settlement date for an original payment"
        },
        {
          "name": "reasonData",
          "kind": "optional",
          "type": "string",
          "description": "Supporting data for the reason code for an original payment"
        }
      ]
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was posted to the Cross River account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, the Cross River account involved in the payment.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the ACH transfer. For internal use only. The data is not included with the outgoing ACH batch file.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "externalPrefix",
      "kind": "optional",
      "type": "string",
      "description": "Prefix from external system integration",
      "children": []
    },
    {
      "name": "externalAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "External-facing account reference number",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-achv1paymentsidreversals",
  "legacyHash": "MHMqQcZ5W0fiT5WcbEgiR"
}
```
:::

See [Request and response codes: ACH](docId\:oDtRP7ARfnpQuFEGy4Sfh) to learn more about reversal reasons.


[title] Wires postal address update (November 2027)
[path] Payments/Wires/

## Overview

The Federal Reserve is updating the FedWire Funds Service to require structured postal addresses, effective **November 2027**. This change aligns FedWire with the **ISO 20022** international messaging standard.

Instead of three unstructured address lines, you will provide address components in clearly defined fields. This ensures address information is transmitted more clearly and accurately, reducing errors and manual intervention across the payment chain.

:::hint{type="warning"}
**Action Required:** All Cross River partners must update their integrations as soon as possible to allow sufficient time for testing before the Federal Reserve's go-live date. The functionality is already live in production in Crossriver with full backward compatibility.
:::

## What's changing

### Federal Reserve timeline

| Milestone                | Date              |
| ------------------------ | ----------------- |
| Testing opens            | May 2026          |
| Crossriver go-live date  | June 2026         |
| **FedWire go-live date** | **November 2027** |

### Cross River timeline

| Milestone                        | Date          | Status                                                  |
| -------------------------------- | ------------- | ------------------------------------------------------- |
| Sandbox environment available    | Now           | ✅ Available for Testing                                 |
| **Partner integration deadline** | **TDB**       | ⚠️ Required                                             |
| Federal Reserve go-live          | November 2027 | Waiting for confirmation from the Fed on the exact date |

## How Cross River is implementing this change

### The new postalAddress object

We're adding a new `postalAddress` object to replace the current `address1`, `address2`, and `address3` fields.

**Instead of this:**

```json
{
  "address1": "123 Main Street, Suite 400",
  "address2": "New York, NY 10001",
  "address3": ""
}
```

**Use this:**

```json
{
  "postalAddress": {
    "adrLine1": "123 Main Street",
    "adrLine2": "Suite 400",
    "city": "New York",
    "state": "NY",
    "postalCode": "10001",
    "country": "US"
  }
}
```

### Required fields

| Field      | Description                             | Example             |
| ---------- | --------------------------------------- | ------------------- |
| `adrLine1` | Street address (up to 35 characters)    | `"123 Main Street"` |
| `city`     | City or town name (up to 35 characters) | `"New York"`        |
| `country`  | Two-letter country code (ISO 3166-1)    | `"US"`              |

### Optional fields

| Field        | Description                                      | Example       |
| ------------ | ------------------------------------------------ | ------------- |
| `adrLine2`   | Additional address info (up to 35 characters)    | `"Suite 400"` |
| `state`      | State, province, or region (up to 35 characters) | `"NY"`        |
| `postalCode` | Postal or ZIP code (up to 16 characters)         | `"10001"`     |

:::hint{type="success"}
**Future Enhancement:** Character limits for `adrLine1` and `adrLine2` expand from 35 to 70 characters in a future release to match the Federal Reserve's full capacity.
:::

## Where this applies

The new `postalAddress` object is used anywhere you currently provide address information in wire transfer requests:

### [Wire transfer](docId\:mC0d1W1u80umazO85mEIz)

You must provide addresses for:

- **Originator** - The party sending the wire
- **Originator financial institution** - The bank sending the wire (if different from originator)
- **Beneficiary** - The party receiving the wire
- **Beneficiary financial institution** - The receiving bank
- **Intermediary financial institution** - Any intermediary banks (optional)

### [Drawdown request](docId\:DOrha8h1ksr9-M_CT3ac-)

Addresses are required for:

- **Originator** (Creditor) - The party requesting funds
- **Originator financial institution** - The requesting bank
- **Drawdown debit account holder** (Debtor) - The party from whom funds are drawn
- **Beneficiary financial institution** - The debit account holder's bank

### [Drawdown response](docId\:coz5emuCrFZLGzd59RdnA)

Addresses are required for:

- **Originator** - The party responding to the drawdown request

### [Webhook events: Wires](docId\:OA3cg-apKn_510VPq2yYe)

All webhooks containing wire transfer information will also include the new postal address information for all parties in the transaction (as there are no embedded objects in webhooks, the new fields are listed&#x20;

## Migration guide

### Step 1: Review (now)

- Review this documentation and understand the new `postalAddress` structure
- Identify all systems that send wire transfer requests or process wire webhooks
- Note that three fields are now required: street address, city, and country

### Step 2: Update your code (as soon as possible)

- Replace `address1`, `address2`, `address3` with the `postalAddress` object
- Ensure you provide all three required fields: `adrLine1`, `city`, `country`
- Update webhook handlers to read from `postalAddress` instead of `address1/2/3`
- Add validation to ensure required fields are present before sending requests

### Step 3: Test in sandbox (now)

- Use Cross River's sandbox environment to test your changes
- Test all wire transfer types: standard transfers, drawdown requests, drawdown responses
- Verify webhooks are processed correctly with the new format
- Test with both domestic (US) and international addresses

### Step 4: Deploy to production (TBD)

- Deploy your updated integration to production
- Monitor for any validation errors
- Confirm webhooks are processing correctly

### Step 5: Monitor after go-live (November 2027)

- Monitor for any FedWire rejections related to address formatting
- Ensure payments continue to process successfully

## Transition Period

**During transition (Now through November 2027):**

- Cross River accepts either old and new format but not both

**After November 2027:**

- The Federal Reserve **will reject wire transfers using the old unstructured format**
- Payments using the old format will fail after November 2027
- All partners must use the new `postalAddress` format

## Common questions

**Q: Can I continue using address1, address2, address3 during the transition?**

A: Yes, Cross River supports either formats until November 2027. However, after that date, the Federal Reserve will reject wires with the old format.

**Q: What if my address doesn't fit in 35 characters?**

A: Cross River will expand the character limit to 70 characters in a future release. For now, abbreviate as needed or split the address across `adrLine1` and `adrLine2`.

**Q: What if I only have street address and city, but no state or postal code?**

A: That's fine. Only `adrLine1`, `city`, and `country` are required. The `adrLine2`, `state`, and `postalCode` fields are optional.

**Q: How do I format international addresses?**

A: Use the appropriate 2-letter country code (e.g., "GB" for United Kingdom, "CA" for Canada) and format the address according to that country's conventions. The `state` field can be used for provinces or regions.

**Q: What are valid country codes?**

A: Use ISO 3166-1 alpha-2 codes (2 uppercase letters). Examples: US (United States), GB (United Kingdom), CA (Canada), DE (Germany), FR (France), JP (Japan). See the [full list here](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

**Q: Can I test the new format now?**

A: Yes! Our sandbox environment is already live and supports the new format. We encourage you to begin testing as soon as possible.

## API changes - request examples

### Wire transfer request

### Before (current format)

```json
{
  "accountNumber": "1234567890",
  "businessFunctionCode": "CTR",
  "receiverRoutingNumber": "021000021",
  "amount": 1000000,
  "purpose": "Invoice payment",
  "originator": {
    "idCode": "D",
    "identifier": "1234567890",
    "name": "Acme Corporation",
    "address1": "456 Business Blvd",
    "address2": "New York, NY 10002",
    "address3": ""
  },
  "beneficiaryFi": {
    "idCode": "D",
    "identifier": "021000021",
    "name": "JP Morgan Chase Bank",
    "address1": "270 Park Avenue",
    "address2": "New York, NY 10017",
    "address3": ""
  },
  "beneficiary": {
    "idCode": "D",
    "identifier": "9876543210",
    "name": "Example LLC",
    "address1": "789 Commerce Ave",
    "address2": "Los Angeles, CA 90001",
    "address3": ""
  }
}
```

### After (new format)

```json
{
  "accountNumber": "1234567890",
  "businessFunctionCode": "CTR",
  "receiverRoutingNumber": "021000021",
  "amount": 1000000,
  "purpose": "Invoice payment",
  "originator": {
    "idCode": "D",
    "identifier": "1234567890",
    "name": "Acme Corporation",
    "postalAddress": {
      "adrLine1": "456 Business Blvd",
      "city": "New York",
      "state": "NY",
      "postalCode": "10002",
      "country": "US"
    }
  },
  "beneficiaryFi": {
    "idCode": "D",
    "identifier": "021000021",
    "name": "JP Morgan Chase Bank",
    "postalAddress": {
      "adrLine1": "270 Park Avenue",
      "city": "New York",
      "state": "NY",
      "postalCode": "10017",
      "country": "US"
    }
  },
  "beneficiary": {
    "idCode": "D",
    "identifier": "9876543210",
    "name": "Example LLC",
    "postalAddress": {
      "adrLine1": "789 Commerce Ave",
      "city": "Los Angeles",
      "state": "CA",
      "postalCode": "90001",
      "country": "US"
    }
  }
}
```

### Webhook example

As partners and other FedWire users adopt the new structured postal address elements the following additional fields can be populated *potentially before and after* November 2027:

- Originator**Country**
- Originator**State**
- Originator**PostalCode**
- Originator**City**
- Beneficiary**Country**
- Beneficiary**State**
- Beneficiary**PostalCode**
- Beneficiary**City**

In addition, the following webhook fields will continue to exist and be populated as follows:

- OriginatorAddress1 – populated from Originator.Address1 if present or Originator.PostalAddress.AdrLine1 if present
- OriginatorAddress2 – populated from Originator.Address2 if present or Originator.PostalAddress.AdrLine2 if present
- OriginatorAddress3 – populated from Originator.Address3 if present otherwise NOT populated (null)
- BeneficiaryAddress1 – populated from Beneficiary.Address1 if present or Beneficiary.PostalAddress.AdrLine1 if present
- BeneficiaryAddress2 – populated from Beneficiary.Address2 if present or Beneficiary.PostalAddress.AdrLine2 if present
- BeneficiaryAddress3 – populated from Beneficiary.Address3 if present otherwise NOT populated (null)

```json
{
"eventType: "Wire.Payment.Processed",
"eventId": "evt_12345",
"timestamp": "26-06-30T10:12:130Z"
{
    "paymentId": "9d63d00b-ba29-4102-9298-b4790091c7e4",
    "accountNumber": "358449449133",
    "direction": "Outbound",
    "imad": "20260630MFP00057000347",
    "omad": null,
    "paymentType": "Transfer",
    "purpose": "COINBASE WALLET USD WITHDRAWAL",
    "amount": "100",
    "clientIdentifier": null,
    "originatingFiName": "CROSS RIVER BANK",
    "originatingFiIdentifier": "021214891",
    "originatorName": "COINBASE INC",
    "originatorIdentifier": "358449449133",
    "originatorAddress1": "100 PINE STREET",
    "originatorAddress2": "SUITE 1250",
    "originatorAddress3": "SAN FRANCISCO CA 94111 US",
    "beneficiaryFiName": "CROSS RIVER BANK",
    "beneficiaryFiIdentifier": "021214891",
    "beneficiaryName": "SYNTH FEDWIRE PAYIN",
    "beneficiaryIdentifier": "000043400588",
    "beneficiaryAddress1": "123 MAIN ST APT 4B",
    "beneficiaryAddress2": "ARVADA CO 80001",
    "beneficiaryAddress3": "US",
    "beneficiaryReference": "RTL-7W4624TZ",
    "senderReference": "75F1NOVN045",
    "originatorToBeneficiary1": null,
    "originatorToBeneficiary2": null,
    "originatorToBeneficiary3": null,
    "originatorToBeneficiary4": null,
    "coreTransactionId": "6eb8c8a6-9145-485b-9513-b4790091c7e4",
    "senderRoutingNumber": "021214891",
    "originalPaymentId": "9d63d00b-ba29-4102-9298-b4790091c7e4",
    "originatorCountry": null,
    "originatorState": null,
    "originatorPostalCode": null,
    "originatorCity": null,
    "beneficiaryCountry": null,
    "beneficiaryState": null,
    "beneficiaryPostalCode": null,
    "beneficiaryCity": null
}
} 
```

:::hint{type="warning"}
During migration all webhook address information will continue to be provided in the old format while the new structured postal address elements will be provided with NULL values.
:::

## Validation rules

The API validates the following:

| Rule                                                                                            | Result if Not Met                  |
| ----------------------------------------------------------------------------------------------- | ---------------------------------- |
| `adrLine1` is required, max length 35                                                           | Request rejected (400 Bad Request) |
| `city` is required                                                                              | Request rejected (400 Bad Request) |
| `country` is required                                                                           | Request rejected (400 Bad Request) |
| `country` must be a valid 2-letter code (e.g., US, GB, CA)                                      | Request rejected (400 Bad Request) |
| `adrLine2` cannot exceed 35 characters, cannot be provided unless adrLine1 is provided          | Request rejected (400 Bad Request) |
| Cannot use both old format (`address1/2/3`) and new format (`postalAddress`) for the same party | Request rejected (400 Bad Request) |

:::hint{type="warning"}
**Important:** You cannot use both the old format (address1/2/3) and the new format (postalAddress) for the same party in a request. Choose one format per party.
:::

## Related resources

**Support:**

For questions or assistance with this migration, contact your Cross River representative.

[title] Transfers
[path] Payments/Untitled/APIs/

## API reference

Transfer Funds is used to effect a book transfer within Cross River system.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/transfers",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/transfers",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "VPsDJpfIIQU-45GWL3A46",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/transfers' \\\n--header 'Idempotency-key: d0cc197f-0a68-4d39-9a10-7d24aabb2ae5' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer token' \\\n--data '{\n  \"debitAccountNumber\": \"2151546989\",\n  \"creditAccountNumber\": \"2207975570\",\n  \"amount\": 2300,\n  \"currency\": \"usd\",\n  \"clientIdentifier\": \"d0cc197f-0a68-4d39-9a10-7d24aabb2ae5\",\n  \"flags\": []\n}",
        "customLabel": ""
      },
      {
        "id": "gGB08OiJiQI2YOUb-fTAw",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/transfers',\n  'headers': {\n    'Idempotency-key': 'd0cc197f-0a68-4d39-9a10-7d24aabb2ae5',\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer token'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"debitAccountNumber\": \"2151546989\",\n  \"creditAccountNumber\": \"2207975570\",\n  \"amount\": 2300,\n  \"currency\": \"usd\",\n  \"clientIdentifier\": \"d0cc197f-0a68-4d39-9a10-7d24aabb2ae5\",\n  \"flags\": []\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "4SZZ7UZWQHOm05dPtCM56",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/core/v1/transfers\"\n\npayload = json.dumps({\n  \"debitAccountNumber\": \"2151546989\",\n  \"creditAccountNumber\": \"2207975570\",\n  \"amount\": 2300,\n  \"currency\": \"usd\",\n  \"clientIdentifier\": \"d0cc197f-0a68-4d39-9a10-7d24aabb2ae5\",\n  \"flags\": []\n})\nheaders = {\n  'Idempotency-key': 'd0cc197f-0a68-4d39-9a10-7d24aabb2ae5',\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsIng1dCI6IjdQREJ4dGVldl9IMXhpRk9XeEhVN19RRkdxNCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc1MTI4MDg2MCwiaWF0IjoxNzUxMjgwODYwLCJleHAiOjE3NTEyODQ0NjAsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJjb3NzYngiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJjbGllbnRfaWQiOiJiNzk5OTUxZDQ3ZWI0MTBkOTJiOWRhOTAxYjhmZmE2OSIsImp0aSI6IjMwMjRGMDkzMTMzQjZGOTFBOEYwMDU2QjA5ODBEMEQ4In0.KFOek-jYzDyydjcsbxcD7ozw-CoJmm2_JFJGF4_I0WgY7kdTTGS0ybfaB0QXZfrFhx6gbK-7sJyki5vcVtn94HER8anCk0g1j9kW9ZpgtlNCM_7h_ct2QgaWsiUL60PN8paJ07PmBUB20oyNf4QRXPnKjkc8EUTm4pgfX8l5vD76pFzAk8Gt8NcfAbJYuahAdHMykO1320xjv8PFewNJv8Jndi-vAcPfQ5N6bCtF9U4fLWJeQaDA3iVBM0Us6fAXsL5nwimzkUpF_g_TheWPniwYRXXHSlGSkpdZlpoZiZcFr3MIXuB2CAWXgSf_Gjix6drnD24Y4u2BKrjuJsOB6A'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "XelAVo52pwLLlgDAJriXo",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/transfers\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Idempotency-key\"] = \"d0cc197f-0a68-4d39-9a10-7d24aabb2ae5\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer token\"\nrequest.body = JSON.dump({\n  \"debitAccountNumber\": \"2151546989\",\n  \"creditAccountNumber\": \"2207975570\",\n  \"amount\": 2300,\n  \"currency\": \"usd\",\n  \"clientIdentifier\": \"d0cc197f-0a68-4d39-9a10-7d24aabb2ae5\",\n  \"flags\": []\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "tUHx4tgqhQI5WlM5gTS3o",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/transfers\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"debitAccountNumber\": \"2151546989\",`+\"\n\"+`\n  \"creditAccountNumber\": \"2207975570\",`+\"\n\"+`\n  \"amount\": 2300,`+\"\n\"+`\n  \"currency\": \"usd\",`+\"\n\"+`\n  \"clientIdentifier\": \"d0cc197f-0a68-4d39-9a10-7d24aabb2ae5\",`+\"\n\"+`\n  \"flags\": []`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"d0cc197f-0a68-4d39-9a10-7d24aabb2ae5\")\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer token\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "VPsDJpfIIQU-45GWL3A46"
  },
  "results": {
    "languages": [
      {
        "id": "dAUy_ZtTXqghgMKqwJuJ7",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"8a0e057d-b30b-4bae-9d82-b18c012905f2\",\n  \"traceNumber\": \"T241631401257I2I1\",\n  \"status\": \"Pending\",\n  \"debit\": {\n    \"transactionType\": \"Debit\",\n    \"accountType\": \"Deposit\",\n    \"masterAccountNumber\": \"2151546989\",\n    \"subAccountNumber\": \"2151546989\",\n    \"partnerId\": \"1e5d3f04-ae24-4af6-9e30-aecf012b99dd\",\n    \"productId\": \"cc62e17f-5912-483e-9e42-aed30112fbb6\",\n    \"activityId\": \"f428c44b-efe8-4b35-8d37-b18c012905f2\"\n  },\n  \"credit\": {\n    \"transactionType\": \"Credit\",\n    \"accountType\": \"Deposit\",\n    \"masterAccountNumber\": \"2207975570\",\n    \"subAccountNumber\": \"2207975570\",\n    \"partnerId\": \"1e5d3f04-ae24-4af6-9e30-aecf012b99dd\",\n    \"productId\": \"cc62e17f-5912-483e-9e42-aed30112fbb6\",\n    \"activityId\": \"d269b783-5e84-4b46-beba-b18c012905f2\"\n  },\n  \"transactionCode\": \"Account Transfer\",\n  \"amount\": 2300,\n  \"currency\": \"usd\",\n  \"description\": \"Internal Transfer from 2151546989 to 2207975570\",\n  \"rail\": \"Internal\",\n  \"railId\": \"0\",\n  \"clientIdentifier\": \"d0cc197f-0a68-4d39-9a10-7d24aabb2ae5\",\n  \"flags\": [],\n  \"schedule\": [],\n  \"proposedAt\": \"2024-06-11T14:01:25.70982-04:00\",\n  \"lastModifiedAt\": \"2024-06-11T14:01:25.70982-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "dAUy_ZtTXqghgMKqwJuJ7"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "debitAccountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of the account to be debited",
        "": "Account number of the account to be debited"
      },
      {
        "name": "creditAccountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of the account to be credited",
        "": "required"
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "string",
        "description": "Dollar amount of transfer in positive integral cents. For example, $1.00 appears as 100.",
        "": "Dollar amount of transfer in positive integral cents. For example, $1.00 appears as 100."
      },
      {
        "name": "currency",
        "kind": "optional",
        "type": "string",
        "description": "Currency of the transfer amount",
        "": "Currency of the transfer amount"
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
        "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the transfer request. This ID is in the GUID format."
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Trace number for an original payment",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "The Cross River system transaction status: \n- Pending\n- Complete\n- Rejected\n- Review\n- Declined\n- Canceled\n- Processing",
      "children": []
    },
    {
      "name": "debit",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": [
        {
          "name": "transactionType",
          "kind": "optional",
          "type": "string",
          "description": "Debit"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Type of account\n- NotSpecified\n- Savings\n- Checking\n- Account\n- Universal"
        },
        {
          "name": "masterAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": "The account number of the debit account"
        },
        {
          "name": "subAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Same as master account number"
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        },
        {
          "name": "activityId",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "result",
          "kind": "optional",
          "type": "object",
          "description": "",
          "children": [
            {
              "name": "success",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "code",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "message",
              "kind": "optional",
              "type": "string",
              "description": ""
            }
          ]
        }
      ]
    },
    {
      "name": "credit",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": [
        {
          "name": "transactionType",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "masterAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "subAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "partnerId",
          "kind": "optional",
          "type": "string",
          "description": "Your unique ID in the Cross River system. This ID is in GUID format."
        },
        {
          "name": "productId",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "activityId",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "result",
          "kind": "optional",
          "type": "object",
          "description": "",
          "children": [
            {
              "name": "success",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "code",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "message",
              "kind": "optional",
              "type": "string",
              "description": ""
            }
          ]
        }
      ]
    },
    {
      "name": "transactionCode",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "description",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "rail",
      "kind": "optional",
      "type": "string",
      "description": "Internal",
      "children": []
    },
    {
      "name": "railId",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "flags",
      "kind": "optional",
      "type": "array",
      "description": "",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "proposedAt",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "executedAt",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "effectiveAt",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-corev1transfers",
  "legacyHash": "9uYFYnwyLO8TfFRLCUWgS"
}
```
:::


[title] Exchange rate estimate
[path] Payments/International payments/APIs/

## API reference

Returns an estimate of an exchange rate. The estimate shows the current foreign exchange rate, including spread and the transaction fee. Unlike a quote, no beneficiary data is required and the estimate cannot be executed. The estimate is not saved. For this call, you must supply your Cross River accountNumber, the desired currency of the received payment, and either amount in USD you plan to send (fromAmount) or the amount in the foreign currency you want sent (toAmount).

:::hint{type="warning"}
**IMPORTANT**
You must have a value for either a `fromAmount` or a `toAmount`, but not both.
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /international/v1/estimates",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/international/v1/estimates",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "mCc46oMTN0D1CA60yGUmZ",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/international/v1/estimates?accountNumber=158560897007&currency=GBP&fromAmount=1000' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "w_zDkdqgBkzpuXzrVBKyK",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/international/v1/estimates?accountNumber=158560897007&currency=GBP&fromAmount=1000',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "wNJ0919W2TnL10OgoISFf",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/international/v1/estimates?accountNumber=158560897007&currency=GBP&fromAmount=1000\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "uJV9q_Fpb-0JsTI1x0eq2",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/international/v1/estimates?accountNumber=158560897007&currency=GBP&fromAmount=1000\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "gZdpDHZ3CzHVhoQcK90M3",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/international/v1/estimates?accountNumber=158560897007&currency=GBP&fromAmount=1000\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "mCc46oMTN0D1CA60yGUmZ"
  },
  "results": {
    "languages": [
      {
        "id": "y1qCO8sDkmizimEEhhiu4",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"accountNumber\": \"158560897007\",\n    \"currency\": \"gbp\",\n    \"fromAmount\": 1000,\n    \"toAmount\": 789,\n    \"exchangeRate\": \"0.7889\",\n    \"regularTransactionFeeAmount\": 129,\n    \"priorityTransactionFeeAmount\": 1400\n}"
      }
    ],
    "selectedLanguageId": "y1qCO8sDkmizimEEhhiu4"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of the sending Cross River account",
        "": "Account number of the sending Cross River account"
      },
      {
        "name": "currency",
        "kind": "required",
        "type": "string",
        "description": "Currency the customer is converting funds into. 3-letter ISO currency code.",
        "": "required"
      },
      {
        "name": "fromAmount",
        "kind": "optional",
        "type": "Integer",
        "description": "The amount in USD to be transferred.\nLeave blank if you provide a toAmount. \nLeave out the decimal point between the dollars and the cents.",
        "": "The amount in USD to be transferred.\nLeave blank if you provide a toAmount. \nLeave out the decimal point between the dollars and the cents."
      },
      {
        "name": "toAmount",
        "kind": "optional",
        "type": "Integer",
        "description": "The amount in the specified currency to be received.\nLeave blank if you provide a fromAmount.\nLeave out the decimal point between the dollars and the cents.",
        "": "The amount in the specified currency to be received.\nLeave blank if you provide a fromAmount.\nLeave out the decimal point between the dollars and the cents."
      },
      {
        "name": "conversionFeeBps",
        "kind": "optional",
        "type": "Integer",
        "description": "Requested fee for conversion of the funds using basis points (BPS) added onto the foreign exchange rate and earned by the COS partner into their specified account. The fee is added onto the foreign exchange rate when returned in the response. A basis point is 1/100th of a percent of the funds to be transferred.\n\nPartners must be approved to use this attribute to earn conversion fees.",
        "children": []
      },
      {
        "name": "regularTransactionFeeAmount",
        "kind": "optional",
        "type": "Integer",
        "description": "Requested fee taken from the sending account for regular payment, earned by the COS partner into their specified account. The regular transaction fee is added onto the platform fee to get the total transaction fee.\n\nPartners must be approved to use this attribute to earn transaction fees.",
        "children": []
      },
      {
        "name": "priorityTransactionFeeAmount",
        "kind": "optional",
        "type": "Integer",
        "description": "Requested fee taken from the sending account for priority (SWIFT) payment, earned by the COS partner into their specified account. The priority transaction fee is added onto platform fee to get the total Transaction Fee.\n\nPartners must be approved to use this attribute to earn transaction fees.",
        "children": []
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number of the sending Cross River account"
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency the customer is converting funds into. 3-letter ISO currency code.",
      "children": []
    },
    {
      "name": "fromAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount in USD to be transferred",
      "children": []
    },
    {
      "name": "toAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount in the specified currency to be received\n",
      "children": []
    },
    {
      "name": "exchangeRate",
      "kind": "optional",
      "type": "string",
      "description": "The estimated conversion rate between the dollar amount and the foreign currency",
      "children": []
    },
    {
      "name": "regularTransactionFeeAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Requested fee taken from the sending account for regular payment, earned by the COS partner into their specified account. The regular transaction fee is added onto the platform fee to get the total transaction fee.\n\nPartners must be approved to use this attribute to earn transaction fees.",
      "children": []
    },
    {
      "name": "priorityTransactionFeeAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Requested fee taken from the sending account for priority (SWIFT) payment, earned by the COS partner into their specified account. The priority transaction fee is added onto platform fee to get the total Transaction Fee.\n\nPartners must be approved to use this attribute to earn transaction fees.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-internationalv1estimates",
  "legacyHash": "bAFW_-zZexNeQybYg7EFC"
}
```
:::

:::hint{type="info"}
For additional information, refer to our International payments [tutorial](docId:0mIEXzUcyTurPvZq13y1Z).
:::


[title] ABA directory
[path] Payments/Wires/APIs/

## API reference

Retrieve a list of ABA members.

:::ApiMethodV2
```json
{
  "name": "Endpoint: v1/abadirectory",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/wires/v1/abadirectory",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "LbfVjvGLheEmAkEcq4hI_",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/wires/v1/abadirectory' ^\n-H 'Idempotency-key: 3e4ac46c-fa9e-4654-80b8-83f971622dfd' ^\n-H 'Authorization: Bearer token' ^\n-d ''",
        "customLabel": ""
      },
      {
        "id": "wzfIn2bdF0PX6pIwZDkVB",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  'url': 'https://sandbox.crbcos.com/wires/v1/abadirectory',\n  'headers': {\n    'Idempotency-key': '3e4ac46c-fa9e-4654-80b8-83f971622dfd',\n    'Authorization': 'Bearer token'\n  }\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "arE2OC2dzKMV1DfJpgbE6",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/wires/v1/abadirectory\"\n\npayload = \"\"\nheaders = {\n  'Idempotency-key': '3e4ac46c-fa9e-4654-80b8-83f971622dfd',\n  'Authorization': 'Bearer token'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "DlXBgirqsJwGbxLJ3362z",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/wires/v1/abadirectory\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Idempotency-key\"] = \"3e4ac46c-fa9e-4654-80b8-83f971622dfd\"\nrequest[\"Authorization\"] = \"Bearer token\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "a9ab04gUE-3twLfwzy1Qz",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/wires/v1/abadirectory\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Idempotency-key\", \"3e4ac46c-fa9e-4654-80b8-83f971622dfd\")\n  req.Header.Add(\"Authorization\", \"Bearer token\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "LbfVjvGLheEmAkEcq4hI_"
  },
  "results": {
    "languages": [
      {
        "id": "MkfhHjA1OdGA79nsPsSfn",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"results\": [\n        {\n            \"routingNumber\": \"011000015\",\n            \"telegraphicName\": \"FRB-BOS           \",\n            \"customerName\": \"FEDERAL RESERVE BANK OF BOSTON      \",\n            \"state\": \"MA\",\n            \"city\": \"BOSTON                   \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"20040910\",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011000028\",\n            \"telegraphicName\": \"STATE ST BOS      \",\n            \"customerName\": \"STATE STREET BOSTON                 \",\n            \"state\": \"MA\",\n            \"city\": \"BOSTON                   \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"        \",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011000536\",\n            \"telegraphicName\": \"FHLB BOSTON       \",\n            \"customerName\": \"FEDERAL HOME LOAN BANK              \",\n            \"state\": \"MA\",\n            \"city\": \"BOSTON                   \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"20170818\",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011001234\",\n            \"telegraphicName\": \"BK OF NYC         \",\n            \"customerName\": \"THE BANK OF NEW YORK MELLON         \",\n            \"state\": \"NY\",\n            \"city\": \"NEW YORK                 \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"20170424\",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011001276\",\n            \"telegraphicName\": \"ONEUNITED BANK    \",\n            \"customerName\": \"ONEUNITED BANK                      \",\n            \"state\": \"MA\",\n            \"city\": \"BOSTON                   \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"20021231\",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011001881\",\n            \"telegraphicName\": \"FIDUCIARY TR BOS  \",\n            \"customerName\": \"FIDUCIARY TRUST COMPANY             \",\n            \"state\": \"MA\",\n            \"city\": \"BOSTON                   \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"        \",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011002343\",\n            \"telegraphicName\": \"BOSTON PRIVATE BK \",\n            \"customerName\": \"THE BOSTON PRIVATE BK. & TR CO      \",\n            \"state\": \"MA\",\n            \"city\": \"BOSTON                   \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"        \",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011002877\",\n            \"telegraphicName\": \"EW BK SMRINO      \",\n            \"customerName\": \"EAST WEST BANK                      \",\n            \"state\": \"MA\",\n            \"city\": \"BOSTON                   \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"20141107\",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011075150\",\n            \"telegraphicName\": \"SANTANDER BK      \",\n            \"customerName\": \"SANTANDER BANK, N.A.                \",\n            \"state\": \"PA\",\n            \"city\": \"WYOMISSING               \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"20131029\",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        },\n        {\n            \"routingNumber\": \"011102133\",\n            \"telegraphicName\": \"HOMETOWN CNB      \",\n            \"customerName\": \"HOMETOWN BANK                       \",\n            \"state\": \"MA\",\n            \"city\": \"WEBSTER                  \",\n            \"fundsTransferStatus\": \"Y\",\n            \"fundsSettlementOnlyStatus\": \" \",\n            \"lastRevisionDate\": \"20161118\",\n            \"lastModifiedAt\": \"2018-05-17T16:04:51.867-04:00\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 10,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": true\n}"
      }
    ],
    "selectedLanguageId": "MkfhHjA1OdGA79nsPsSfn"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "searchTerm",
        "kind": "optional",
        "type": "string",
        "description": "Specify a search term to limit the results",
        "": "Specify a search term to limit the results"
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "results",
      "kind": "optional",
      "type": "object",
      "description": "Array of results",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies a financial institution"
        },
        {
          "name": "telegraphicName",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "customerName",
          "kind": "optional",
          "type": "string",
          "description": "Name of bank"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State where bank is located"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City where bank is located"
        },
        {
          "name": "fundsTransferStatus",
          "kind": "optional",
          "type": "string",
          "description": "The institution's capability to process standard Fedwire funds transfers. \n- \"Y\" - Institution can process Fedwire funds transfers\n - \"N\" or \" \" (space) - Institution cannot process or is not eligible"
        },
        {
          "name": "fundsSettlementOnlyStatus",
          "kind": "optional",
          "type": "string",
          "description": "The institution's capability for settlement-only transfers.\n- \"S\" - Settlement-only participant\n- \" \" (space) - Not a settlement-only participant"
        },
        {
          "name": "lastRevisionDate",
          "kind": "optional",
          "type": "string",
          "description": "Date in YYYMMDD format"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time when the financial institution was last updated, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-v1abadirectory",
  "legacyHash": "76uTfsrynvDsDKD9E_1Yo"
}
```
:::


[title] ACH
[path] Payments/

:::CtaButton{label="ACH concepts" docId="3tt7a4nY2fyVMzEEmFwUt" openInNewTab="true"}

:::

The Cross River ACH API allows you to both originate and receive payments through the Federal Reserve ACH network.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [Pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

This table presents ACH APIs that we describe in detail.

| Action                                                            | API Call                                                 | Description                                                                                                           |
| ----------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [Send ACH  transaction](docId\:ILwmF5qnTMLo30D2H3rCH)             | `POST /ach/v1/payments`                                  | Sends a single payment using ACH                                                                                      |
| [Reversals](docId\:vzl0bctqLshMKGDQ13zjT)                         | `POST /ach/v1/payments/{id}/reversals`                   | Requests to retrieve funds from a payment sent in error, such as a duplicate payment or one sent to the wrong account |
| [Returns](docId:7ji1ODgdnaKSdq88PIVDu)                            | `POST /ach/v1/payments/{id}/returns`                     | Initiates a return for an existing ACH payment                                                                        |
| [Cancel payment](docId\:J4qt27UdIV0QB-3pKKsB9)                    | `POST /ach/v1/payments/{id}/cancel`                      | Cancels an ACH payment                                                                                                |
| [Send batch](docId:0Hu-sm4gNXr4XbIZCHkTA)                         | `POST /ach/v1/client-batches`                            | Originates several payments together in a batch                                                                       |
| [Cancel batch](docId\:u_LIED3U9ey-YoPB_707j)                      | `POST /ach/v1/client-batches/{id}/cancel`                | Cancels any incomplete payments and stops further processing of any remaining payments in the batch                   |
| [Limits utilization](docId\:ht_IljVS1T9Cq4zIIZLc1)                | `GET ach/v1/limits-utilization/{productId}`              | Returns the percentage of your ACH payment limit used according to the specific product used to initiate ACH payments |
| [Limits utilization by limit date](docId\:JXOBeUN98rSUMBxl15cQd)  | `GET  ach/v1/limits-utilization/{productId}/{limitDate}` | Returns the percentage of your ACH payment limit used for a specific product ID and date                              |
| [Simulate inbound ACH origination](docId\:rABd6qMClRqKEWOCp3QnQ)  | `POST /v1/payments/simulated-inbound-originations`       | Simulates an incoming ACH payment from a different bank into Cross River                                              |

# Related topics

- [Webhook events: ACH](docId\:AVRvavzdk7hC0UfXn6XZ9)&#x20;
- [Request and response codes: ACH](docId\:oDtRP7ARfnpQuFEGy4Sfh)&#x20;
- [Error codes: ACH](docId\:V5mdmpxa7dsdrx9LX7n9c)&#x20;

# Tutorials

See our API tutorials to learn how to:

- [Send an ACH](docId\:HLIqOJNMHJwJRI29Z0Ryt): Originate a standard or same-day ACH payment.
- [Send a client batch](docId:93yC84GGRygSZe1OPiW2m): Send two or more payments in the same call.
- [Simulate inbound ACH](docId\:XiG1oe0IP7L9Q-Ii3U-Mk): Test the system with our simulation endpoints. You can also use this endpoint to fund a test account.


[title] APIs
[path] Payments/International payments/


[title] Error codes: ACH
[path] Payments/ACH/

## Overview

This page provides comprehensive error code information for the ACH API, including error codes, descriptions, and resolution guidance based on actual codebase analysis.

## Error response format

```json
{
    "errors": [
        {
            "code": 1000,
            "message": "Receiver.RoutingNumber is missing or invalid"
        }
    ]
}
```

## Error codes by category

### Validation errors (1000-1001)

General validation errors for ACH operations.

| Error Code | Description       | Resolution                                                                               |
| ---------- | ----------------- | ---------------------------------------------------------------------------------------- |
| **1000**   | General exception | General validation error; check request parameters and contact support if issue persists |
| **1001**   | Payment required  | Payment object is required in the request; include payment details                       |

### Payment processing errors (2000-2030)

Errors related to ACH payment processing, status management, and validation.

| Error Code | Description                                                        | Resolution                                                                                   |
| ---------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| **2000**   | General exception                                                  | General application error; check request parameters and contact support if issue persists    |
| **2001**   | Invalid payment status                                             | Check current payment status; verify the requested operation is valid for the current status |
| **2002**   | Invalid posting status                                             | Payment posting status does not allow the requested operation; verify posting status         |
| **2003**   | Payment cannot be canceled                                         | Payment status does not allow cancellation; verify payment is in cancellable status          |
| **2004**   | Account not found                                                  | Verify the account number is correct; check if account exists in the system                  |
| **2005**   | Payment must be outbound                                           | Operation requires payment to be outbound; verify payment direction                          |
| **2006**   | Payment must be inbound                                            | Operation requires payment to be inbound; verify payment direction                           |
| **2007**   | Payment must be an inbound origination                             | Operation requires an inbound origination payment type                                       |
| **2008**   | Payment must be status completed or rejected to be corrected       | Payment correction requires completed or rejected status; verify payment status              |
| **2009**   | Invalid change code                                                | Change code is not valid; provide a valid NACHA change code                                  |
| **2010**   | Payment must be an inbound return                                  | Operation requires an inbound return payment type                                            |
| **2011**   | Payment must be an origination                                     | Operation requires an origination payment type                                               |
| **2012**   | Payment must be status completed or rejected to be returned        | Payment return requires completed or rejected status; verify payment status                  |
| **2013**   | Payment must be status completed or rejected to be dishonored      | Payment dishonor requires completed or rejected status; verify payment status                |
| **2014**   | Invalid return code                                                | Return code is not valid; provide a valid NACHA return code                                  |
| **2015**   | Invalid dishonored return code                                     | Dishonored return code is not valid; provide a valid NACHA dishonored return code            |
| **2016**   | Original payment not found                                         | Verify original payment ID is correct; check if original payment exists                      |
| **2017**   | Cannot link to same payment ID                                     | Linked payment ID must be different from current payment ID                                  |
| **2018**   | Payment type must be return or notification of change              | Operation requires payment to be a return or NOC type                                        |
| **2019**   | Original payment must be completed                                 | Linked original payment must be in completed status                                          |
| **2020**   | Payment must be on hold to request a rescan                        | Payment must be in hold status before requesting a rescan                                    |
| **2021**   | No scan lists are configured for account                           | Configure scan lists for the account before requesting scans                                 |
| **2022**   | Scan already pending                                               | A scan is already in progress; wait for current scan to complete                             |
| **2023**   | Previous payment not found                                         | Verify previous payment ID is correct; check if previous payment exists                      |
| **2024**   | Previous payment must be a completed outbound origination          | Previous payment must be an outbound origination in completed status                         |
| **2025**   | Receiver account not found                                         | Verify receiver account number is correct; check if account exists                           |
| **2026**   | Active holds found                                                 | Payment has active holds; resolve or release holds before processing                         |
| **2027**   | Posting account cannot be changed due to current payment status    | Payment status does not allow posting account changes                                        |
| **2028**   | Posting status must be pending or failed to change posting account | Posting account can only be changed when posting is pending or failed                        |
| **2029**   | Posting status must be failed to attempt a retry                   | Only failed postings can be retried; verify posting status                                   |
| **2030**   | Originator profile address missing or invalid                      | Provide complete originator address information; verify address format                       |

### Batch errors (2200-2202)

Errors related to ACH batch processing and authorization.

| Error Code | Description                          | Resolution                                                                  |
| ---------- | ------------------------------------ | --------------------------------------------------------------------------- |
| **2200**   | Batch not authorizing                | Batch must be in authorizing status for this operation; verify batch status |
| **2201**   | Batch requires one or more payment   | Batch must contain at least one payment; add payments to batch              |
| **2202**   | No filters were found on the request | Include filter parameters in the request; specify search criteria           |


[title] Webhook events: Wires
[path] Payments/Wires/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific  [webhooks](docId\:qF6bTOPBPNcpLPp9SAtWI) which have a specific [event format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents common `wires` webhook events that are described in detail below.

| Event Name                                                                  | Description                                                                                                                                        | Related Endpoint                                                                                         |
| --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| [Wire.Payment.Sent](docId\:OA3cg-apKn_510VPq2yYe)                           | Outbound wire has been transmitted to the Federal Reserve and has been successfully acknowledged as being completed. IMAD number is now available. | [Wire transfer](docId\:mC0d1W1u80umazO85mEIz)                                                            |
| [Wire.Payment.Received](docId\:OA3cg-apKn_510VPq2yYe)                       | Inbound wire has been received from another bank and posted to your account.                                                                       | [Wire transfer](docId\:mC0d1W1u80umazO85mEIz)                                                            |
| [Wire.Payment.Rejected](docId\:OA3cg-apKn_510VPq2yYe)                       | Outbound wire could not be processed due to compliance reasons or was rejected by the Federal Reserve.                                             | [Wire transfer](docId\:mC0d1W1u80umazO85mEIz)                                                            |
| [Wire.Payment.Canceled](docId\:OA3cg-apKn_510VPq2yYe)                       | Outbound wire was canceled at the partner's request.                                                                                               | [Wire transfer](docId\:mC0d1W1u80umazO85mEIz) <br />[Cancel transfer](docId\:hUTHXT2ytyWWet0twOn1-)      |
| [Core.Transaction.Completed (Outgoing wire)](docId\:OA3cg-apKn_510VPq2yYe)  | Transaction completed successfully outbound WIRE transaction                                                                                       | [Wire transfer](docId\:mC0d1W1u80umazO85mEIz)<br />[Payment transactions](docId\:luDEbxnwU8p7Knb_bDM6I)  |
| [Core.Transaction.Completed (Incoming wire)](docId\:OA3cg-apKn_510VPq2yYe)  | Transaction completed successfully outbound WIRE transaction                                                                                       |                                                                                                          |
| [Core.Transaction.Completed (Reversal)](docId\:OA3cg-apKn_510VPq2yYe)       | Transaction completed successfully reversal WIRE transaction                                                                                       |                                                                                                          |

## Event examples

### Wire.Payment.Sent

:::CodeblockTabs
Wire.Payment.Sent

```curl
{
  "id": "bfecb86b-a76f-42bf-b354-b25901132160",
  "eventName": "Wire.Payment.Sent",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2025-01-02T11:41:43.147-05:00",
  "resources": [
    "wires/v1/payments/b02e7f6b-a9a5-4de2-a291-b25901119db5"
  ],
  "details": [
    {
      "paymentId": "b02e7f6b-a9a5-4de2-a291-b25901119db5",
      "accountNumber": "2273475422",
      "direction": "Outbound",
      "imad": "20250102SIMULATE000121",
      "omad": "20250102SIMULATE000122",
      "paymentType": "Transfer",
      "purpose": "Invoice Payment",
      "amount": "10000",
      "clientIdentifier": null,
      "originatingFiName": "CRB 1270741",
      "originatingFiIdentifier": "021214891",
      "originatorName": "PETER GRIFFIN",
      "originatorIdentifier": "2273475422",
      "originatorAddress1": "31 SPOONER ST",
      "originatorAddress2": "",
      "originatorAddress3": "QUAHOG RI 33156 US",
      "beneficiaryFiName": null,
      "beneficiaryFiIdentifier": null,
      "beneficiaryName": "Bob Smith",
      "beneficiaryIdentifier": "77777777701",
      "beneficiaryAddress1": "123 Maple Lane",
      "beneficiaryAddress2": "Suite 123",
      "beneficiaryAddress3": "New York, NY 10025",
      "beneficiaryReference": "INV# 123",
      "senderReference": "0H18O6M7C23",
      "originatorToBeneficiary1": "THANK",
      "originatorToBeneficiary2": "YOU",
      "originatorToBeneficiary3": "PAID",
      "originatorToBeneficiary4": "IN FULL",
      "coreTransactionId": "61829465-5dd1-4a99-94ce-b25901119db5",
      "senderRoutingNumber": "021214891"
    }
  ]
}
```
:::

### Wire.Payment.Received

:::CodeblockTabs
Wire.Payment.Received

```curl
{
  "id": "cc247ea2-bde2-4072-afce-b2590113ae11",
  "eventName": "Wire.Payment.Received",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2025-01-02T11:43:43.203-05:00",
  "resources": [
    "wires/v1/payments/aa8b18ca-5bc4-485b-a28d-b2590113098f"
  ],
  "details": [
    {
      "paymentId": "aa8b18ca-5bc4-485b-a28d-b2590113098f",
      "accountNumber": "2273475422",
      "direction": "Inbound",
      "imad": "2025010199999123000001",
      "omad": null,
      "paymentType": "Transfer",
      "purpose": "2012510199999123000002",
      "amount": "7500",
      "clientIdentifier": null,
      "originatingFiName": null,
      "originatingFiIdentifier": null,
      "originatorName": "JOHN SMITH",
      "originatorIdentifier": "987654321",
      "originatorAddress1": "123 MAPLE LANE",
      "originatorAddress2": "NEW YORK NY 10025 US",
      "originatorAddress3": null,
      "beneficiaryFiName": null,
      "beneficiaryFiIdentifier": null,
      "beneficiaryName": "Peter Griffin",
      "beneficiaryIdentifier": "2273475422",
      "beneficiaryAddress1": "TEST ADDRESS 1",
      "beneficiaryAddress2": "TEST ADDRESS 2",
      "beneficiaryAddress3": null,
      "beneficiaryReference": "TEST",
      "senderReference": "PAYMENT",
      "originatorToBeneficiary1": "THANK YOU",
      "originatorToBeneficiary2": "FOR THE GIFT",
      "originatorToBeneficiary3": null,
      "originatorToBeneficiary4": null,
      "coreTransactionId": "8c635968-8db0-4c56-a87a-b259011319cd",
      "senderRoutingNumber": "021000021"
    }
  ]
}
```
:::

### Wire.Payment.Rejected

:::CodeblockTabs
Wire.Payment.Rejected

```curl
{
  "id": "e9d56456-5524-406b-a97a-b25901127180",
  "eventName": "Wire.Payment.Rejected",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2025-01-02T11:39:13.073-05:00",
  "resources": [
    "wires/v1/payments/dd271f0b-506e-4e4f-9e75-b259011233fc"
  ],
  "details": [
    {
      "paymentId": "dd271f0b-506e-4e4f-9e75-b259011233fc",
      "accountNumber": "182026999942",
      "direction": "Outbound",
      "imad": null,
      "omad": null,
      "paymentType": "Transfer",
      "purpose": "Invoice Payment",
      "amount": "10000",
      "clientIdentifier": null,
      "originatingFiName": "CRB 1270741",
      "originatingFiIdentifier": "021214891",
      "originatorName": "PETER GRIFFIN",
      "originatorIdentifier": "182026999942",
      "originatorAddress1": "31 SPOONER ST",
      "originatorAddress2": "",
      "originatorAddress3": "QUAHOG RI 33156 US",
      "beneficiaryFiName": null,
      "beneficiaryFiIdentifier": null,
      "beneficiaryName": "Bob Smith",
      "beneficiaryIdentifier": "77777777701",
      "beneficiaryAddress1": "123 Maple Lane",
      "beneficiaryAddress2": "Suite 123",
      "beneficiaryAddress3": "New York, NY 10025",
      "beneficiaryReference": "INV# 123",
      "senderReference": "9686J5S0299",
      "originatorToBeneficiary1": "THANK",
      "originatorToBeneficiary2": "YOU",
      "originatorToBeneficiary3": "PAID",
      "originatorToBeneficiary4": "IN FULL",
      "coreTransactionId": "44faaefb-44d4-4f8c-a76e-b259011233fc",
      "senderRoutingNumber": "021214891",
      "rejectionReason": "Other"
    }
  ]
}
```
:::

### Wire.Payment.Canceled

:::CodeblockTabs
Wire.Payment.Canceled

```curl
{
  "id": "57c13064-90c7-4f41-952e-b2590111c1a1",
  "eventName": "Wire.Payment.Canceled",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2025-01-02T11:36:42.987-05:00",
  "resources": [
    "wires/v1/payments/7d5fcc6e-d881-433b-b22e-b2590111abb9"
  ],
  "details": [
    {
      "paymentId": "7d5fcc6e-d881-433b-b22e-b2590111abb9",
      "accountNumber": "2330604998",
      "direction": "Outbound",
      "imad": null,
      "omad": null,
      "paymentType": "Transfer",
      "purpose": "Invoice Payment",
      "amount": "10000",
      "clientIdentifier": null,
      "originatingFiName": "CRB 1270741",
      "originatingFiIdentifier": "021214891",
      "originatorName": "PETER GRIFFIN",
      "originatorIdentifier": "2330604998",
      "originatorAddress1": "31 SPOONER ST",
      "originatorAddress2": "",
      "originatorAddress3": "QUAHOG RI 33156 US",
      "beneficiaryFiName": null,
      "beneficiaryFiIdentifier": null,
      "beneficiaryName": "Bob Smith",
      "beneficiaryIdentifier": "77777777701",
      "beneficiaryAddress1": "123 Maple Lane",
      "beneficiaryAddress2": "Suite 123",
      "beneficiaryAddress3": "New York, NY 10025",
      "beneficiaryReference": "INV# 123",
      "senderReference": "Q3L3100J56F",
      "originatorToBeneficiary1": "THANK",
      "originatorToBeneficiary2": "YOU",
      "originatorToBeneficiary3": "PAID",
      "originatorToBeneficiary4": "IN FULL",
      "coreTransactionId": "a51dce63-c024-4c67-a3ce-b2590111abb9",
      "senderRoutingNumber": "021214891"
    }
  ]
}
```
:::

### Core.Transaction.Completed (Outgoing Wire)

:::CodeblockTabs
Core.Transaction.Completed (Outgoing Wire)

```curl
{
    "id": "57c13064-90c7-4f41-952e-b2590111c1a1",
    "eventName": "Core.Transaction.completed",
    "status": "Pending",
    "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
    "createdAt": "2026-01-02T11:36:42.987-05:00",
    "resources": [
        "wires/v1/payments/7d5fcc6e-d881-433b-b22e-b2590111abb9"
    ],
    "details": [
        {
            "transactionId": "ab76f7c8-92b1-4106-86b8-acc2015c9637",
            "transactionCode": "Outgoing Wire",
            "debitSubAccount": "325668498703",
            "debitMasterAccount": "2931142950",
            "debitResult": "OK",
            "creditSubAccount": "20020020023",
            "creditMasterAccount": "20020020023",
            "creditResult": "OK",
            "rail": "Wires",
            "railId": "payment/57301159-64a6-4afb-94e3-acc2015c960a",
            "amount": "100"
        }
    ]
}
```
:::

### Core.Transaction.Completed (Incoming Wire)

:::CodeblockTabs
Core.Transaction.Completed (Incoming Wire)

```curl
{
    "id": "57c13064-90c7-4f41-952e-b2590111c1a1",
    "eventName": "Core.Transaction.completed",
    "status": "Pending",
    "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
    "createdAt": "2026-01-02T11:36:45.234-05:00",
    "resources": [
        "wires/v1/payments/7d5fcc6e-d881-433b-b22e-b2590111abb9"
    ],
    "details": [
        {
            "transactionId": "ab76f7c8-92b1-4106-86b8-acc2015c9637",
            "transactionCode": "Incoming Wire",
            "debitSubAccount": "325668498703",
            "debitMasterAccount": "2931142950",
            "debitResult": "OK",
            "creditSubAccount": "20020020023",
            "creditMasterAccount": "20020020023",
            "creditResult": "OK",
            "rail": "Wires",
            "railId": "payment/57301159-64a6-4afb-94e3-acc2015c960a",
            "amount": "100"
        }
    ]
}
```
:::

### Core.Transaction.Completed (Reversal)

:::CodeblockTabs
Core.Transaction.Completed (Reversal)

```curl
{
    "id": "57c13064-90c7-4f41-952e-b2590111c1a1",
    "eventName": "Core.Transaction.completed",
    "status": "Pending",
    "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
    "createdAt": "2026-01-02T11:36:42.987-05:00",
    "resources": [
        "wires/v1/payments/7d5fcc6e-d881-433b-b22e-b2590111abb9"
    ],
    "details": [
   {
         "transactionId": "8e38458d-8e19-46db-9875-acc300f529d2",
         "transactionCode": "Reversal",
         "debitSubAccount": "20020020023",
         "debitMasterAccount": "20020020023",
         "debitResult": "OK",
         "creditSubAccount": "2704028550",
         "creditMasterAccount": "2704028550",
         "creditResult": "OK",
         "rail": "Wires",
         "railId": "payment/44f089c0-1615-4c93-bf51-acc300f5297c",
         "amount": "7350"
}    ]
}
```
:::


[title] Cancel request
[path] Payments/Instant payments/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Rtp.Payment.Canceled](docId\:ffGq2OHYEbWPzn2old6Mc)&#x20;

## API reference

Cancels a payment request if a credit transfer or payment request response has not been received.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/v1/payments/{id}/payment-request/cancel",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/payment-request/cancel",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "oxrdNiU1-Dt00ZXdeyI99",
        "language": "curl",
        "code": "curl --location --globoff '/v1/payments/{id}/payment-request/cance/{Id}' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"reasonCode\":\"String\",\"clientIdentifier\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "Ed-Wqzeb9NXa2poyy_JiD",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': '/v1/payments/{id}/payment-request/cance/{Id}',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"reasonCode\": \"String\",\n      \"clientIdentifier\": \"String\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "DLQf4iWN8Gtuo--CW3V5u",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"/v1/payments/{id}/payment-request/cance/{Id}\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "OGL_5eKcZJgVj0vQNnLRX",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"/v1/payments/{id}/payment-request/cance/{Id}\"\n\npayload = json.dumps({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "6r4lqAv8xM7VyJa0pl2Fr",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"/v1/payments/{id}/payment-request/cance/{Id}\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n})\n\nresponse = http.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "JDqUt90Gb00yiyZWPJCVA",
        "language": "curl",
        "code": "curl --location --globoff '/v1/payments/{id}/payment-request/cancel/{Id}' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"reasonCode\":\"String\",\"clientIdentifier\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "aAtwfCASoQ_FQoCftdJIA",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': '/v1/payments/{id}/payment-request/cancel/{Id}',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"reasonCode\": \"String\",\n      \"clientIdentifier\": \"String\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "l9EIiUoQgUUggUsd3SvY6",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"/v1/payments/{id}/payment-request/cancel/{Id}\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "vkQxVdvzdiLeppDjpk34W",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"/v1/payments/{id}/payment-request/cancel/{Id}\"\n\npayload = json.dumps({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "3DyN05uNvlqna7YUDBb8G",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"/v1/payments/{id}/payment-request/cancel/{Id}\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n})\n\nresponse = http.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "6d1-8hl_v0CSk5vDNkFsl",
        "language": "curl",
        "code": "curl --location --globoff '/v1/payments/{id}/payment-request/cancel/{Id}' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"reasonCode\":\"String\",\"clientIdentifier\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "W9bHIQv6h7Gj92E7mg0ar",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': '/v1/payments/{id}/payment-request/cancel/{Id}',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"reasonCode\": \"String\",\n      \"clientIdentifier\": \"String\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "WsA6thtdKHDOpQzPrj_a7",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"/v1/payments/{id}/payment-request/cancel/{Id}\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "9-B7wKRCVIsukuafDHI30",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"/v1/payments/{id}/payment-request/cancel/{Id}\"\n\npayload = json.dumps({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "D5T_3wASn__RoZZy1uO_n",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"/v1/payments/{id}/payment-request/cancel/{Id}\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"reasonCode\": \"String\",\n   \"clientIdentifier\": \"String\"\n})\n\nresponse = http.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "oxrdNiU1-Dt00ZXdeyI99"
  },
  "results": {
    "languages": [
      {
        "id": "ZA7E-VGG1EUptPxfRE3CS",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"9fb39c2f-50da-4012-9cb5-b27a0128870f\",\n  \"originalPaymentId\": \"d41e2e21-4216-4fda-be55-b27a0073d6c8\",\n  \"referenceId\": \"R035O93Z28U23\",\n  \"accountNumber\": \"2532733231\",\n  \"clientIdentifier\": \"string\",\n  \"amount\": 999,\n  \"direction\": \"Outbound\",\n  \"status\": \"Created\",\n  \"paymentType\": \"RequestForPaymentCancellation\",\n  \"source\": \"OpsPortal\",\n  \"transactionAccountContext\": \"NotSubmitted\",\n  \"debtor\": {\n    \"routingNumber\": \"234567891\",\n    \"accountNumber\": \"100000001\",\n    \"name\": \"Counter Party\",\n    \"addressStreetName\": \"123Linwood Aveasdfjal\",\n    \"addressCity\": \"Pine Brook\",\n    \"addressState\": \"NJ\",\n    \"addressPostalCode\": \"07024\",\n    \"addressCountry\": \"US\"\n  },\n  \"creditor\": {\n    \"routingNumber\": \"021214891\",\n    \"accountNumber\": \"2532733231\",\n    \"name\": \"X D\"\n  },\n  \"network\": {\n    \"businessMessageId\": \"B20250204021214273T1BFOV55625377447\",\n    \"messageId\": \"M20250204021214273T1BRWN20370101112\",\n    \"createdAt\": \"2025-02-04T12:59:37.4333356-05:00\",\n    \"numberOfTransactions\": 0,\n    \"interbankSettlementAmount\": 0,\n    \"fromParticipantId\": \"021214273T1\",\n    \"toParticipantId\": \"990000001S1\",\n    \"headerCreationDate\": \"2025-02-04T12:59:37.4333356-05:00\",\n    \"messageCreationDateTime\": \"2025-02-04T12:59:37.4333356-05:00\"\n  },\n  \"assignment\": {\n    \"id\": \"M20250204021214273T1BRWN20370101112\",\n    \"creationDateTime\": \"2025-02-04T12:59:37.4333356-05:00\",\n    \"assignerRoutingNumber\": \"021214891\",\n    \"assigneeRoutingNumber\": \"234567891\"\n  },\n  \"originalMsgRefs\": {\n    \"messageId\": \"M20250204021214273T1BFRP38196091917\",\n    \"messageNameId\": \"pain.013.001.07\",\n    \"creationDateTime\": \"2025-02-04T02:01:46.863-05:00\",\n    \"instructionId\": \"20250204021214273T1B583277205881612\",\n    \"endToEndId\": \"9d7b440fc018462f980db27a0073d6c8\",\n    \"transactionId\": \"20250204021214273T1B583277205881612\",\n    \"clearingSystemRef\": \"001\",\n    \"interbankSettlementAmount\": 999,\n    \"currency\": \"USD\",\n    \"interbankSettlementDate\": \"2025-02-04\"\n  },\n  \"case\": {\n    \"id\": \"M20250204021214273T1BRWN20370101112\",\n    \"creatorRoutingNumber\": \"021214891\",\n    \"originatorName\": \"X D\",\n    \"originatorRoutingNumber\": \"021214891\"\n  },\n  \"transactionInfo\": {\n    \"reasonCode\": \"AC03\"\n  },\n  \"currency\": \"USD\",\n  \"purpose\": \"ENTERED BY #64E4B65B20CF2DD52A39B2CD# - Cancel Request For Payment\",\n  \"wasRefunded\": false,\n  \"wasPaid\": false,\n  \"createdAt\": \"2025-02-04T12:59:37.4333356-05:00\",\n  \"canceledAt\": \"2025-02-04T12:59:37.4333356-05:00\",\n  \"productId\": \"a2eac905-3f73-4cad-aebd-b06e00d945b7\",\n  \"partnerId\": \"f176a518-381f-487b-9507-b06e00d8cd18\",\n  \"lastModifiedAt\": \"2025-02-04T12:59:37.5270995-05:00\",\n  \"sendAttemptCount\": 0,\n  \"discounts\": [],\n  \"awaitingResponse\": false,\n  \"referencedPaymentId\": \"d41e2e21-4216-4fda-be55-b27a0073d6c8\",\n  \"networkPlatform\": \"TCH\"\n}"
      }
    ],
    "selectedLanguageId": "ZA7E-VGG1EUptPxfRE3CS"
  },
  "request": {
    "pathParameters": [
      {
        "name": "Id",
        "kind": "required",
        "type": "string",
        "description": "The payment ID. This first appears in the initial response to canceling a payment request. This ID is in GUID format.",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "reasonCode",
        "kind": "required",
        "type": "string",
        "description": "Reason code for payment request cancellation. Specifies the justification for the cancellation. Please refer to the Request and Response Codes page for more details.",
        "children": []
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "A unique identifier assigned to the payment call or COS record. This value reflects the identifier provided in the original request and helps ensure idempotency.",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The payment ID. This first appears in the initial response to canceling a payment request. This ID is in GUID format."
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The payment ID of the original payment-request. This ID is in GUID format",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "This unique Cross River reference ID starts with the first letter of the payment rail. For Instant Payments, the ID begins with R to reflect the RTP API module.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account initiating the payment request",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier assigned to the payment call or COS record. This value reflects the identifier provided in the original request and helps ensure idempotency.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of payment request in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "operatorCoreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "The Instant Payments-related Cross River system transaction ID",
      "children": []
    },
    {
      "name": "authorizationTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of an authorization transaction created when Cross River receives an inbound credit transfer that refunds a previously sent outbound transfer. This authorization confirms that Cross River can post the transaction to the creditor’s (receiver’s) COS account (e.g., no restrictions or account closures) and allows Cross River to notify the real-time payment network of acceptance.",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the memo post",
      "children": []
    },
    {
      "name": "memoPostRemovedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time the memo post was removed",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Outbound for an outbound payment-request cancellation",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Transaction status:\n\n-Created\n-Pending\n-Processing\n-Completed\n-Rejected\n-Canceled\n-Hold\n-TimedOut\n-Finalizing\n-Failed\n-ResearchRequired\n-Expired\n-Authorized",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Type of payment indicating how the transaction is funded:\n\n-RequestForPaymentCancellation\n",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "The source of the activity:\n-Api",
      "children": []
    },
    {
      "name": "transactionAccountContext",
      "kind": "optional",
      "type": "string",
      "description": "Transaction account context:\n\n-NotSubmitted\n-Pending\n-Processing\n-Complete\n-Reversal\n-MemoPost\n-TimedOut\n-Canceled\n-Rejected\n-AuthOnly\n-NotSet",
      "children": []
    },
    {
      "name": "debtor",
      "kind": "optional",
      "type": "Object",
      "description": "Debtor business/individual information. The recipient of the RfP who will initiate the credit transfer upon authorization. Depending on the configuration, this information may be populated automatically.",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit routing number of the sending financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "birthCity",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth city"
        },
        {
          "name": "birthCountry",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth country. 2-letter country code."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth date. Formatted as yyyy-mm-dd."
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "proxyId",
          "kind": "optional",
          "type": "string",
          "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "10-digit phone number"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "ultimateDebtor",
      "kind": "optional",
      "type": "Object",
      "description": "Ultimate debtor business/individual information. The final party responsible for initiating the credit transfer upon authorization. This information may be populated automatically based on the configuration.",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "privateId",
          "kind": "optional",
          "type": "string",
          "description": "Unique and unambiguous identification of a person, for example, a passport number"
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "creditor",
      "kind": "optional",
      "type": "Object",
      "description": "Creditor business/individual information. The recipient of the payment, typically the party at CRB initiating the RfP. Depending on the configuration, this information may be populated automatically.",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit routing number of the receiving financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "birthCity",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth city"
        },
        {
          "name": "birthCountry",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth country. 2-letter country code."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth date. Formatted as yyyy-mm-dd."
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "proxyId",
          "kind": "optional",
          "type": "string",
          "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "10-digit phone number"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "ultimateCreditor",
      "kind": "optional",
      "type": "Object",
      "description": "Ultimate creditor business/individual information. The final recipient of the payment. Depending on the configuration, this information may be populated automatically.",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "privateId",
          "kind": "optional",
          "type": "string",
          "description": "Unique and unambiguous identification of a person, for example, a passport number"
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "addressStreetNameadd",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "Object",
      "description": "Network information",
      "children": [
        {
          "name": "businessMessageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the business message"
        },
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the message"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Indicates when the payment-request cancellation message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "numberOfTransactions",
          "kind": "optional",
          "type": "Integer",
          "description": "The total count of transactions"
        },
        {
          "name": "interbankSettlementAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The total amount the Debtor FI must pay to the Creditor FI once the Creditor FI accepts the payment instructed by the Credit Transfer message"
        },
        {
          "name": "fromParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "The unique identifier of the participant sending the message on the Instant Payment network platform"
        },
        {
          "name": "toParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "The unique identifier of the participant receiving the message on the Instant Payment network platform"
        },
        {
          "name": "toBranchId",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the specific branch of a financial institution that received the message, used exclusively for routing purposes in Instant Payments"
        },
        {
          "name": "instructingRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Sending bank routing number"
        },
        {
          "name": "instructedRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Receiving bank routing number"
        },
        {
          "name": "headerCreationDate",
          "kind": "optional",
          "type": "string",
          "description": "Internal to CR"
        },
        {
          "name": "messageCreationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time when the payment-request cancellation message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    },
    {
      "name": "assignment",
      "kind": "optional",
      "type": "Object",
      "description": "Assignment details provided when an investigation is initiated. The assigner is the sender of the confirmation, and the assignee is the receiver.",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "A 35-character identifier representing the assignment of an investigation case from the assigner to the assignee"
        },
        {
          "name": "creationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time the item was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "assignerRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the message sender, who is the assigner of the case"
        },
        {
          "name": "assigneeRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the message receiver, who is the assignee of the case"
        }
      ]
    },
    {
      "name": "originalMsgRefs",
      "kind": "optional",
      "type": "Object",
      "description": "Reference details from the original message associated with the transaction",
      "children": [
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Message ID"
        },
        {
          "name": "messageNameId",
          "kind": "optional",
          "type": "string",
          "description": "Message name ID"
        },
        {
          "name": "creationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time the original message was created, formatted as ddThh:mm:ss[.mmm]"
        },
        {
          "name": "instructionId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID of the payment-request cancellation assigned by the instructing agent while it remains in the RTP system."
        },
        {
          "name": "endToEndId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID assigned by the initiating party to identify the transaction"
        },
        {
          "name": "transactionId",
          "kind": "optional",
          "type": "string",
          "description": "A unique GUID-format string that distinctly identifies the transaction and remains unchanged throughout the entire interbank chain"
        },
        {
          "name": "clearingSystemRef",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the reconciliation window during which the credit transfer was settled"
        },
        {
          "name": "interbankSettlementAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The total amount the Debtor FI is required to pay to the Creditor FI once the Creditor FI accepts the payment instructed by the credit transfer message."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the payment"
        },
        {
          "name": "interbankSettlementDate",
          "kind": "optional",
          "type": "string",
          "description": "The date linked to the Reconciliation WindowClosed (clearing system reference). This value is used in instant payments, alongside the clearing system reference, to allocate a credit transfer to a specific reconciliation window."
        }
      ]
    },
    {
      "name": "case",
      "kind": "optional",
      "type": "Object",
      "description": "Case object information",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "A unique identifier for the investigation case related to a Request for Return of Funds"
        },
        {
          "name": "creatorRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the entity that created the investigation case"
        },
        {
          "name": "originatorName",
          "kind": "optional",
          "type": "string",
          "description": "The entity that initiated the Request for Return of Funds"
        },
        {
          "name": "originatorRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "The routing number of the financial institution (FI) that initiated the Request for Return of Funds"
        }
      ]
    },
    {
      "name": "transactionInfo",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the transaction",
      "children": [
        {
          "name": "status",
          "kind": "optional",
          "type": "String",
          "description": "The current status of a single payment instruction within the transaction process"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "A code that specifies the reason a transaction did not complete. Refer to the list of reason codes for details."
        },
        {
          "name": "additionalInfo",
          "kind": "optional",
          "type": "string",
          "description": "Provides supplementary details regarding the status report"
        },
        {
          "name": "reasonProprietary",
          "kind": "optional",
          "type": "string",
          "description": "Indicates the local instrument by using a proprietary code"
        }
      ]
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the payment",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "request. The RDFI does not see this field. ",
      "children": []
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was refunded. True if refunded, otherwise False.",
      "children": []
    },
    {
      "name": "wasPaid",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was received. True if received, otherwise False.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was canceled, formatted as yyyy-mm-ddThh:mm:ss[.mmm]. If the transfer was not canceled, this field will be null.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "The GUID representing the ID of your specific product type associated with the account. This is provided by CR and identifies the CR account involved in the transfer.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "sendAttemptCount",
      "kind": "optional",
      "type": "Integer",
      "description": "The total count of attempts to send the payment-request cancellation",
      "children": []
    },
    {
      "name": "discounts",
      "kind": "optional",
      "type": "Object",
      "description": "Discounts array specifies applicable discounts for this request",
      "children": [
        {
          "name": "type",
          "kind": "optional",
          "type": "string",
          "description": "The type of discount applied.\nPossible values include:\n- DSCT: A standard discount applied to the payment\n- FULL: A full payment discount (for example, early payment incentive)"
        },
        {
          "name": "amount",
          "kind": "optional",
          "type": "Integer",
          "description": "Amount of discount in positive integral cents. For example, write $1.00 as 100."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the discount. For example USD."
        }
      ]
    },
    {
      "name": "awaitingResponse",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether a message response is pending. True if waiting, otherwise False.\n",
      "children": []
    },
    {
      "name": "referencePaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The CR payment ID used to reference cases where a payment-request cancellation is associated with a previous payment-request. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "queuedPaymentExpiresAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time that a queued payment will expire (payment canceled) if the receiving FI is offline, in this format: yyyy-mm-ddThh:mm:ss[.mmm]. Not sent to TCH/Fed.",
      "children": []
    },
    {
      "name": "limitsEligibleOn",
      "kind": "optional",
      "type": "string",
      "description": "The validation performed when originating a payment to ensure it falls within the partner's daily limit. This is an internal Cross River field, with the date and time formatted as yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "networkPlatform",
      "kind": "optional",
      "type": "string",
      "description": "The payment network platform used to process the payment. Possible values are: TCH (for RTP via The Clearing House).",
      "children": []
    },
    {
      "name": "queuedPaymentExpiresAfter",
      "kind": "optional",
      "type": "integer",
      "description": "The time interval (in seconds) after which a queued payment will expire if the receiving FI remains offline. This is not sent to TCH or Fed.\n\nIf both queuedPaymentExpiresAt and this attribute are provided, this attribute will take precedence. [preferred by Cross River]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtpv1paymentsidpayment-requestcancel",
  "legacyHash": "TegUtzw0I7-FkOzLmntxE"
}
```
:::

:::hint{type="info"}
Refer to [Request and response codes: Instant payments](docId\:i1MCoCYNv8NOKPkqFQ1Gb)  for a complete list of `reason code`values.
:::


[title] Card token
[path] Payments/Card payments/Card Tokens APIs/

## API reference

Retrieves the information for multiple card tokens using multiple filter parameters if needed

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardpayments/v1/cardtokens",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/cardtokens",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "ZneZqxUJkzI4OYU-2JQxR",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardpayments/v1/cardtokens' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer token'"
      },
      {
        "id": "iNQYMTaHNdSH2rEwtGJmG",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardpayments/v1/cardtokens',\n  'headers': {\n    'Accept': 'application/json',\n    'Authorization': 'Bearer token'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();"
      },
      {
        "id": "mVZ1ZkTV_TXm-lXjk_6Hg",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Accept': 'application/json',\n  'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsIng1dCI6IkJSSVlRbmpPXzZac3JSR1dqb2JBNmR2XzNpVSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lkcHRlc3QuY3JiY29zLmNvbSIsIm5iZiI6MTc3NjA3NjQxOCwiaWF0IjoxNzc2MDc2NDE4LCJleHAiOjE3NzYwNzgyMTgsImF1ZCI6WyJodHRwczovL2FwaS5jcmJjb3MuY29tLyIsImh0dHBzOi8vaWRwdGVzdC5jcmJjb3MuY29tL3Jlc291cmNlcyJdLCJzY29wZSI6WyJvcGVuaWQiLCJodHRwczovL2FwaS5jcmJjb3MuY29tLyJdLCJhbXIiOlsiZXh0ZXJuYWwiXSwiY2xpZW50X2lkIjoiY29zZXhwbG9yZXJ1aSIsInN1YiI6ImNjY2E0OTUwLTY3MmEtNDhmZS1iNzUyLTZjNjNmZDFiNjk2ZSIsImF1dGhfdGltZSI6MTc3NjA3NjQxNywiaWRwIjoiQ1JCRW50cmFBY2NvdW50IiwibmFtZSI6InJub3JtaWxlIiwiZ2l2ZW5fbmFtZSI6IlJldXZlbiIsInJvbGUiOlsiVlBOIEFjY2VzcyIsInNlY0RldnNBbGwiLCJkZXZTZWMuRXh0LkRldiIsInNlY0NhcmRBY2Nlc3MiLCIhRGV2ZWxvcGVycyIsInNlY1JvbGVDT1NTYngiLCJzZWNBcmdvQ0RWaWV3ZXJzIiwic2VjUm9sZUNPU0RldiIsInNlY0FXU19SRFAiLCJTZWNBV1NfV1NQIiwic2VjQ2xhdWRlQ29kZURldmVsb3BlcnMiLCJkZXZTZWMuSW50LkRldiJdLCJzaWQiOiJBMEVDNDYzRjhGMzE0RjM0MzdGMUQ2OEY5NjgyMjNDQiIsImp0aSI6IkE0RTA4N0VFRUIyODNBNENGNTE0RUNGMDk3MUMxNEIyIn0.QLxmFznRw6J4XX3b3i7Z9L_f9bF3cS7qykLtj5U6WcTSQG5BYWNsX37YG5UCKTpjWZBEeZH2svFlLHomr_hXBioSkdT2P8q78yMDnc0QHk4E4_jsF7zKAYFtKzMAC8aN2TRUgk-X5uh592WIOMrzi2j1CVP8S_KnL2voabn8KYcqpQ6BnxEQUXxNjGFv3monJtYqHqcrUWiTwMXhG4hIhCWInDnSElhzhf5-5aUS0QBG703qx5oErPg4mPBVoa9wZFDQi9Fa-K0VwOwWcmg6TFbC8E-xKlJUDeXT-07LRaUJCm_k8yocVdaCusevyUO4B-3m0xfkZ1KmuFJGGikPfQ'\n}\nconn.request(\"GET\", \"/cardpayments/v1/cardtokens\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "p6oxzzFuOsJK6lGFA0ZgT",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardpayments/v1/cardtokens\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer token\"\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "u6cw6DOhkC0VuFfFJY8pd",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardpayments/v1/cardtokens\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer token\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "ZneZqxUJkzI4OYU-2JQxR"
  },
  "results": {
    "languages": [
      {
        "id": "zSKeGucw0Ij9uNyBPihiv",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"759f4eab-5400-4e25-9815-b4af0085684e\",\n            \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n            \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n            \"accountNumber\": \"2113556886\",\n            \"masterAccountNumber\": \"2113556886\",\n            \"token\": \"39A99D770B354E63AC4EFAF64E757F24000000\",\n            \"rail\": \"VisaDirect\",\n            \"cardType\": \"Debit\",\n            \"productType\": \"Unknown\",\n            \"authorizationStatus\": \"Approved\",\n            \"statusReasonCode\": \"00\",\n            \"statusReasonDescription\": \"Approved and completed successfully\",\n            \"isAuthorized\": true,\n            \"firstName\": \"Bob\",\n            \"lastName\": \"Bobbie\",\n            \"address\": {\n                \"street1\": \"101 Main Street\",\n                \"street2\": \"More address info\",\n                \"city\": \"New York\",\n                \"state\": \"NY\",\n                \"postalCode\": \"07666\",\n                \"countryCode\": \"US\"\n            },\n            \"isAddressVerified\": true,\n            \"addressVerificationDetails\": {\n                \"avsResponseCode\": \"Y\",\n                \"cvv2ResultCode\": \"M\",\n                \"isCVVMatched\": true\n            },\n            \"accountNameInquiryUsed\": \"Used\",\n            \"accountNameInquiryResult\": \"Match\",\n            \"nameVerificationDetails\": {\n                \"lastNameVerificationStatus\": \"Match\",\n                \"firstNameVerificationStatus\": \"Match\",\n                \"middleNameVerificationStatus\": \"Match\",\n                \"nameVerificationProcessingResult\": \"Name Match Performed\"\n            },\n            \"phone\": \"2015551212\",\n            \"emailAddress\": \"mmm@xxx.com\",\n            \"binNumber\": \"411111\",\n            \"panLastFour\": \"1111\",\n            \"expirationMonth\": 12,\n            \"expirationYear\": 2030,\n            \"cardFingerprint\": \"7BleaDLyA+3nxDUkoX6WjE0GKUHvEniZuoJFFjVd0muNYH4P3VOoV0w5LX3JW4h75OMx50mIRTS6xnpcxLX/2w==\",\n            \"isExpired\": false,\n            \"cardBrand\": \"Visa\",\n            \"capabilities\": {\n                \"fastFundsSupported\": true,\n                \"domesticPushEnabled\": true,\n                \"domesticPullEnabled\": true,\n                \"internationalPushEnabled\": true,\n                \"internationalPullEnabled\": true\n            },\n            \"issuerCountryCode\": \"US\",\n            \"clientIdentifier\": \"string\",\n            \"createdAt\": \"2026-08-23T04:05:43.3-04:00\",\n            \"isActive\": true,\n            \"authorizedAt\": \"2026-08-23T04:05:43.597-04:00\",\n            \"lastModifiedAt\": \"2026-08-23T04:05:43.5968251-04:00\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 1,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": false\n}",
        "customLabel": ""
      },
      {
        "id": "W5Gl11RtUiB7WeXh6Hp_d",
        "language": "400",
        "code": "{\n   \"errors\": [\n     {\n       \"code\": 0,\n       \"message\": \"string\"\n     } \n   ] \n}    ",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zSKeGucw0Ij9uNyBPihiv"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "from",
        "kind": "optional",
        "type": "string",
        "description": "Date-time from for the search",
        "": "string"
      },
      {
        "name": "to",
        "kind": "optional",
        "type": "string",
        "description": "Date-time to for the search",
        "": "Date-time to for the search"
      },
      {
        "name": "firstName",
        "kind": "optional",
        "type": "string",
        "description": "First name",
        "": "First name"
      },
      {
        "name": "lastName",
        "kind": "optional",
        "type": "string",
        "description": "Last name",
        "": "Last name"
      },
      {
        "name": "partnerId",
        "kind": "optional",
        "type": "string",
        "description": " A UUID that identifies the partner, as defined in COS.",
        "": " A UUID that identifies the partner, as defined in COS."
      },
      {
        "name": "productId",
        "kind": "optional",
        "type": "string",
        "description": "A UUID that identifies the product, as defined in COS.",
        "": "A UUID that identifies the product, as defined in COS."
      },
      {
        "name": "status",
        "kind": "optional",
        "type": "string",
        "description": "Will be one of the following:\n- NotRequired\n- New\n- Pending\n- Approved\n- Rejected\n- Failed",
        "": "Will be one of the following:\n- NotRequired\n- New\n- Pending\n- Approved\n- Rejected\n- Failed"
      },
      {
        "name": "cardBrand",
        "kind": "optional",
        "type": "string",
        "description": "Will be one of the following:\n- AmericanExpress\n- ChinaUnionPay\n- Dankort\n- DinersClub\n- Discover\n- Hipercard\n- JCB\n- Laser\n- Maestro\n- MasterCard\n- RuPay\n- Solo\n- Switch\n- Visa\n- Unknown",
        "": "Will be one of the following:\n- AmericanExpress\n- ChinaUnionPay\n- Dankort\n- DinersClub\n- Discover\n- Hipercard\n- JCB\n- Laser\n- Maestro\n- MasterCard\n- RuPay\n- Solo\n- Switch\n- Visa\n- Unknown"
      },
      {
        "name": "issuerCountryCode",
        "kind": "optional",
        "type": "string",
        "description": "A string representing the country code of the card issuer.",
        "": "A string representing the country code of the card issuer."
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "A string that identifies the client associated with the token. Max 50 characters",
        "": "A string that identifies the client associated with the token. Max 50 characters"
      }
    ],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID of the card token you want to retrieve"
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the partner, as defined in COS."
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the product, as defined in COS."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number"
    },
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The master account number that the card token's account belongs to. If `accountNumber` is a sub-account, this is the parent account it rolls up to; otherwise the two values are the same."
    },
    {
      "name": "token",
      "kind": "optional",
      "type": "string",
      "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters). "
    },
    {
      "name": "rail",
      "kind": "optional",
      "type": "string",
      "description": "The processor that communicates with the card network:\n\n- McSend\n- TabaPay\n- VisaDirect"
    },
    {
      "name": "cardType",
      "kind": "optional",
      "type": "string",
      "description": "The kind of payment card:\n\n- Credit\n- Debit\n- Prepaid\n- Combo\n- ChargeCard\n- DeferredDebit\n- VisaPlus\n- Unknown"
    },
    {
      "name": "productType",
      "kind": "optional",
      "type": "string",
      "description": "Cardholder card type:\n\n- Consumer\n- Commercial\n- Government\n- Business\n- Unknown"
    },
    {
      "name": "authorizationStatus",
      "kind": "optional",
      "type": "string",
      "description": "Responses can be:\n- NotRequired\n- New\n- Pending\n- Approved\n- Rejected\n- Failed"
    },
    {
      "name": "statusReasonCode",
      "kind": "optional",
      "type": "string",
      "description": "A code indicating the reason for certain statuses, particularly useful in rejections or failures."
    },
    {
      "name": "statusReasonDescription",
      "kind": "optional",
      "type": "string",
      "description": "A description explaining the reason code."
    },
    {
      "name": "isAuthorized",
      "kind": "optional",
      "type": "boolean",
      "description": "An indicator on whether or not the card token is authorized"
    },
    {
      "name": "firstName",
      "kind": "optional",
      "type": "string",
      "description": "First name. Min 1 character, max 35 characters"
    },
    {
      "name": "middleName",
      "kind": "optional",
      "type": "string",
      "description": "Middle name. Min 1 character, max 35 characters",
      "children": []
    },
    {
      "name": "lastName",
      "kind": "optional",
      "type": "string",
      "description": "Last name. Min 1 character, max 35 characters"
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "object",
      "description": "Address of card holder",
      "children": [
        {
          "name": "street1",
          "kind": "optional",
          "type": "string",
          "description": "Street address line 1. Max length 60"
        },
        {
          "name": "street2",
          "kind": "optional",
          "type": "string",
          "description": "Street address line 2. Max length 60"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Name of the city. Max length 60"
        },
        {
          "name": "state",
          "kind": "optional",
          "type": "string",
          "description": "State code. 2 characters"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Max 10 characters"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code"
        }
      ]
    },
    {
      "name": "isAddressVerified",
      "kind": "optional",
      "type": "boolean",
      "description": "An indicator on whether or not the address was verified"
    },
    {
      "name": "addressVerificationDetails",
      "kind": "optional",
      "type": "object",
      "description": "Detailed results from Address Verification Service (AVS) and CVV2 verification performed during card authorization",
      "children": [
        {
          "name": "avsResponseCode",
          "kind": "optional",
          "type": "string",
          "description": "AVS response code from the card network (e.g., 'Y' for match, 'N' for no match). Max 10 characters"
        },
        {
          "name": "avsResponseDesc",
          "kind": "optional",
          "type": "string",
          "description": "Human-readable description of the AVS response. Max 255 characters"
        },
        {
          "name": "cvv2ResultCode",
          "kind": "optional",
          "type": "string",
          "description": "CVV2 verification result code from the card network. Max 10 characters"
        },
        {
          "name": "isCVVMatched",
          "kind": "optional",
          "type": "boolean",
          "description": "Indicates whether the CVV2 provided matched the card on file"
        }
      ]
    },
    {
      "name": "accountNameInquiryUsed",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether Cross River tried to contact the ANI service. This attribute value will also let you know if the merchant isn't configured for the ANI service. In that case, we recommend contacting your Cross River relationship manager for details on how to connect to ANI.",
      "children": []
    },
    {
      "name": "accountNameInquiryResult",
      "kind": "optional",
      "type": "string",
      "description": "Indicates whether the initiator-provided card details match fully, partially, or not at all, or if they are unknown. Possible values are:\nMatch\nNo Match\nPartial Match\nUnknown",
      "children": []
    },
    {
      "name": "nameVerificationDetails",
      "kind": "optional",
      "type": "object",
      "description": "Acquirer Network Information (ANI) results for cardholder name verification performed during card authorization",
      "children": [
        {
          "name": "lastNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the last name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "firstNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the first name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "middleNameVerificationStatus",
          "kind": "optional",
          "type": "string",
          "description": "Verification status for the middle name (e.g., 'MATCH', 'NO_MATCH', 'NOT_CHECKED')"
        },
        {
          "name": "nameVerificationProcessingResult",
          "kind": "optional",
          "type": "string",
          "description": "Overall processing result for name verification (e.g., 'SUCCESS', 'FAILED')"
        }
      ]
    },
    {
      "name": "phone",
      "kind": "optional",
      "type": "string",
      "description": "Valid phone number"
    },
    {
      "name": "emailAddress",
      "kind": "optional",
      "type": "string",
      "description": "Valid email address"
    },
    {
      "name": "binNumber",
      "kind": "optional",
      "type": "string",
      "description": "The first 4 digits on the card. This identification number indicates the card-issuing bank."
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "Last 4 digits of PAN "
    },
    {
      "name": "expirationMonth",
      "kind": "optional",
      "type": "integer",
      "description": "Two-digit month. Credit cards expire at the end of the month written on the card"
    },
    {
      "name": "expirationYear",
      "kind": "optional",
      "type": "integer",
      "description": "Two-digit year"
    },
    {
      "name": "cardFingerprint",
      "kind": "optional",
      "type": "string",
      "description": "A consistent, opaque identifier for a card without exposing any PAN-related data or risking reversibility",
      "children": []
    },
    {
      "name": "isExpired",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the card is expired"
    },
    {
      "name": "cardBrand",
      "kind": "optional",
      "type": "string",
      "description": "Will be one of the following:\n- AmericanExpress\n- ChinaUnionPay\n- Dankort\n- DinersClub\n- Discover\n- Hipercard\n- JCB\n- Laser\n- Maestro\n- MasterCard\n- RuPay\n- Solo\n- Switch\n- Visa\n- Unknown"
    },
    {
      "name": "capabilities",
      "kind": "optional",
      "type": "object",
      "description": "Capabilities are the actions permitted to do on a specific card, these are returned from the rails when the card is authorized",
      "children": [
        {
          "name": "fastFundsSupported",
          "kind": "optional",
          "type": "boolean",
          "description": "Card network can move the funds to the card immediately"
        },
        {
          "name": "domesticPushEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to push within the US"
        },
        {
          "name": "domesticPullEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to pull within the US"
        },
        {
          "name": "internationalPushEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to push internationally- outside of the US"
        },
        {
          "name": "internationalPullEnabled",
          "kind": "optional",
          "type": "boolean",
          "description": "Enabled to pull internationally- outside of the US. \nNote: internationalPullEnabled - IS NOT YET SUPPORTED ACROSS ALL OF THE RAILS"
        }
      ]
    },
    {
      "name": "issuerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "ISO country of issuer. Used for domestic/international logic & compliance"
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "User reference id. Max 50 characters"
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When token was created"
    },
    {
      "name": "isActive",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the card is active "
    },
    {
      "name": "authorizedAt",
      "kind": "optional",
      "type": "string",
      "description": "When authorized"
    },
    {
      "name": "deActivatedAt",
      "kind": "optional",
      "type": "string",
      "description": "When deactivated"
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Last update timestamp"
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cardpaymentsv1cardtokens",
  "legacyHash": "9y8nY6hXnA0SH30wL5ti6"
}
```
:::


[title] 
[path] Payments/ACH/APIs/


[title] Request and response codes: Card payments
[path] Payments/Card payments/

## Network Identifications

|    | Network name        | EST Cutoff time |
| -- | ------------------- | --------------- |
| 1  | **Domestic**        |                 |
| 2  | Accel/Exchange      | 15:59:59        |
| 3  | Interlink           | 5:59:59         |
| 4  | ET                  | 00:59:59        |
| 5  | Mastercard/ Maestro | 17:29:59        |
| 6  | MoneySend           | 01:59:59        |
| 7  | NYCE                | 15:29:59        |
| 8  | PULSE               | 00:59:59        |
| 9  | RPPS                | 16:59:59        |
| 10 | STAR                | 17:59:59        |
| 11 | Visa/Plus           | 5:59:59         |
| 12 | **International**   |                 |
| 13 | VisaIntl            |                 |
| 14 | IntlMasterCard      |                 |

## Purpose of payment (PoP) codes

International transactions in the following countries require `purposeOfPayment` values in the transaction request:

- Argentina
- Bangladesh
- Chile
- Columbia
- Egypt
- India
- Mexico

| Code   | Description                                                                            |
| ------ | -------------------------------------------------------------------------------------- |
| ISACCT | Account management                                                                     |
| ISAIRB | Air transport related business                                                         |
| ISALLW | Transaction is the payment of allowance                                                |
| ISANNI | Settlement of annuity                                                                  |
| ISBENE | Unemployment disability benefit                                                        |
| ISBEXP | Business expenses                                                                      |
| ISBONU | Bonus payment                                                                          |
| ISBUSB | Bus transport related business                                                         |
| ISCASH | Cash management transfer                                                               |
| ISCBTV | Payment of cable TV bill                                                               |
| ISCCHD | Government institute issued related to cash compensation, helplessness, and disability |
| ISCCRD | Credit card payment                                                                    |
| ISCDBL | Payment of credit card bill                                                            |
| ISCHAR | Payment for charity reasons                                                            |
| ISCOLL | Collection payment                                                                     |
| ISCOMC | Commercial payment                                                                     |
| ISCOMM | Commission                                                                             |
| ISCOMP | Compensation relating to interest loss / value date adjustment and can include fees    |
| ISCPYR | Payment of copyright                                                                   |
| ISDCRD | Related to a debit card payment                                                        |
| ISDEPT | Payment of a deposit                                                                   |
| ISDIVD | Payment of dividend                                                                    |
| ISEDUC | Payment of study / tuition fees                                                        |
| ISELEC | Payment of electricity bill                                                            |
| ISENRG | Energies                                                                               |
| ISFEES | General fees                                                                           |
| ISFERB | Payment for ferry related business                                                     |
| ISFREX | Foreign exchange                                                                       |
| ISGASB | Payment of gas bill                                                                    |
| ISGFRP | Compensation to unemployed persons during insolvency procedures                        |
| ISGOVT | Government payment                                                                     |
| ISHLTI | Health insurance                                                                       |
| ISICCP | Reimbursement of credit card payment                                                   |
| ISIDCP | Reimbursement of debit card payment                                                    |
| ISINPC | Payment of car insurance premium                                                       |
| ISINSC | Transaction is related to the payment of an insurance claim                            |
| ISINSM | Installment                                                                            |
| ISINSU | Insurance premium                                                                      |
| ISINVS | Payment of mutual funds, investment products and shares                                |
| ISINTC | Intra-company payment                                                                  |
| ISINTE | Interest                                                                               |
| ISINTX | Income tax                                                                             |
| ISINVS | Investment                                                                             |
| ISLBRI | Labor insurance                                                                        |
| ISLICF | License fee                                                                            |
| ISLIFI | Life insurance                                                                         |
| ISLOAN | Loan                                                                                   |
| ISMDCS | Medical services                                                                       |
| ISMP2B | Mobile P2B payment                                                                     |
| ISMP2P | Mobile P2P payment                                                                     |
| ISMTUP | Mobile top up                                                                          |
| ISNOWS | Not otherwise specified                                                                |
| ISOTHR | Other                                                                                  |
| ISOTLC | Transaction is related to a payment of another telecom-related bill                    |
| ISPAYR | Payroll                                                                                |
| ISPEFC | Contribution to pension fund                                                           |
| ISPENS | Pension payment                                                                        |
| ISPHON | Payment of telephone bill                                                              |
| ISPPTI | Property insurance                                                                     |
| ISRELG | Transaction is for general rental / lease                                              |
| ISPENS | The payment of rent                                                                    |
| ISRLWY | Payment for railway transport related business                                         |
| ISROYA | Royalties                                                                              |
| ISSALA | Salary payment                                                                         |
| ISSAVG | Payment to savings / retirement account                                                |
| ISSECU | Securities                                                                             |
| ISSSBE | Social security benefit                                                                |
| ISSTDY | Study                                                                                  |
| ISSUBS | Subscription                                                                           |
| ISSUPP | Supplier payment                                                                       |
| ISTAXR | Refund of a tax payment or obligation                                                  |
| ISTAXS | Tax payment                                                                            |
| ISTBIL | Transaction is related to a payment of telecommunications related bill                 |
| ISTRAD | Trade services operation                                                               |
| ISTREA | Treasury payment                                                                       |
| ISTRPT | Payment for travel                                                                     |
| ISUBIL | Utility bill payment                                                                   |
| ISVATX | Value added tax payment                                                                |
| ISWHLD | Withholding                                                                            |
| ISWTER | Payment of water bill                                                                  |

## Card issuer response codes table

When adding a card the the following `response code` will be received in the response body.&#x20;

Combined response codes from Visa and Mastercard networks. These are primarily ISO 8583 standard codes used across card payment networks. Some codes are not supported by some networks. The checkmark indicates if this code is one that is returned by either Visa or MC.

| Code | Description                                                                                                                                       | Category              | Suggested Action                                                                                                                                                                                                                                       | Visa | MC | ISO 8583 |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---- | -- | -------- |
| 00   | Approved                                                                                                                                          | Approval              |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 01   | Refer to card issuer                                                                                                                              | Referral              |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 02   | Refer to card issuers special conditions                                                                                                          | Referral              |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 03   | Invalid merchant                                                                                                                                  | Decline - Card        | Do not try the transaction again immediately. Contact: [p2p.support@crossriver.com](mailto\:p2p.support@crossriver.com).                                                                                                                               | ✓    | ✓  | ✓        |
| 04   | Pickup                                                                                                                                            | Decline - Card        | Trying again is not permitted with the same PAN or token. Ask for an alternate payment method from the customer and/or advise the cardholder to contact their issuer.                                                                                  | ✓    | ✓  | ✓        |
| 05   | Do not honor                                                                                                                                      | Decline - Card        | Advise the cardholder to contact their issuer.                                                                                                                                                                                                         | ✓    | ✓  | ✓        |
| 06   | General error                                                                                                                                     | System                |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 07   | Pickup card, special conditions                                                                                                                   | Decline - Card        |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 08   | Honor with identification                                                                                                                         | Approval              |                                                                                                                                                                                                                                                        |      | ✓  | ✓        |
| 09   | Request in progress                                                                                                                               | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 10   | Partial amount approved                                                                                                                           | Approval              |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 11   | VIP approval                                                                                                                                      | Approval              |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 12   | Invalid transaction                                                                                                                               | Decline - Transaction | Trying again is not permitted. Check for potential fraud or issues with the merchant terminal. 1) Review these fields for possible failure conditions:` CVV` or `Card Authorization Result` 2) Check for potential fraud.                              | ✓    | ✓  | ✓        |
| 13   | Invalid amount (currency conversion field overflow) or amount exceeds maximum for card program                                                    | Decline - Transaction |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 14   | Invalid account number (no such number)                                                                                                           | Decline - Card        | Trying again is not permitted with the same PAN or token. 1) Check card details or reauthorize the card. 2) Check for potential fraud                                                                                                                  | ✓    | ✓  | ✓        |
| 15   | No such issuer                                                                                                                                    | Decline - Card        | 1. Trying again is not allowed with the same PAN or token. 2. Check the account number again for accuracy. 3. Check for potential fraud                                                                                                                | ✓    | ✓  | ✓        |
| 16   | Approved, update track 3                                                                                                                          | Approval              |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 17   | Customer cancellation                                                                                                                             | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 18   | Customer dispute                                                                                                                                  | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 19   | Re-enter transaction                                                                                                                              | System                |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 20   | Invalid response                                                                                                                                  | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 21   | No action taken                                                                                                                                   | System                |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 22   | Suspected malfunction                                                                                                                             | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 23   | Unacceptable transaction fee                                                                                                                      | Decline - Transaction |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 24   | File update not supported by receiver                                                                                                             | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 25   | Unable to locate record on file                                                                                                                   | System                |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 26   | Duplicate file update record, old record replaced                                                                                                 | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 27   | File update field edit error                                                                                                                      | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 28   | File is temporarily unavailable                                                                                                                   | System                |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 29   | File update not successful, contact acquirer                                                                                                      | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 30   | Format error                                                                                                                                      | System                | Contact: [p2p.support@crossriver.com](mailto\:p2p.support@crossriver.com).                                                                                                                                                                             |      | ✓  | ✓        |
| 31   | Bank not supported                                                                                                                                | System                | Contact: [p2p.support@crossriver.com](mailto\:p2p.support@crossriver.com).                                                                                                                                                                             |      |    | ✓        |
| 32   | Completed partially                                                                                                                               | Approval              |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 33   | Expired card                                                                                                                                      | Decline - Card        |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 34   | Suspected fraud                                                                                                                                   | Decline - Security    |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 35   | Card acceptor, contact acquirer                                                                                                                   | Decline - Transaction |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 36   | Restricted card                                                                                                                                   | Decline - Card        |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 37   | Card acceptor, call acquirer security                                                                                                             | Decline - Security    |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 38   | Allowed PIN - tries exceeded                                                                                                                      | Decline - Security    |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 39   | No credit account                                                                                                                                 | Decline - Card        |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 40   | Requested function not supported                                                                                                                  | Decline - Transaction | Contact: [p2p.support@crossriver.com](mailto\:p2p.support@crossriver.com).                                                                                                                                                                             |      |    | ✓        |
| 41   | Merchant should retain card (card reported lost)                                                                                                  | Decline - Card        |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 42   | No universal account                                                                                                                              | Decline - Card        |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 43   | Merchant should retain card (card reported stolen)                                                                                                | Decline - Card        | Trying again is not permitted with the same PAN or token. Ask for an alternate payment method from the customer and/or advise the cardholder to contact their issuer.                                                                                  | ✓    | ✓  | ✓        |
| 46   | Closed account                                                                                                                                    | Decline - Card        |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 51   | Insufficient funds                                                                                                                                | Decline - Funds       | Merchant can try again for a lesser amount, or they can try again later. This allows the cardholder to fund their debit account or pay down their credit account. Merchants can reduce NSF declines by implementing the Partial Authorization service. | ✓    | ✓  | ✓        |
| 52   | No checking account                                                                                                                               | Decline - Funds       | Advise the cardholder to contact their issuer.                                                                                                                                                                                                         | ✓    |    | ✓        |
| 53   | No savings account                                                                                                                                | Decline - Funds       |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 54   | Expired card                                                                                                                                      | Decline - Card        | 1) Check the expiration date before trying again. 2) Look out for potential fraud happening through repeated attempts or from suspicious activity.                                                                                                     | ✓    | ✓  | ✓        |
| 55   | Incorrect PIN                                                                                                                                     | Decline - Security    | 1. Try again with a valid value (re-enter PIN). 2. Retry failed transactions as non-PIN, if possible (POS).                                                                                                                                            | ✓    | ✓  | ✓        |
| 56   | No card record                                                                                                                                    | Decline - Card        |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 57   | Transaction not permitted for cardholder                                                                                                          | Decline - Card        | Trying again is not permitted with the same PAN or token. Ask for an alternate payment method from the customer and/or advise the cardholder to contact their issuer.                                                                                  | ✓    | ✓  | ✓        |
| 58   | Transaction not allowed at terminal                                                                                                               | Decline - Transaction | Contact: [p2p.support@crossriver.com](mailto\:p2p.support@crossriver.com).                                                                                                                                                                             | ✓    | ✓  | ✓        |
| 59   | Suspected fraud                                                                                                                                   | Decline - Security    | Advise the cardholder to contact their issuer. Try again with the same PAN or token after the cardholder confirms.                                                                                                                                     | ✓    |    | ✓        |
| 61   | Activity amount limit exceeded                                                                                                                    | Decline - Funds       | To allow the limits to reset, don't retry the transaction the same day. Advise the cardholder to call their issuing bank to find out the limit and reason for the decline.                                                                             | ✓    | ✓  | ✓        |
| 62   | Restricted card - for example, in country exclusion table                                                                                         | Decline - Card        | We don't recommend trying again immediately with the same PAN or token. Try again after the customer confirms the restriction has been removed.                                                                                                        | ✓    | ✓  | ✓        |
| 63   | Security violation                                                                                                                                | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 64   | Transaction does not fulfill AML requirement                                                                                                      | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 65   | Activity count limit exceeded                                                                                                                     | Decline - Funds       | To allow the limits to reset, don't try the transaction again the same day. Advise the cardholder to contact their issuer.                                                                                                                             | ✓    | ✓  | ✓        |
| 68   | Response received too late                                                                                                                        | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 70   | PIN data required                                                                                                                                 | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 71   | PIN Not Changed                                                                                                                                   | Decline - Security    |                                                                                                                                                                                                                                                        |      | ✓  | ✓        |
| 74   | Different value than that used for PIN encryption errors                                                                                          | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 75   | Allowable number of PIN entry tries exceeded                                                                                                      | Decline - Security    | 1) Try again with a valid value (re-enter PIN). 2) If possible, retry failed transactions as non-PIN.                                                                                                                                                  | ✓    | ✓  | ✓        |
| 76   | Unable to locate previous message (no match on retrieval reference)                                                                               | System                |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 77   | Previous message located for a repeat or reversal, but data is inconsistent with original message                                                 | System                |                                                                                                                                                                                                                                                        |      | ✓  | ✓        |
| 78   | "Blocked, first used" (transaction is from a new card and the card wasn't properly unblocked)                                                     | Decline - Card        | If the cardholder confirms that the card has been activated or reactivated, the merchant can try the transaction again.                                                                                                                                | ✓    | ✓  | ✓        |
| 79   | Already reversed (by Switch)                                                                                                                      | System                |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 80   | Visa transactions: credit issuer unavailable - private label and check acceptance: invalid date                                                   | System                |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 81   | PIN cryptographic error found (error found by VIC security module during PIN decryption)                                                          | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 82   | Negative CAM, dCVV, iCVV, or CVV results                                                                                                          | Decline - Security    | Track attempts for potential fraud and check verification values. Focus on CVV.                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 83   | Unable to verify PIN                                                                                                                              | Decline - Security    |                                                                                                                                                                                                                                                        |      | ✓  | ✓        |
| 84   | Invalid Authorization Life Cycle                                                                                                                  | Decline - Transaction |                                                                                                                                                                                                                                                        |      | ✓  | ✓        |
| 85   | No reason to decline a request for account number verification, address verification, CVV2 verification or a credit voucher or merchandise return | Approval              |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 86   | Cannot verify PIN                                                                                                                                 | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 87   | Purchase Amount Only, No Cash Back Allowed                                                                                                        | Decline - Transaction |                                                                                                                                                                                                                                                        |      | ✓  | ✓        |
| 88   | Cryptographic failure                                                                                                                             | Decline - Security    |                                                                                                                                                                                                                                                        |      | ✓  | ✓        |
| 89   | Ineligible to receive financial position information                                                                                              | System                |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 90   | Cutoff is in progress                                                                                                                             | System                |                                                                                                                                                                                                                                                        |      | ✓  | ✓        |
| 91   | Issuer unavailable or switch inoperative (STIP not applicable or available for this transaction)                                                  | System                | In these cases, don't attempt to retry the transaction. Instead, wait until the next day and check the status in the daily settlement file. Contact: [p2p.support@crossriver.com](mailto\:p2p.support@crossriver.com).                                 | ✓    | ✓  | ✓        |
| 92   | Destination can't be found for routing                                                                                                            | System                | Trying again immediately with the same PAN or token is not allowed. Try again after the customer confirms the restriction has been removed.                                                                                                            | ✓    | ✓  | ✓        |
| 93   | Transaction can't be completed, violation of law                                                                                                  | Decline - Transaction |                                                                                                                                                                                                                                                        | ✓    |    | ✓        |
| 94   | Duplicate transmission                                                                                                                            | System                |                                                                                                                                                                                                                                                        | ✓    | ✓  | ✓        |
| 95   | Reconcile error                                                                                                                                   | System                |                                                                                                                                                                                                                                                        |      |    | ✓        |
| 96   | System malfunction, or certain field error conditions                                                                                             | System                | Contact: [p2p.support@crossriver.com](mailto\:p2p.support@crossriver.com).                                                                                                                                                                             | ✓    | ✓  | ✓        |
| 1A   | Additional customer authentication required                                                                                                       | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    |    |          |
| 1Z   | Authorization System or issuer system inoperative                                                                                                 | System                |                                                                                                                                                                                                                                                        |      | ✓  |          |
| 5C   | Transaction not supported/blocked by issuer                                                                                                       | Decline - Transaction |                                                                                                                                                                                                                                                        | ✓    |    |          |
| 6P   | Verification data failed                                                                                                                          | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    |    |          |
| 9G   | Blocked by cardholder/contact cardholder                                                                                                          | Decline - Card        |                                                                                                                                                                                                                                                        | ✓    |    |          |
| B1   | Surcharge amount not permitted on Visa cards (US acquirers only)                                                                                  | Payment Control       |                                                                                                                                                                                                                                                        | ✓    |    |          |
| B2   | Surcharge amount not supported by debit network issuer                                                                                            | Payment Control       |                                                                                                                                                                                                                                                        | ✓    |    |          |
| N0   | Force STIP                                                                                                                                        | System                |                                                                                                                                                                                                                                                        | ✓    |    |          |
| N2   | Transaction does not qualify for Visa PIN                                                                                                         | Decline - Transaction |                                                                                                                                                                                                                                                        | ✓    |    |          |
| N3   | Cash service not available                                                                                                                        | System                |                                                                                                                                                                                                                                                        | ✓    |    |          |
| N4   | Cashback request exceeds issuer limit                                                                                                             | Decline - Funds       |                                                                                                                                                                                                                                                        | ✓    |    |          |
| N5   | Ineligible for resubmission                                                                                                                       | System                |                                                                                                                                                                                                                                                        | ✓    |    |          |
| N7   | Decline for CVV2 failure                                                                                                                          | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    |    |          |
| N8   | Transaction amount exceeds preauthorized approval amount                                                                                          | Decline - Transaction |                                                                                                                                                                                                                                                        | ✓    |    |          |
| P2   | Invalid biller information                                                                                                                        | Decline - Transaction |                                                                                                                                                                                                                                                        |      |    |          |
| P5   | PIN change/unblock request declined                                                                                                               | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    |    |          |
| P6   | Unsafe PIN                                                                                                                                        | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    |    |          |
| Q1   | Card authentication failed                                                                                                                        | Decline - Security    |                                                                                                                                                                                                                                                        | ✓    |    |          |
| R0   | Stop payment order                                                                                                                                | Payment Control       |                                                                                                                                                                                                                                                        | ✓    |    |          |
| R1   | Revocation of authorization order                                                                                                                 | Payment Control       |                                                                                                                                                                                                                                                        | ✓    |    |          |
| R3   | Revocation of all authorization orders                                                                                                            | Payment Control       |                                                                                                                                                                                                                                                        | ✓    |    |          |
| XA   | Forward to issuer                                                                                                                                 | Referral              |                                                                                                                                                                                                                                                        |      |    |          |
| XD   | Forward to issuer                                                                                                                                 | Referral              |                                                                                                                                                                                                                                                        |      |    |          |
| Z3   | Unable to go online                                                                                                                               | System                |                                                                                                                                                                                                                                                        | ✓    |    |          |

## AvsResponseCode and Description

- **Type:** String
- **Description:** The `AvsResponseCode` and `Description` fields indicate the result of the Address Verification System (AVS) check, showing whether the street address and/or postal code provided in the request matched the cardholder's billing address on file with the card issuer.

| Code | Description                                                      |
| ---- | ---------------------------------------------------------------- |
| Y    | Street address AND postal code match                             |
| X    | Street address AND 9-digit ZIP match                             |
| D    | Street address AND postal code match (international)             |
| F    | Street address AND postal code match (UK)                        |
| M    | Street address AND postal code match (international)             |
| A    | Street address matches, postal code does not                     |
| Z    | Postal code matches, street address does not                     |
| W    | Postal code matches, street address does not                     |
| P    | Postal code matches, street address not verified (international) |
| B    | Street address matches, postal code not verified (international) |
| N    | Neither street address nor postal code match                     |
| U    | Address info unavailable (issuer doesn't participate in AVS)     |
| S    | AVS not supported for this card                                  |
| R    | System unavailable or timed out                                  |
| G    | Non-US issuer, address not verified                              |
| I    | Address not verified (international)                             |
| C    | Street address and postal code not verified (international)      |

## Cvv2ResultCode

- **Type:** String
- **Description:** The type of match performed against the CVV, if any

| Code | Meaning                               |
| ---- | ------------------------------------- |
| M    | CVV Match                             |
| N    | CVV No Match                          |
| P    | Not Processed                         |
| S    | Should be on card but couldn't verify |
| U    | Issuer does not participate           |

## IsCVVMatched

- **Type:** Boolean
- **Description:** The overall result on whether or not the CVV provided in the request matched the CVV on file with the card issuer

## Last/First/Middle NameVerificationStatus

- **Type:** String
- **Description:** Indicates whether the cardholder's last/first/middle name provided in the request matched the last name on file with the card issuer

| Code | Meaning       |
| ---- | ------------- |
| 01   | Match         |
| 50   | Partial Match |
| 99   | No Match      |

## NameVerificationProcessingResult

- **Type:** String
- **Description:** Indicates whether Visa Account Name Inquiry or Mastercard Name Verification Service were performed or not, or not supported

| Code | Meaning                  |
| ---- | ------------------------ |
| 00   | Name match performed     |
| 01   | Name match not performed |
| 02   | Name match not supported |


[title] Transactions
[path] Payments/Untitled/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- Core.Transaction.Completed
- Core Transaction.Rejected

## API reference

The Core Transactions API endpoint allows partners to move funds between their accounts. This endpoint effects a book transfer. It is an extended version of the transfer endpoint. It allows you to provide a description and transaction code. In the context of Advanced Authorization, this endpoint is provided for the partner to sync external activity (transactions) into Cross River accounts at the end of each day.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/transactions",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/transactions",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/core/v1/transactions' ^\n-H 'Content-Type: application/json' ^\n-H 'Authorization: Bearer token' ^\n-d '{\n  \"debitAccountNumber\": \"2955057589\",\n  \"creditAccountNumber\": \"2870342504\",\n  \"transactionCode\": \"Account Transfer\",\n  \"description\": \"Settlement Transfer\",\n  \"amount\": 13571,\n  \"currency\": \"usd\",\n  \"clientIdentifier\": \"1988192d-3967-485e-a720-ffef339638ab\",\n  \"flags\": []\n}\n\n\n'",
        "customLabel": ""
      },
      {
        "id": "F-lYjMZnt01fNNdoMWEl4",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/transactions',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer token'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"debitAccountNumber\": \"2955057589\",\n  \"creditAccountNumber\": \"2870342504\",\n  \"transactionCode\": \"Account Transfer\",\n  \"description\": \"Settlement Transfer\",\n  \"amount\": 13571,\n  \"currency\": \"usd\",\n  \"clientIdentifier\": \"1988192d-3967-485e-a720-ffef339638ab\",\n  \"flags\": []\n});\n\nreq.write(postData);\n\nreq.end",
        "customLabel": ""
      },
      {
        "id": "9R0Lv8LxczyelXDyTG268",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/core/v1/transactions\"\n\npayload = json.dumps({\n  \"debitAccountNumber\": \"2955057589\",\n  \"creditAccountNumber\": \"2870342504\",\n  \"transactionCode\": \"Account Transfer\",\n  \"description\": \"Settlement Transfer\",\n  \"amount\": 13571,\n  \"currency\": \"usd\",\n  \"clientIdentifier\": \"1988192d-3967-485e-a720-ffef339638ab\",\n  \"flags\": []\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer token'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "oRMxhRj1Gp38Q8IICNOUa",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/transactions\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer token\"\nrequest.body = JSON.dump({\n  \"debitAccountNumber\": \"2955057589\",\n  \"creditAccountNumber\": \"2870342504\",\n  \"transactionCode\": \"Account Transfer\",\n  \"description\": \"Settlement Transfer\",\n  \"amount\": 13571,\n  \"currency\": \"usd\",\n  \"clientIdentifier\": \"1988192d-3967-485e-a720-ffef339638ab\",\n  \"flags\": []\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "nHillIP3Pdvk4iyTezTng",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/transactions\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"debitAccountNumber\": \"2955057589\",`+\"\n\"+`\n  \"creditAccountNumber\": \"2870342504\",`+\"\n\"+`\n  \"transactionCode\": \"Account Transfer\",`+\"\n\"+`\n  \"description\": \"Settlement Transfer\",`+\"\n\"+`\n  \"amount\": 13571,`+\"\n\"+`\n  \"currency\": \"usd\",`+\"\n\"+`\n  \"clientIdentifier\": \"1988192d-3967-485e-a720-ffef339638ab\",`+\"\n\"+`\n  \"flags\": []`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer token\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"id\": \"3ef99bff-13b6-45cf-b808-b323007e90c2\",\n    \"traceNumber\": \"T25204034048Y94RZ\",\n    \"status\": \"Pending\",\n    \"debit\": {\n        \"transactionType\": \"Debit\",\n        \"accountType\": \"Deposit\",\n        \"masterAccountNumber\": \"2955057589\",\n        \"subAccountNumber\": \"2955057589\",\n        \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n        \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n        \"activityId\": \"f8c46dae-5a12-4f57-a1ea-b323007e90c2\"\n    },\n    \"credit\": {\n        \"transactionType\": \"Credit\",\n        \"accountType\": \"Deposit\",\n        \"masterAccountNumber\": \"2870342504\",\n        \"subAccountNumber\": \"2870342504\",\n        \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n        \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n        \"activityId\": \"47a622fc-c9ae-4390-b411-b323007e90c2\"\n    },\n    \"transactionCode\": \"Account Transfer\",\n    \"amount\": 13571,\n    \"currency\": \"usd\",\n    \"description\": \"Settlement Transfer\",\n    \"rail\": \"Internal\",\n    \"railId\": \"0\",\n    \"clientIdentifier\": \"1988192d-3967-485e-a720-ffef339638ab\",\n    \"flags\": [],\n    \"schedule\": [],\n    \"proposedAt\": \"2025-07-23T03:40:48.6439092-04:00\",\n   ",
        "customLabel": ""
      },
      {
        "id": "3XSbC2ijR_92TYCNhat1K",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2626,\n            \"message\": \"Debit account not found\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "debitAccountNumber",
        "kind": "required",
        "type": "string",
        "description": "One of the two COS Account numbers associated to the Transaction – it refers to the account that is getting the funds debited to credit another account.",
        "": "required"
      },
      {
        "name": "creditAccountNumber",
        "kind": "required",
        "type": "string",
        "description": "One of the two COS Account numbers associated to the Transaction – it refers to the account that is getting funds credited from another account.",
        "": "required"
      },
      {
        "name": "transactionCode",
        "kind": "required",
        "type": "string",
        "description": "An identifier used to describe the type of transaction. Examples of Values (non-exhaustive). See complete list of transaction codes in the requests and response codes page:\n- Account Transfer\n- Deposit\n- Adjustment",
        "": "An identifier used to describe the type of transaction. Examples of Values (non-exhaustive). See complete list of transaction codes in the requests and response codes page:\n- Account Transfer\n- Deposit\n- Adjustment"
      },
      {
        "name": "description",
        "kind": "required",
        "type": "string",
        "description": "A description that will identify the transaction as it gets posted.",
        "": "required"
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "Amount of the transaction in positive integral cents. For example, write $1.00 as 100.",
        "": "integer"
      },
      {
        "name": "currency",
        "kind": "optional",
        "type": "string",
        "description": "Currency of the transfer amount",
        "": "Currency of the transfer amount"
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
        "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes."
      },
      {
        "name": "flags",
        "kind": "optional",
        "type": "array",
        "description": "Array of flags to indicate special information about this transaction. See list of flags and their codes in the requests and response codes page",
        "": "array"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "TransactionInfo",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Transaction identifier for the current transaction. This ID is in GUID format. Sample value: “00000000-0000-0000-0000-000000000000”."
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "A unique alphanumeric identifier assigned to a transaction. This has 17 characters and begins with the letter 'T'.  \nNote: A Core transaction trace number is NOT the same as an ACH payment trace number."
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": "Status of the transaction. Values allowed:\n- Pending\n- Complete\n- Rejected\n- Review\n- Declined\n- Canceled\n- Processing\n"
        },
        {
          "name": "TransactionOperationInfo",
          "kind": "optional",
          "type": "object",
          "description": "Information about the card used.",
          "children": [
            {
              "name": "transactionType",
              "kind": "optional",
              "type": "string",
              "description": "Either:\n- Debit\n- Credit"
            },
            {
              "name": "accountType",
              "kind": "optional",
              "type": "string",
              "description": "Options:\n- GeneralLedger\n- Deposit\n- CreditCard\n- StoredValue\n- Wallet\n- Unknown"
            },
            {
              "name": "masterAccountNumber",
              "kind": "optional",
              "type": "string",
              "description": "Deposit account number associated with the card"
            },
            {
              "name": "subAccountNumber",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "partnerId",
              "kind": "optional",
              "type": "string",
              "description": "Your ID in the Cross River system. This ID is in GUID format."
            },
            {
              "name": "productId",
              "kind": "optional",
              "type": "string",
              "description": "Product ID of the cardholder deposit account. This ID is in the GUID format."
            },
            {
              "name": "activityId",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "result",
              "kind": "optional",
              "type": "object",
              "description": "",
              "children": [
                {
                  "name": "success",
                  "kind": "optional",
                  "type": "string",
                  "description": ""
                },
                {
                  "name": "code",
                  "kind": "optional",
                  "type": "string",
                  "description": ""
                },
                {
                  "name": "message",
                  "kind": "optional",
                  "type": "string",
                  "description": ""
                }
              ]
            }
          ]
        },
        {
          "name": "transactionCode",
          "kind": "optional",
          "type": "string",
          "description": "An identifier used to describe the type of transaction. Examples of Values (non-exhaustive):\n- Account Transfer\n- Deposit\n- Adjustment"
        },
        {
          "name": "amount",
          "kind": "optional",
          "type": "string",
          "description": "Amount of the transaction in positive integral cents. For example, write $1.00 as 100."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "description",
          "kind": "optional",
          "type": "string",
          "description": "A description that will identify the transaction as it gets posted."
        },
        {
          "name": "rail",
          "kind": "optional",
          "type": "string",
          "description": "One of the following:\n- Ach\n- Wires\n- CreditCard\n- DebitCard\n- StoredValue\n- Checks\n- Rtp\n- CardManagement\n- International\n- CardPayments\n- Teller\n- Internal"
        },
        {
          "name": "railId",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "clientIdentifier",
          "kind": "optional",
          "type": "string",
          "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes."
        },
        {
          "name": "flags",
          "kind": "optional",
          "type": "string",
          "description": "Array of flags to indicate special information about this transaction. See list of flags and their codes in the requests and response codes page"
        },
        {
          "name": "schedule",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "proposedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "executedAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "canceledAt",
          "kind": "optional",
          "type": "string",
          "description": "The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "lastModifiedAt",
          "kind": "optional",
          "type": "string",
          "description": "Date and time the card record was last modified. Examples include change of name on the card and change in card status. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-corev1transactions",
  "legacyHash": "PLs3yaCGTP7UJNHm8WbHT"
}
```
:::


[title] Sync Payment Preprocessing
[path] Payments/Card payments/Sync Payments APIs/

## API reference

Send a push or pull preprocessing sync payment

:::ApiMethodV2
```json
{
  "name": "Endpoint: v1/syncpayments/preprocessing",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/syncpayments/preprocessing",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "m2Ue7Qz6dVWcDZ36gKpPo",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/v1/syncpayments/preprocessing' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--data '{\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n  \"accountNumber\": \"7279550514\",\n  \"amount\": 421,\n  \"paymentType\": \"Push\",\n  \"cardId\": \"11FB445C487140A9BEA51457A796172A000000\",\n  \"cardToken\": \"string\",\n  \"businessType\": \"WalletTransfer\"\n}'",
        "customLabel": ""
      },
      {
        "id": "VeeGmwkA_clEzxjzmMBUK",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/v1/syncpayments/preprocessing',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Accept': 'application/json'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n  \"accountNumber\": \"7279550514\",\n  \"amount\": 421,\n  \"paymentType\": \"Push\",\n  \"cardId\": \"11FB445C487140A9BEA51457A796172A000000\",\n  \"cardToken\": \"string\",\n  \"businessType\": \"WalletTransfer\"\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "BP-IjxQK-9xJ_YCWNyGNx",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/v1/syncpayments/preprocessing\"\n\npayload = json.dumps({\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n  \"accountNumber\": \"7279550514\",\n  \"amount\": 421,\n  \"paymentType\": \"Push\",\n  \"cardId\": \"11FB445C487140A9BEA51457A796172A000000\",\n  \"cardToken\": \"string\",\n  \"businessType\": \"WalletTransfer\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "xu3xbbWT_a-_Y7mcgL0S3",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/v1/syncpayments/preprocessing\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Accept\"] = \"application/json\"\nrequest.body = JSON.dump({\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n  \"accountNumber\": \"7279550514\",\n  \"amount\": 421,\n  \"paymentType\": \"Push\",\n  \"cardId\": \"11FB445C487140A9BEA51457A796172A000000\",\n  \"cardToken\": \"string\",\n  \"businessType\": \"WalletTransfer\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "yes-XNvEAr36pmLaxLh_p",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/v1/syncpayments/preprocessing\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{\n  \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n  \"accountNumber\": \"7279550514\",\n  \"amount\": 421,\n  \"paymentType\": \"Push\",\n  \"cardId\": \"11FB445C487140A9BEA51457A796172A000000\",\n  \"cardToken\": \"string\",\n  \"businessType\": \"WalletTransfer\"\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"application/json\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "m2Ue7Qz6dVWcDZ36gKpPo"
  },
  "results": {
    "languages": [
      {
        "id": "qaLRHBp_njcq9NhtL7R3X",
        "language": "200",
        "code": "",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "qaLRHBp_njcq9NhtL7R3X"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "cardId",
        "kind": "optional",
        "type": "string",
        "description": "The identifier for the card token, as defined in COS. ",
        "": "The identifier for the card token, as defined in COS. "
      },
      {
        "name": "cardToken",
        "kind": "optional",
        "type": "string",
        "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters).",
        "": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters)."
      },
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "The identifier for the account, as defined in COS. ",
        "": "The identifier for the account, as defined in COS. "
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "Integer",
        "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
        "children": []
      },
      {
        "name": "paymentType",
        "kind": "required",
        "type": "string",
        "description": "The type of payment. Value is either \"Push\" or \"Pull\"",
        "": "required"
      },
      {
        "name": "correspondingEntity",
        "kind": "optional",
        "type": "object",
        "description": "",
        "": "object",
        "children": [
          {
            "name": "firstName",
            "kind": "required",
            "type": "string",
            "description": "First name. Min 1 character, max 35 characters"
          },
          {
            "name": "lastName",
            "kind": "required",
            "type": "string",
            "description": "Last name. Min 1 character, max 35 characters"
          },
          {
            "name": "externalAccountIdentifier",
            "kind": "required",
            "type": "string",
            "description": "Account number to ensure the money movement is routed to the correct destination."
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "object",
            "description": "Address of card holder",
            "children": [
              {
                "name": "street1",
                "kind": "required",
                "type": "string",
                "description": "Street address line 1. Max length 60"
              },
              {
                "name": "street2",
                "kind": "optional",
                "type": "string",
                "description": "Street address line 2. Max length 60"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Name of the city. Max length 60"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "State code. 2 characters"
              },
              {
                "name": "postalCode",
                "kind": "required",
                "type": "string",
                "description": "Max 10 characters"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          }
        ],
        "schema": [
          {
            "name": "firstName",
            "kind": "required",
            "type": "string",
            "description": "First name. Min 1 character, max 35 characters"
          },
          {
            "name": "lastName",
            "kind": "required",
            "type": "string",
            "description": "Last name. Min 1 character, max 35 characters"
          },
          {
            "name": "externalAccountIdentifier",
            "kind": "required",
            "type": "string",
            "description": "Account number to ensure the money movement is routed to the correct destination."
          },
          {
            "name": "address",
            "kind": "optional",
            "type": "object",
            "description": "Address of card holder",
            "children": [
              {
                "name": "street1",
                "kind": "required",
                "type": "string",
                "description": "Street address line 1. Max length 60"
              },
              {
                "name": "street2",
                "kind": "optional",
                "type": "string",
                "description": "Street address line 2. Max length 60"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Name of the city. Max length 60"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "State code. 2 characters"
              },
              {
                "name": "postalCode",
                "kind": "required",
                "type": "string",
                "description": "Max 10 characters"
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code"
              }
            ]
          }
        ]
      },
      {
        "name": "mcc",
        "kind": "optional",
        "type": "string",
        "description": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card.",
        "": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card."
      },
      {
        "name": "initiatorName",
        "kind": "optional",
        "type": "string",
        "description": "Per-payment merchant/sender name override for the cardholder's bank statement. Max 17 chars",
        "": "initiatorName"
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "A string that identifies the client associated with the payment.",
        "": "A string that identifies the client associated with the payment."
      },
      {
        "name": "businessType",
        "kind": "optional",
        "type": "string",
        "description": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'",
        "": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'"
      },
      {
        "name": "purposeOfPayment",
        "kind": "optional",
        "type": "string",
        "description": "The reason for the transaction. e.g. payroll. Needed for international. ",
        "": "The reason for the transaction. e.g. payroll. Needed for international. "
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID of the payment you want to retrieve",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that is the primary identifier for the payment.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": " A string that identifies the client associated with the payment.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "integer",
      "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the direction of the payment:\nPush -  Money sent out (e.g. disbursement to a customer)\nPull -  Money received (e.g. a charge to a customer's card)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "One of  \"Created\",\n                        \"Pending\",\n                        \"Authorized\",\n                        \"Submitted\",\n                        \"Processing\",\n                        \"Completed\",\n                        \"Rejected\",\n                        \"Failed\"",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "How the payment was initiated e.g. API ",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the product, as defined in COS.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the partner, as defined in COS.",
      "children": []
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the card used.",
      "children": []
    },
    {
      "name": "cardToken",
      "kind": "optional",
      "type": "string",
      "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters)",
      "children": []
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "string",
      "description": "The network through which the payment is processed (e.g. Visa, Mastercard).",
      "children": []
    },
    {
      "name": "cardBrand",
      "kind": "optional",
      "type": "string",
      "description": "One of  \"AmericanExpress\",\n                        \"ChinaUnionPay\",\n                        \"Dankort\",\n                        \"DinersClub\",\n                        \"Discover\",\n                        \"Hipercard\",\n                        \"JCB\",\n                        \"Laser\",\n                        \"Maestro\",\n                        \"MasterCard\",\n                        \"RuPay\",\n                        \"Solo\",\n                        \"Switch\",\n                        \"Visa\",\n                        \"Unknown\"",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "The last four digits of the Primary Account Number (card number).",
      "children": []
    },
    {
      "name": "issuerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "A string representing the country code of the card issuer.",
      "children": []
    },
    {
      "name": "retrievalReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier used for retrieving transaction details, often used in disputes or reconciliation.",
      "children": []
    },
    {
      "name": "reasonCode",
      "kind": "optional",
      "type": "string",
      "description": "A 2-digit code signifying the transaction result (approved or decline). For example, 00 means successful.",
      "children": []
    },
    {
      "name": "reasonDescription",
      "kind": "optional",
      "type": "string",
      "description": "A string describing the transaction result. For example, Approved.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "A unique number assigned to a transaction from the time it leaves the merchant bank until it arrives at the cardholder bank",
      "children": []
    },
    {
      "name": "correspondingEntity",
      "kind": "optional",
      "type": "object",
      "description": "References information about who initiated the transaction, linking to an OriginatorInfo object.",
      "children": [
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name. Min 1 character, max 35 characters"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name. Min 1 character, max 35 characters"
        },
        {
          "name": "externalAccountIdentifier",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "object",
          "description": "Address of card holder",
          "children": [
            {
              "name": "street1",
              "kind": "optional",
              "type": "string",
              "description": "Address of card holder - Street address line 1. Max length 60"
            },
            {
              "name": "street2",
              "kind": "optional",
              "type": "string",
              "description": "Address of card holder - Street address line 2. Max length 60"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Address of card holder - City full name. 50 character maximum"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "State code. 2 characters"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Address of card holder - Max 10 characters"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        }
      ]
    },
    {
      "name": "mcc",
      "kind": "optional",
      "type": "string",
      "description": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card.",
      "children": []
    },
    {
      "name": "merchantVerificationValue",
      "kind": "optional",
      "type": "string",
      "description": "A value used to verify the merchant's identity.",
      "children": []
    },
    {
      "name": "initiatorName",
      "kind": "optional",
      "type": "string",
      "description": "Per-payment merchant/sender name override for the cardholder's bank statement. Max 17 chars",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number associated with the payment.",
      "children": []
    },
    {
      "name": "businessType",
      "kind": "optional",
      "type": "string",
      "description": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'",
      "children": []
    },
    {
      "name": "purposeOfPayment",
      "kind": "optional",
      "type": "string",
      "description": "The reason for the transaction. e.g. payroll. Needed for international",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that links the payment to the core banking system.",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the corresponding memo post (a temporary transaction posting).",
      "children": []
    },
    {
      "name": "memoPostRemovedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the memo post was removed. I.e. When the temporary hold was released.",
      "children": []
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "boolean",
      "description": "Boolean value indicating whether the payment has been refunded.",
      "children": []
    },
    {
      "name": "refundPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the refund transaction associated with the payment.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was created",
      "children": []
    },
    {
      "name": "authorizedOn",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was authorized by the issuing bank.",
      "children": []
    },
    {
      "name": "submittedOn",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was submitted to the network.",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was rejected.",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was successfully completed.",
      "children": []
    },
    {
      "name": "failedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment failed to process.",
      "children": []
    },
    {
      "name": "limitsEligibleOn",
      "kind": "optional",
      "type": "string",
      "description": "When the transaction becomes eligible for limit calculations.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment record was last modified.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1syncpaymentspreprocessing",
  "legacyHash": "AhHh_9ZYMt-U1G3BS7Rdj"
}
```
:::




[title] Return approval
[path] Payments/Instant payments/APIs/

## API reference

Used to approve an inbound return request for a previously received RTP credit transfer. This operation is relevant when an inbound payment to a Cross River account is being returned to the original sender.

:::hint{type="warning"}
This endpoint is strictly used to approve return requests for inbound Instant Payments. This action can also be done via [return approval](docId\:N5Dy7Sv1CXLV682KMjtSz) in COS Explorer
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/v1/payments/{id}/approve-return",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/approve-return",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "tiU4cYZv2OBskCr5TaQ-D",
        "language": "curl",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "2YWx4qreq-R5gXud3QE83",
        "language": "nodejs",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "YOHQfOuM8rgbNoWxp-x0u",
        "language": "python",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "PO3dR-zN2juLY7vnhKT_l",
        "language": "ruby",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "PuudTHa7YBQRHtGMWLBRm",
        "language": "go",
        "code": "",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "PuudTHa7YBQRHtGMWLBRm"
  },
  "results": {
    "languages": [
      {
        "id": "ZA7E-VGG1EUptPxfRE3CS",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"e3e08e0f-1b6b-48b7-9c15-b30e00d7780a\",\n  \"originalPaymentId\": \"4084feee-5f40-4502-83dd-b2d400a5093a\",\n  \"referenceId\": \"R183O7E781R32\",\n  \"accountNumber\": \"398423912193\",\n  \"amount\": 4000,\n  \"direction\": \"Outbound\",\n  \"status\": \"Created\",\n  \"paymentType\": \"ReturnResponse\",\n  \"source\": \"Phone\",\n  \"transactionAccountContext\": \"NotSubmitted\",\n  \"network\": {\n    \"businessMessageId\": \"B20250702021214273T1BDXE00225897773\",\n    \"messageId\": \"M20250702021214273T1BXJW29900517960\",\n    \"createdAt\": \"2025-07-02T09:04:29.8964283-04:00\",\n    \"instructionId\": \"M20250702990000001S1BRRC27060408124\",\n    \"fromParticipantId\": \"021214273T1\",\n    \"toParticipantId\": \"990000001S1\",\n    \"instructingRoutingNumber\": \"020202020\",\n    \"instructedRoutingNumber\": \"021214891\",\n    \"headerCreationDate\": \"2025-07-02T09:04:29.8964283-04:00\",\n    \"messageCreationDateTime\": \"2025-07-02T09:04:29.8964283-04:00\"\n  },\n  \"transactionInfo\": {\n    \"status\": \"IPAY\"\n  },\n  \"wasRefunded\": false,\n  \"wasPaid\": false,\n  \"createdAt\": \"2025-07-02T09:04:29.8964283-04:00\",\n  \"canceledAt\": \"2025-07-02T09:04:29.8964283-04:00\",\n  \"productId\": \"fb791f7d-7e65-488c-b3e9-af63015283bb\",\n  \"partnerId\": \"16ec26e2-259b-4c35-a792-af63010ed9d7\",\n  \"lastModifiedAt\": \"2025-07-02T09:04:29.9596518-04:00\",\n  \"sendAttemptCount\": 0,\n  \"awaitingResponse\": false,\n  \"referencedPaymentId\": \"abbdf449-e0c4-49bc-9b4f-b30e00d717e2\",\n  \"networkPlatform\": \"TCH\"\n}"
      },
      {
        "id": "on1Q4ouoLk2zFiLK12wlc",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2045,\n            \"message\": \"Receiver does not support Request For Payment\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ZA7E-VGG1EUptPxfRE3CS"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The ID of the inbound payment for which the return request is being approved",
        "": "The ID of the inbound payment for which the return request is being approved"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the approved return request. Assigned by Cross River."
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the originally received inbound payment that is now being returned.",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Cross River’s unique return reference ID. For Instant Payments, this begins with R.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River account to which the original inbound payment was posted.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "The amount (in cents) being returned to the original sender. in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Always Outbound, indicating the return payment is being sent from Cross River back to the original sender.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Transaction status:\n\n-Created\n-Pending\n-Processing\n-Completed\n-Rejected\n-Canceled\n-Hold\n-TimedOut\n-Finalizing\n-Failed\n-ResearchRequired\n-Expired\n-Authorized",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Type of payment. For approved return requests, this is always ReturnResponse.",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "The source of the activity:\n'Phone', 'Fax', 'Email', 'ClearingHouse', 'Api', 'RtpSystemTimeout', 'OpsPortal', 'PartnerPortal', 'ReturnOfFunds', 'AutoResend', 'FedNow', 'CRNow'",
      "children": []
    },
    {
      "name": "transactionAccountContext",
      "kind": "optional",
      "type": "string",
      "description": "Transaction account context:\n\n-NotSubmitted\n-Pending\n-Processing\n-Complete\n-Reversal\n-MemoPost\n-TimedOut\n-Canceled\n-Rejected\n-AuthOnly\n-NotSet",
      "children": []
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "Object",
      "description": "Network information",
      "children": [
        {
          "name": "businessMessageId",
          "kind": "optional",
          "type": "string",
          "description": "Network-level unique identifier for the return message sent via RTP."
        },
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique message ID used by the network (e.g., The Clearing House)."
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Indicates when the return message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "instructionId",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID assigned by the instructing agent for the payment return request while it remains active within the RTP system. \n\nThis ID serves as the unique identifier for the payment request within the Instant Payments network."
        },
        {
          "name": "fromParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "The RTP ID of the participant (Cross River) sending the return."
        },
        {
          "name": "toParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "The RTP ID of the original sending participant receiving the return."
        },
        {
          "name": "instructingRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Routing number of Cross River as the sender of the return."
        },
        {
          "name": "instructedRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Routing number of the receiving financial institution."
        },
        {
          "name": "headerCreationDate",
          "kind": "optional",
          "type": "string",
          "description": "Internal CR timestamp for when the RTP header was generated."
        },
        {
          "name": "messageCreationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time when the payment request message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    },
    {
      "name": "transactionInfo",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the transaction",
      "children": [
        {
          "name": "status",
          "kind": "optional",
          "type": "String",
          "description": "The status of the return within the RTP transaction lifecycle. Example: IPAY."
        }
      ]
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether a refund was previously issued on this return. Usually false for new approvals.",
      "children": []
    },
    {
      "name": "wasPaid",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether funds were successfully transferred back to the original sender.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the credit transfer was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Timestamp indicating if and when the return was canceled after approval.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "The GUID representing the ID of your specific product type associated with the account. This is provided by CR and identifies the CR account involved in the transfer.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "sendAttemptCount",
      "kind": "optional",
      "type": "Integer",
      "description": "The total count of attempts to send the return payment request",
      "children": []
    },
    {
      "name": "awaitingResponse",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether a message response is pending. True if waiting, otherwise False.\n",
      "children": []
    },
    {
      "name": "referencePaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Internal ID referencing the original return request, if applicable.",
      "children": []
    },
    {
      "name": "networkPlatform",
      "kind": "optional",
      "type": "string",
      "description": "The payment network platform used to process the payment. Possible values are: TCH (for RTP via The Clearing House)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtpv1paymentsidapprove-return",
  "legacyHash": "4cMYEKYCRZYXTowV_a4Tv"
}
```
:::

### SLA for Inbound Return Request Response

Inbound return requests must be approved or rejected within the following service level timelines, based on the payment rail:

**FedNow:**

- A response is required by the end of the next business day after the return request is received.

**RTP:**

- If the original credit transfer was a standard payment: Response is required **within 10 business days** of receiving the return request.
- If the original credit transfer was initiated through a Request for Payment (RfP): Response is required **within 20 business days** of receiving the return request.

Failure to respond within these SLAs will result in automatic rejection of the inbound return request.

### Important Note on Fraud-Related Return Requests

Any **incoming return request** with a **Reason Code of FRAD (Fraud)** will be **reviewed by Cross River** and **cannot be actioned directly by the partner**. Cross River will evaluate the request and determine next steps internally.

[title] Simulate activation passcode
[path] Cards/APIs/Wallet Tokenization APIs/

## API reference

Simulate sending activation passcode to cardholder

:::ApiMethodV2
```json
{
  "name": "Endpoint: /cardmanagement/v1/simulate/tokenization/send-passcode",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/send-passcode",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "hIyb6HxBZBiF03IHcJXah",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/send-passcode' \\\n--data '{\n    \"tokenRequestorId\": \"40010030273\",\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"\n}'",
        "customLabel": ""
      },
      {
        "id": "ft5vKqVLm1iBRbf8XC9I5",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'POST',\n  'url': 'https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/send-passcode',\n  'headers': {\n  },\n  body: '{\\r\\n    \"tokenRequestorId\": \"40010030273\",\\r\\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"\\r\\n}'\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "IKG44Td3ZAx081w4orXVV",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/send-passcode\"\n\npayload = \"{\\r\\n    \\\"tokenRequestorId\\\": \\\"40010030273\\\",\\r\\n    \\\"tokenReferenceId\\\": \\\"DNITHE9081730203478143\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "JmUimA3fR9SBHutatvEsD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/send-passcode\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n    \\\"tokenRequestorId\\\": \\\"40010030273\\\",\\r\\n    \\\"tokenReferenceId\\\": \\\"DNITHE9081730203478143\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "afy7cWT-4C2c6vnWR5eOB",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardmanagement/v1/simulate/tokenization/send-passcode\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"tokenRequestorId\": \"40010030273\",`+\"\n\"+`\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hIyb6HxBZBiF03IHcJXah"
  },
  "results": {
    "languages": [
      {
        "id": "kcRcUaYhEpL8DHVEgmP34",
        "language": "200",
        "code": "{\n    \"tokenRequestorId\": \"40010030273\",\n    \"tokenReferenceId\": \"DNITHE9081730203478143\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kcRcUaYhEpL8DHVEgmP34"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "tokenRequestorId",
        "kind": "required",
        "type": "string",
        "description": "Identifier of the token service provider requesting tokenization.",
        "": "tokenRequestorId"
      },
      {
        "name": "tokenReferenceId",
        "kind": "required",
        "type": "string",
        "description": "Unique reference identifier assigned by the token service provider.",
        "": "Unique reference identifier assigned by the token service provider."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "tokenRequestorId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier of the token service provider requesting tokenization."
    },
    {
      "name": "tokenReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique reference identifier assigned by the token service provider.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-cardmanagementv1simulatetokenizationsend",
  "legacyHash": "x--SPHGtvjW6sA3Mdft10"
}
```
:::


[title] Return request
[path] Payments/Instant payments/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- `Rtp.Payment.Canceled`

## API reference

Used to initiate return requests for outgoing payments that has already been sent. This enables partners to request the reversal of a previously completed outbound RTP transaction.

:::hint{type="warning"}
This endpoint is strictly used to initiate return requests for outbound RTP payments. This action can also be done via [return request](docId\:N5Dy7Sv1CXLV682KMjtSz) in COS Explorer
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/v1/payments/{id}/return-request",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/{id}/return-request",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "tiU4cYZv2OBskCr5TaQ-D",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/rtp/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/return-request' ^\n-H 'Content-Type: application/json' ^\n-H 'Authorization: Bearer token' ^\n-d '{\n    \"reasonCode\": \"CUST\",\n    \"additionalInfo\": \"Some additional information\"\n}'",
        "customLabel": ""
      },
      {
        "id": "2YWx4qreq-R5gXud3QE83",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'POST',\n  'url': 'https://sandbox.crbcos.com/rtp/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/return-request',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer token'\n  },\n  body: JSON.stringify({\n    \"reasonCode\": \"CUST\",\n    \"additionalInfo\": \"Some additional information\"\n  })\n\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "YOHQfOuM8rgbNoWxp-x0u",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://sandbox.crbcos.com/rtp/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/return-request\"\n\npayload = json.dumps({\n  \"reasonCode\": \"CUST\",\n  \"additionalInfo\": \"Some additional information\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer token'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "PO3dR-zN2juLY7vnhKT_l",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/rtp/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/return-request\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer token\"\nrequest.body = JSON.dump({\n  \"reasonCode\": \"CUST\",\n  \"additionalInfo\": \"Some additional information\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "PuudTHa7YBQRHtGMWLBRm",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/rtp/v1/payments/61c194b3-6405-4b7f-bd81-b30c00e05637/return-request\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"reasonCode\": \"CUST\",`+\"\n\"+`\n    \"additionalInfo\": \"Some additional information\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer token\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tiU4cYZv2OBskCr5TaQ-D"
  },
  "results": {
    "languages": [
      {
        "id": "ZA7E-VGG1EUptPxfRE3CS",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"de707840-1316-4196-95ed-b30d0049a188\",\n    \"originalPaymentId\": \"61c194b3-6405-4b7f-bd81-b30c00e05637\",\n    \"referenceId\": \"R182O803L813T\",\n    \"accountNumber\": \"2955057589\",\n    \"amount\": 1500,\n    \"direction\": \"Outbound\",\n    \"status\": \"Created\",\n    \"paymentType\": \"ReturnRequest\",\n    \"source\": \"Api\",\n    \"transactionAccountContext\": \"NotSubmitted\",\n    \"debtor\": {\n        \"routingNumber\": \"021214891\",\n        \"accountNumber\": \"2955057589\",\n        \"name\": \"Dim Mak\",\n        \"addressStreetName\": \"400 Kelby St\",\n        \"addressCity\": \"Fort Lee\",\n        \"addressState\": \"NJ\",\n        \"addressPostalCode\": \"07024\",\n        \"addressCountry\": \"US\"\n    },\n    \"creditor\": {\n        \"routingNumber\": \"011000138\",\n        \"accountNumber\": \"456789000\",\n        \"name\": \"Richard Robert\",\n        \"addressStreetName\": \"Speedway Blvd\",\n        \"addressBuildingNumber\": \"3366\",\n        \"addressCity\": \"Talladega\",\n        \"addressState\": \"AL\",\n        \"addressPostalCode\": \"35096\",\n        \"addressCountry\": \"US\"\n    },\n    \"network\": {\n        \"businessMessageId\": \"B20250701021214273T1BEWV89605560100\",\n        \"messageId\": \"M20250701021214273T1BWFL19275646504\",\n        \"createdAt\": \"2025-07-01T00:28:04.9336548-04:00\",\n        \"numberOfTransactions\": 0,\n        \"interbankSettlementAmount\": 0,\n        \"fromParticipantId\": \"021214273T1\",\n        \"toParticipantId\": \"990000001S1\",\n        \"headerCreationDate\": \"2025-07-01T00:28:04.9336548-04:00\",\n        \"messageCreationDateTime\": \"2025-07-01T00:28:04.9336548-04:00\"\n    },\n    \"assignment\": {\n        \"id\": \"M20250701021214273T1BWFL19275646504\",\n        \"creationDateTime\": \"2025-07-01T00:28:04.9336548-04:00\",\n        \"assignerRoutingNumber\": \"021214891\",\n        \"assigneeRoutingNumber\": \"011000138\"\n    },\n    \"originalMsgRefs\": {\n        \"messageId\": \"M20250630021214273T1BNJI93346360148\",\n        \"messageNameId\": \"pacs.008.001.08\",\n        \"creationDateTime\": \"2025-06-30T09:36:47.363-04:00\",\n        \"instructionId\": \"20250630021214273T1B63Q320658132607\",\n        \"endToEndId\": \"dfb79756a12a4c29a356b30c00e05637\",\n        \"transactionId\": \"20250630021214273T1B63Q320658132607\",\n        \"clearingSystemRef\": \"001\",\n        \"interbankSettlementAmount\": 1500,\n        \"currency\": \"USD\",\n        \"interbankSettlementDate\": \"2025-06-30\"\n    },\n    \"case\": {\n        \"id\": \"M20250701021214273T1BWFL19275646504\",\n        \"creatorRoutingNumber\": \"021214891\",\n        \"originatorName\": \"Dim Mak\",\n        \"originatorRoutingNumber\": \"021214891\"\n    },\n    \"transactionInfo\": {\n        \"reasonCode\": \"CUST\",\n        \"additionalInfo\": \"Some additional information\"\n    },\n    \"currency\": \"USD\",\n    \"purpose\": \"Return Request\",\n    \"wasRefunded\": false,\n    \"wasPaid\": false,\n    \"createdAt\": \"2025-07-01T00:28:04.9336548-04:00\",\n    \"canceledAt\": \"2025-07-01T00:28:04.9336548-04:00\",\n    \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"lastModifiedAt\": \"2025-07-01T00:28:04.9492928-04:00\",\n    \"sendAttemptCount\": 0,\n    \"discounts\": [],\n    \"awaitingResponse\": true,\n    \"referencedPaymentId\": \"61c194b3-6405-4b7f-bd81-b30c00e05637\",\n    \"networkPlatform\": \"TCH\"\n}"
      },
      {
        "id": "on1Q4ouoLk2zFiLK12wlc",
        "language": "400",
        "code": "{\n  \"errors\": [\n    {\n      \"code\": 2059,\n      \"message\": \"Original payment already returned\"\n    }\n  ]\n}\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ZA7E-VGG1EUptPxfRE3CS"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "ID of the payment for which the return is being requested.",
        "": "ID of the payment for which the return is being requested."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "reasonCode",
        "kind": "required",
        "type": "string",
        "description": "A code that indicates why the return is being requested. Refer to the list of reason codes for more details.\n",
        "": "A code that indicates why the return is being requested. Refer to the list of reason codes for more details.\n"
      },
      {
        "name": "additionalInfo",
        "kind": "optional",
        "type": "string",
        "description": "Provides supplementary details regarding the request. Maximum 105 characters.",
        "": "Provides supplementary details regarding the request. Maximum 105 characters."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the newly created return request"
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the outbound payment for which the return is being requested.",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "This unique Cross River reference ID starts with the first letter of the payment rail. For Instant Payments, the ID begins with R to reflect the RTP API module.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account at Cross River that originally funded the outbound payment.",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of return request in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Outbound for an outbound return request or Inbound for an inbound return request",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Transaction status:\n\n-Created\n-Pending\n-Processing\n-Completed\n-Rejected\n-Canceled\n-Hold\n-TimedOut\n-Finalizing\n-Failed\n-ResearchRequired\n-Expired\n-Authorized",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Type of payment indicating how the transaction is funded:\n\n-RequestForPayment",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "The source of the activity: Api",
      "children": []
    },
    {
      "name": "transactionAccountContext",
      "kind": "optional",
      "type": "string",
      "description": "Transaction account context:\n\n-NotSubmitted\n-Pending\n-Processing\n-Complete\n-Reversal\n-MemoPost\n-TimedOut\n-Canceled\n-Rejected\n-AuthOnly\n-NotSet",
      "children": []
    },
    {
      "name": "debtor",
      "kind": "optional",
      "type": "Object",
      "description": "Debtor business/individual information. – The recipient of the RfP who will initiate the credit transfer upon authorization. Depending on the configuration, this information may be populated automatically.",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit routing number of the sending financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "birthCity",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth city"
        },
        {
          "name": "birthCountry",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth country. 2-letter country code."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Debtor birth date. Formatted as yyyy-mm-dd."
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions."
        },
        {
          "name": "proxyId",
          "kind": "optional",
          "type": "string",
          "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address."
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "10-digit phone number"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "ultimateDebtor",
      "kind": "optional",
      "type": "Object",
      "description": "Ultimate debtor business/individual information. The final party responsible for initiating the credit transfer upon authorization. This information may be populated automatically based on the configuration.",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "privateId",
          "kind": "optional",
          "type": "string",
          "description": "Unique and unambiguous identification of a person, for example, a passport number"
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "creditor",
      "kind": "optional",
      "type": "Object",
      "description": "Creditor business/individual information. The recipient of the payment, typically the party at CRB initiating the RfP. Depending on the configuration, this information may be populated automatically.\n",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit routing number of the receiving financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number. In CR, depending on the account type, the number of digits will vary. The first digit indicates the kind of account."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "birthCity",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth city"
        },
        {
          "name": "birthCountry",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth country. 2-letter country code."
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Creditor birth date. Formatted as yyyy-mm-dd."
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "proxyId",
          "kind": "optional",
          "type": "string",
          "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address"
        },
        {
          "name": "phoneNumber",
          "kind": "optional",
          "type": "string",
          "description": "10-digit phone number"
        },
        {
          "name": "addressStreetName",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "ultimateCreditor",
      "kind": "optional",
      "type": "Object",
      "description": "Ultimate creditor business/individual information. The final recipient of the payment. Depending on the configuration, this information may be populated automatically.",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of entity"
        },
        {
          "name": "privateId",
          "kind": "optional",
          "type": "string",
          "description": "Unique and unambiguous identification of a person, for example, a passport number"
        },
        {
          "name": "orgLegalEntityId",
          "kind": "optional",
          "type": "string",
          "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
        },
        {
          "name": "addressStreetNameadd",
          "kind": "optional",
          "type": "string",
          "description": "Street address name information"
        },
        {
          "name": "addressLine",
          "kind": "optional",
          "type": "string",
          "description": "Additional address information"
        },
        {
          "name": "addressBuildingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Street address building number"
        },
        {
          "name": "addressCity",
          "kind": "optional",
          "type": "string",
          "description": "City full name"
        },
        {
          "name": "addressState",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state"
        },
        {
          "name": "addressPostalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code"
        },
        {
          "name": "addressCountry",
          "kind": "optional",
          "type": "string",
          "description": "2-letter country code"
        }
      ]
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "Object",
      "description": "Network information",
      "children": [
        {
          "name": "businessMessageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the business message sent to the RTP network"
        },
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the message"
        },
        {
          "name": "createdAt",
          "kind": "optional",
          "type": "string",
          "description": "Indicates when the message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "numberOfTransactions",
          "kind": "optional",
          "type": "Integer",
          "description": "The total count of transactions"
        },
        {
          "name": "interbankSettlementAmount",
          "kind": "optional",
          "type": "Integer",
          "description": "The total amount the Debtor FI must pay to the Creditor FI once the Creditor FI accepts the payment instructed by the credit transfer message"
        },
        {
          "name": "fromParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "RTP participant ID representing Cross River"
        },
        {
          "name": "toParticipantId",
          "kind": "optional",
          "type": "string",
          "description": "RTP participant ID of the receiving institution"
        },
        {
          "name": "instructingRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Sending bank routing number"
        },
        {
          "name": "instructedRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Receiving bank routing number"
        },
        {
          "name": "headerCreationDate",
          "kind": "optional",
          "type": "string",
          "description": "Internal to CR"
        },
        {
          "name": "messageCreationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time when the payment request message was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        }
      ]
    },
    {
      "name": "assignment",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier of the RTP assignment case"
        },
        {
          "name": "creationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time the item was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]"
        },
        {
          "name": "assignerRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Routing number of the institution assigning the case"
        },
        {
          "name": "assigneeRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Routing number of the institution to whom the case is assigned"
        }
      ]
    },
    {
      "name": "originalMsgRefs",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": [
        {
          "name": "messageId",
          "kind": "optional",
          "type": "string",
          "description": "Message ID of the original payment instruction"
        },
        {
          "name": "messageNameId",
          "kind": "optional",
          "type": "string",
          "description": "ISO 20022 message name ID"
        },
        {
          "name": "creationDateTime",
          "kind": "optional",
          "type": "string",
          "description": "The date and time the original message was created, formatted as ddThh:mm:ss[.mmm]"
        },
        {
          "name": "instructionId",
          "kind": "optional",
          "type": "string",
          "description": "Original instruction ID sent in the outbound payment"
        },
        {
          "name": "endToEndId",
          "kind": "optional",
          "type": "string",
          "description": "End-to-end ID from the original outbound RTP"
        },
        {
          "name": "transactionId",
          "kind": "optional",
          "type": "string",
          "description": "Unique transaction ID from the original payment"
        },
        {
          "name": "clearingSystemRef",
          "kind": "optional",
          "type": "string",
          "description": "Identifies the reconciliation window in which the credit transfer was settled"
        },
        {
          "name": "interbankSettlementAmount",
          "kind": "optional",
          "type": "string",
          "description": "Original settlement amount in cents"
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the original payment. Example: USD."
        },
        {
          "name": "interbankSettlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of interbank settlement for the original payment."
        }
      ]
    },
    {
      "name": "case",
      "kind": "optional",
      "type": "object",
      "description": "Information about this case",
      "children": [
        {
          "name": "id",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier for the return case."
        },
        {
          "name": "creatorRoutineNumber",
          "kind": "optional",
          "type": "string",
          "description": "Routing number of the return request initiator (Cross River)."
        },
        {
          "name": "originatorName",
          "kind": "optional",
          "type": "string",
          "description": "Name of the party originating the return request."
        },
        {
          "name": "originatorRoutingNumber",
          "kind": "optional",
          "type": "string",
          "description": "Routing number of the originator."
        }
      ]
    },
    {
      "name": "transactionInfo",
      "kind": "optional",
      "type": "Object",
      "description": "Information about the transaction",
      "children": [
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "A code that specifies the reason a transaction did not complete. Refer to the list of reason codes for details."
        },
        {
          "name": "additionalInfo",
          "kind": "optional",
          "type": "string",
          "description": "Provides supplementary details regarding the status report"
        }
      ]
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency in which the return is being processed. Example: USD.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose or memo field associated with the return.",
      "children": []
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was refunded. True if refunded, otherwise False.",
      "children": []
    },
    {
      "name": "wasPaid",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether the payment was received. True if received, otherwise False.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time when the return request was created, formatted as yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Timestamp if the return was canceled after initiation.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "The GUID representing the ID of your specific product type associated with the account. This is provided by CR and identifies the CR account involved in the transfer.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "sendAttemptCount",
      "kind": "optional",
      "type": "Integer",
      "description": "The total count of attempts to send the payment request",
      "children": []
    },
    {
      "name": "discounts",
      "kind": "optional",
      "type": "Object",
      "description": "Discounts array specifies applicable discounts for the request.",
      "children": [
        {
          "name": "type",
          "kind": "optional",
          "type": "string",
          "description": "The type of discount applied. \nPossible values include:\n- DSCT: A standard discount applied to the payment.\n- FULL: A full payment discount (for example, early payment incentive)"
        },
        {
          "name": "amount",
          "kind": "optional",
          "type": "Integer",
          "description": "Amount of discount in positive integral cents. For example, write $1.00 as 100."
        },
        {
          "name": "currency",
          "kind": "optional",
          "type": "string",
          "description": "Currency of the discount. For example USD."
        }
      ]
    },
    {
      "name": "awaitingResponse",
      "kind": "optional",
      "type": "Boolean",
      "description": "Indicates whether a message response is pending. True if waiting, otherwise False.\n",
      "children": []
    },
    {
      "name": "referencePaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original outbound payment ID this return references.",
      "children": []
    },
    {
      "name": "networkPlatform",
      "kind": "optional",
      "type": "string",
      "description": "The payment network platform used to process the payment. Possible values are: TCH (for RTP via The Clearing House)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtpv1paymentsidreturn-request",
  "legacyHash": "4cMYEKYCRZYXTowV_a4Tv"
}
```
:::


[title] Simulate inbound origination
[path] Payments/Instant payments/APIs/Simulations/

## API reference

Simulate receiving an RTP or FedNow credit transfer payment from another financial institution

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy)&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /rtp/payments/simulated-inbound-origination",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-origination",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-origination \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\" \\\\\n  -d '{\n  \"accountNumber\": \"1234567890\",\n  \"amount\": 150000,\n  \"debtor\": {},\n  \"remittanceData\": \"sample_value\",\n  \"remittanceReferredInfo\": []\n}'"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "const axios = require('axios');\n\nconst options = {\n  method: 'POST',\n  url: 'https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-origination',\n  headers: {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n  },\n  data: {\n    \"accountNumber\": \"1234567890\",\n    \"amount\": 150000,\n    \"debtor\": {},\n    \"remittanceData\": \"sample_value\",\n    \"remittanceReferredInfo\": []\n}\n};\n\naxios(options)\n  .then(response => console.log(response.data))\n  .catch(error => console.error(error));"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = 'https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-origination'\nheaders = {\n    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n    'Content-Type': 'application/json',\n}\ndata = {\n    \"accountNumber\": \"1234567890\",\n    \"amount\": 150000,\n    \"debtor\": {},\n    \"remittanceData\": \"sample_value\",\n    \"remittanceReferredInfo\": []\n}\n\nresponse = requests.post(url, headers=headers, json=data)\nprint(response.json())"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require 'net/http'\nrequire 'json'\n\nuri = URI('https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-origination')\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\nrequest['Content-Type'] = 'application/json'\nrequest.body = {\n  \"accountNumber\": \"1234567890\",\n  \"amount\": 150000,\n  \"debtor\": {},\n  \"remittanceData\": \"sample_value\",\n  \"remittanceReferredInfo\": []\n}.to_json\n\nresponse = http.request(request)\nputs JSON.parse(response.body)"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n    \"bytes\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n)\n\nfunc main() {\n    payload := []byte(`{\n        \"accountNumber\": \"1234567890\",\n        \"amount\": 150000,\n        \"debtor\": {},\n        \"remittanceData\": \"sample_value\",\n        \"remittanceReferredInfo\": []\n}`)\n\n    req, _ := http.NewRequest(\"POST\", \"https://sandbox.crbcos.com/rtp/v1/payments/simulated-inbound-origination\", bytes.NewBuffer(payload))\n    req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n    req.Header.Add(\"Content-Type\", \"application/json\")\n\n    client := &http.Client{}\n    resp, err := client.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := ioutil.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "curl-example"
  },
  "results": {
    "languages": [
      {
        "id": "202",
        "language": "202",
        "code": ""
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ],
    "selectedLanguageId": "202"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "A valid COS Account number associated to the Transaction. This parameter can be null."
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "Dollar amount of the transaction in positive integral cents. For example, write $1.00 as 100."
      },
      {
        "name": "debtor",
        "kind": "required",
        "type": "object",
        "description": "Debtor business/individual information. The recipient of the RfP who will initiate the credit transfer upon authorization. Depending on the configuration, this information may be populated automatically.",
        "children": [
          {
            "name": "addressStreetName",
            "kind": "optional",
            "type": "string",
            "description": "Street address name information"
          },
          {
            "name": "addressLine",
            "kind": "optional",
            "type": "string",
            "description": "Additional address information"
          },
          {
            "name": "addressBuildingNumber",
            "kind": "optional",
            "type": "string",
            "description": "Street address building number"
          },
          {
            "name": "addressCity",
            "kind": "optional",
            "type": "string",
            "description": "City full name"
          },
          {
            "name": "addressState",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state"
          },
          {
            "name": "addressPostalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code"
          },
          {
            "name": "addressCountry",
            "kind": "optional",
            "type": "string",
            "description": "2-letter country code"
          },
          {
            "name": "routingNumber",
            "kind": "optional",
            "type": "string",
            "description": "9-digit ABA routing number that identifies the originator financial institution"
          },
          {
            "name": "accountNumber",
            "kind": "optional",
            "type": "string",
            "description": "A valid COS Account number associated to the Transaction. This parameter can be null."
          },
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Bank name"
          },
          {
            "name": "birthCity",
            "kind": "required",
            "type": "string",
            "description": "Debtor birth city"
          },
          {
            "name": "birthCountry",
            "kind": "optional",
            "type": "string",
            "description": "Debtor birth country. 2-letter country code."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "Beneficiary birthdate in the format YYYY-MM-DD"
          },
          {
            "name": "orgLegalEntityId",
            "kind": "optional",
            "type": "string",
            "description": "A unique global identifier for legal entities that are not consumers but are participating in financial transactions"
          },
          {
            "name": "proxyId",
            "kind": "optional",
            "type": "string",
            "description": "Identification used to represent the account under a different name or alias, such as a mobile number or email address"
          },
          {
            "name": "phoneNumber",
            "kind": "optional",
            "type": "string",
            "description": "The beneficiary phone number"
          }
        ]
      },
      {
        "name": "remittanceData",
        "kind": "required",
        "type": "string",
        "description": "A description of the payment, meaning, the remittance advice. Use this field for any remittance information that doesn't have its own field. 140 characters maximum."
      },
      {
        "name": "remittanceReferredInfo",
        "kind": "required",
        "type": "array",
        "description": "RemittanceReferredInfo"
      },
      {
        "name": "networkPlatform",
        "kind": "optional",
        "type": "string",
        "description": "The payment network platform used to process the payment. Possible values are: TCH (for RTP via The Clearing House)."
      },
      {
        "name": "uETR",
        "kind": "optional",
        "type": "string",
        "description": "UETR"
      },
      {
        "name": "purpose",
        "kind": "optional",
        "type": "string",
        "description": "Reason for the origination. For internal use only. ",
        "": "Reason for the origination. For internal use only. "
      },
      {
        "name": "localInstrument",
        "kind": "optional",
        "type": "string",
        "description": "LocalInstrument"
      }
    ]
  },
  "response": [],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-rtppaymentssimulated-inbound-origination",
  "legacyHash": "i9O9Co7BOalOFBg4fBCpi"
}
```
:::

## Use cases

- Test receiving instant payments in sandbox environment
- Validate payment processing workflows without real network transmission
- Develop and debug payment receipt handling before production
- Train support staff on payment receipt scenarios

## Error codes

| Code | Scenario                                     | Resolution                                             |
| ---- | -------------------------------------------- | ------------------------------------------------------ |
| 2013 | Routing number isn't a valid RTP Participant | Verify request parameters and retry                    |
| 3001 | Unauthorized                                 | Verify Bearer token is valid and not expired           |
| 3002 | Insufficient permissions                     | Verify user has required permission for this operation |

## Business rules

- Requires valid Bearer token with permissions: Permissions.Payments.Simulate
- `remittanceData` field is limited to 140 characters maximum
- Request validation performed before processing
- Errors return 400 Bad Request with detailed error information
- Rate limiting may apply to prevent abuse

[title] Cancel batch
[path] Payments/ACH/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:&#x20;

- Ach.Batch.Canceled

## API reference

Cancel an ACH client batch by its ID. Cancels any incomplete transactions and stops further processing of any remaining transactions in the batch. If you need to cancel many transactions in a client batch, it's most efficient to cancel a client batch before all the transactions have imported rather than try to cancel a large number of transactions individually.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /ach/v1/client-batches/{id}/cancel",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/ach/v1/client-batches/{id}/cancel",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "WUX7AaxzkOpsgPo65ZZjE",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/ach/v1/client-batches/63f87c2b-38e9-438f-a3c8-b07401212511/cancel' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '\n'",
        "customLabel": ""
      },
      {
        "id": "P41ALNau3BkepDO6xriR1",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/client-batches/63f87c2b-38e9-438f-a3c8-b07401212511/cancel',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "BRFrvglZJDShv2RBnxsUN",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"\\n\"\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"POST\", \"/ach/v1/client-batches/63f87c2b-38e9-438f-a3c8-b07401212511/cancel\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "mxQVrvny0M0XwlRytSyoT",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/client-batches/63f87c2b-38e9-438f-a3c8-b07401212511/cancel\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = \"\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "RiliGkMNvLA6EhPw2algR",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/client-batches/63f87c2b-38e9-438f-a3c8-b07401212511/cancel\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "WUX7AaxzkOpsgPo65ZZjE"
  },
  "results": {
    "languages": [
      {
        "id": "XglH3ZPSjyiib2Z5j9bub",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"63f87c2b-38e9-438f-a3c8-b07401212511\",\n  \"accountNumber\": \"2151546989\",\n  \"referenceId\": \"A248NEY051X2\",\n  \"paymentType\": \"Origination\",\n  \"direction\": \"Outbound\",\n  \"status\": \"Canceled\",\n  \"source\": \"Api\",\n  \"postingType\": \"Aggregate\",\n  \"postingCode\": \"OK\",\n  \"posting\": \"Canceled\",\n  \"originator\": {\n    \"routingNumber\": \"021214891\",\n    \"accountNumber\": \"2151546989\",\n    \"accountType\": \"Checking\",\n    \"name\": \"Cross River Bank\",\n    \"identification\": \"021214891\"\n  },\n  \"receiver\": {\n    \"routingNumber\": \"021200339\",\n    \"accountNumber\": \"6546543213\",\n    \"accountType\": \"Checking\",\n    \"name\": \"Glenn Quagmire\",\n    \"identification\": \"XYZ123\"\n  },\n  \"secCode\": \"WEB\",\n  \"description\": \"JulyFees\",\n  \"transactionType\": \"Pull\",\n  \"amount\": 19,\n  \"serviceType\": \"SameDay\",\n  \"extendedDetails\": {\n    \"paymentType\": \"S\"\n  },\n  \"effectiveDate\": \"230905\",\n  \"traceNumber\": \"021214891385537\",\n  \"wasReturned\": false,\n  \"wasCorrected\": false,\n  \"holdDays\": 0,\n  \"original\": {\n    \"paymentId\": \"63f87c2b-38e9-438f-a3c8-b07401212511\"\n  },\n  \"createdAt\": \"2023-09-05T13:32:44.637-04:00\",\n  \"canceledAt\": \"2023-09-05T13:33:14.7192084-04:00\",\n  \"partnerId\": \"1e5d3f04-ae24-4af6-9e30-aecf012b99dd\",\n  \"productId\": \"cc62e17f-5912-483e-9e42-aed30112fbb6\",\n  \"lastModifiedAt\": \"2023-09-05T13:33:14.7192084-04:00\",\n  \"purpose\": \"sample payment\",\n  \"clientIdentifier\": \"9a6c6c07-6c6d-4cff-91f6-901b90c4d2f9\"\n}"
      }
    ],
    "selectedLanguageId": "XglH3ZPSjyiib2Z5j9bub"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The unique ID of the batch payment, received in the batch origination response as the id attribute. This ID is in GUID format.",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique ID for the client batch request. This ID is in the GUID format."
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique CR reference ID for the payment. The reference ID always begins with the first letter of the rail. For ACH the reference ID starts with 'A'.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the transaction:\n- Processing\n- Imported\n- Canceling",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The Cross River  account number from which the batch payments originate. Depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "paymentCount",
      "kind": "optional",
      "type": "integer",
      "description": "The number of unique payments in the batch (up to 5000)",
      "children": []
    },
    {
      "name": "debitTotal",
      "kind": "optional",
      "type": "integer",
      "description": "The total amount to be credited to the originator account",
      "children": []
    },
    {
      "name": "creditTotal",
      "kind": "optional",
      "type": "integer",
      "description": "The total amount to be debited from the originator account",
      "children": []
    },
    {
      "name": "importCount",
      "kind": "optional",
      "type": "integer",
      "description": "Indicates how many payments have been processed at the time of the response",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by CR. In this case, the CR account involved in the batch payment.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the client batch was created after the request was received",
      "children": []
    },
    {
      "name": "importedAt",
      "kind": "optional",
      "type": "string",
      "description": "The time when the import count matches the total number of payments in the batch",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "paymentIdentifiers",
      "kind": "optional",
      "type": "array",
      "description": "Unique identifier for each payment in the batch, in GUID format",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-achv1client-batchesidcancel",
  "legacyHash": "ZQV3f3wS-iOEurDOFpWuU"
}
```
:::

****

[title] 
[path] Cards/APIs/


[title] Instant payments
[path] Payments/

:::CtaButton{label="Instant payments concepts" docId="U_TnYPQ3-5yepG7jKD5FK" openInNewTab="true"}

:::

## Instant payment APIs

Instant payments enable individuals and businesses to transfer funds that clear and settle within seconds between US bank accounts at different US-based financial institutions. Cross River (CR) facilitates instant payments through three networks: CRNow, RTP® via The Clearing House (TCH), and FedNow.

## Requirements for credit transfers via API

To initiate a credit transfer via API, you must have the following information:

- The account number funding the transfer.
- The transfer amount.
- The creditor’s account number and routing number at the receiving bank.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

## API calls

This table provides an overview of the Instant Payments APIs, described in detail below.

| Action                                                | API Call                                        | Description                                                                                        |
| ----------------------------------------------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| [Credit transfer](docId:727H0GkQerqHAFKEy67Uu)        | `POST /v1/payments`                             | Initiates a single Instant Payment                                                                 |
| [Payment request](docId:34BetPVU5CDUR0MKKcIfN) <br /> | `POST /v1/payments/payment-request`             | Initiates a request for a single Instant Payment                                                   |
| [Cancel request](docId\:RIYl47dXZG2Rn5d-APJtr)        | `POST /v1/payments/{id}/payment-request/cancel` | Initiate a cancellation of a requested payment                                                     |
| [Return request](docId\:ZuUrqOCnOKKDsnXK5yT_i)        | `POST /v1/payments/{id}/return-request`         | Initiate return requests for outgoing payments that has already been sent                          |
| [Return approval](docId\:TEvOmyHg1UyINPu8-w8c3)       | POST /v1/payments/\{id}/return-approval         | Approve an inbound return request for a previously received RTP credit transfer                    |
| [Return reject](docId\:kbyrIcZWjVXS-ZkeTpAPA)         | `POST /v1/payments/{id}/reject`                 | Rejects an inbound return request previously received on a real-time payment                       |
| [Service info](docId\:KdgFKJ1Rv7Dq0VNusrSJw)          | `GET /v1/directory`                             | Retrieves a list of instant payment-related services supported by a specific financial institution |

:::hint{type="info"}
Monetary amounts in API calls and responses are formatted as whole numbers, with no decimal point separating dollars and cents.
:::

## &#x20;Related topics

- [Webhook events: Instant payments](docId\:ffGq2OHYEbWPzn2old6Mc)&#x20;
- [Monitor limit utilization](docId\:KEF-tnmS8kieC5Ky8ptS-)&#x20;
- [Request and response codes: Instant payments](docId\:i1MCoCYNv8NOKPkqFQ1Gb)&#x20;
- [Error codes: Instant payments](docId:3gfvw44bHPSEpyA8ipwxK)&#x20;

## Tutorials

See our API tutorials to learn how to:

- [Send an instant payment](docId:5yRR2S4_i1B34CdzDxR68): Originate a payment using RTP, FedNow, CRNow or network interoperability.
- [Get service info](docId\:OuBLrmwxsKT1EpHZtEo0i): Find out the instant payment services a specific financial institution supports, per network (RTP or FedNow).
- [Set payment expiration](docId\:nY3A7M8Av7sp_fbHOuBLm): Set your own custom expiration time for retrying a payment when a receiving financial institution is down.  &#x20;
- [Fraud reporting](docId\:Sk9mAQG4fAs9OEByqgMWP): Each instant payment network has specific requirements for reporting suspected fraud, with its own criteria for what qualifies as reportable fraud






[title] Error codes: Wires
[path] Payments/Wires/

## Overview

This page provides comprehensive error code information for the Wires API, including error codes, descriptions, and resolution guidance based on actual codebase analysis.

## Wires API response format

```json
{
  "error": {
    "code": "2001",
    "message": "Payment not found",
     }
}
```

***

## Error codes by category

### Validation errors (1000-1006, 1200)

Errors related to input validation and data format requirements.

| Code     | Description                                                       | Resolution                                                                     |
| -------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| **1000** | Validation error - check error message for specifics              | Resolve the validation error based on the error message                        |
| **1001** | Config required                                                   | Configuration object is required in the request; include configuration details |
| **1002** | InboundCountryWhitelist cannot add a country that is blacklisted  | Remove country from blacklist before adding to whitelist                       |
| **1003** | OutboundCountryWhitelist cannot add a country that is blacklisted | Remove country from blacklist before adding to whitelist                       |
| **1004** | Originator.Identifier is not a valid account                      | Verify originator identifier is a valid account number                         |
| **1005** | Originator.Identifier is not a valid routing number               | Provide a valid routing number for originator identifier                       |
| **1006** | Originator.Identifier is not a valid BIC                          | Provide a valid BIC (Bank Identifier Code) for originator identifier           |
| **1200** | State required                                                    | Provide a valid state in the request                                           |

### Payment processing errors (2000-2116)

Errors related to wire payment processing, validation, and lifecycle management.

| Code     | Description                                                                                                       | Resolution                                                                                   |
| -------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| **2000** | General exception                                                                                                 | General application error; check request parameters and payment state                        |
| **2001** | Payment not found                                                                                                 | Verify the payment ID is correct                                                             |
| **2002** | Invalid payment status                                                                                            | Check current payment status; verify the requested operation is valid for the current status |
| **2003** | Direction not inbound                                                                                             | Operation requires payment to be inbound; verify payment direction                           |
| **2004** | Direction not outbound                                                                                            | Operation requires payment to be outbound; verify payment direction                          |
| **2005** | Posting account cannot be changed as posting completed                                                            | Posting account cannot be changed after posting is complete                                  |
| **2006** | Acknowledgment required                                                                                           | Payment requires acknowledgment before processing                                            |
| **2007** | Originator account not found                                                                                      | Verify originator account number is correct and account exists                               |
| **2008** | Origination not enabled for account                                                                               | Enable wire origination in account configuration                                             |
| **2009** | Custom originator data not allowed for account                                                                    | Account is not configured to allow custom originator data                                    |
| **2010** | Origination not allowed from a restricted account                                                                 | Account has restrictions that prevent wire origination                                       |
| **2011** | Receiver routing number not found                                                                                 | Verify receiver routing number is correct and valid                                          |
| **2012** | Source wire not found                                                                                             | Verify source wire ID is correct; check if source wire exists                                |
| **2013** | Source wire message unavailable                                                                                   | Source wire message cannot be retrieved                                                      |
| **2014** | Service messages cannot be reversed                                                                               | Reversal operations are not available for service messages                                   |
| **2015** | Payment type cannot be reversed                                                                                   | This payment type does not support reversal operations                                       |
| **2016** | Payment must be completed before it can be reversed                                                               | Only completed payments can be reversed; verify payment status                               |
| **2017** | Only inbound payments can be reversed                                                                             | Reversal operations only apply to inbound payments                                           |
| **2018** | Invalid source business function code                                                                             | Business function code is not valid; provide a valid FedWire business function code          |
| **2019** | Payment must be completed before it can be responded to                                                           | Only completed payments can be responded to; verify payment status                           |
| **2020** | Only inbound payments can be responded to                                                                         | Response operations only apply to inbound payments                                           |
| **2021** | Original wire not found                                                                                           | Verify original wire ID is correct; check if original wire exists                            |
| **2022** | Beneficiary account not found                                                                                     | Verify beneficiary account number is correct and account exists                              |
| **2023** | Account not found                                                                                                 | Verify the account number is correct; check if account exists in the system                  |
| **2024** | Posting already completed                                                                                         | Posting has already been completed; cannot modify posting                                    |
| **2025** | Posting must be failed to attempt a retry                                                                         | Only failed postings can be retried; verify posting status                                   |
| **2026** | Payment already acknowledged                                                                                      | Payment has already been acknowledged; cannot acknowledge again                              |
| **2027** | International origination not enabled for account                                                                 | Enable international wire origination in account configuration                               |
| **2028** | Requested amount exceeded maximum threshold                                                                       | Reduce payment amount to be within maximum limit for account                                 |
| **2029** | Drawdown credit account number does not match originator account number                                           | Drawdown credit account must match originator account                                        |
| **2030** | Payment type cannot be investigated                                                                               | This payment type does not support investigation operations                                  |
| **2031** | Payment type not transfer                                                                                         | Operation requires payment to be a transfer type                                             |
| **2032** | Drawdown credit account number is not a valid routing number                                                      | Provide a valid routing number for drawdown credit account                                   |
| **2033** | DrawdownDebitAccount.IdCode is missing or invalid                                                                 | Provide a valid IdCode for drawdown debit account                                            |
| **2034** | DrawdownDebitAccount.Name is missing or invalid                                                                   | Provide a valid name for drawdown debit account                                              |
| **2035** | Cannot respond to our own investigation requests                                                                  | Cannot respond to investigations initiated by own institution                                |
| **2036** | Name and Address are required when using IntermediaryFi                                                           | Include complete name and address for intermediary financial institution                     |
| **2037** | Beneficiary name is required                                                                                      | Provide beneficiary name in the request                                                      |
| **2038** | Beneficiary address is required                                                                                   | Provide complete beneficiary address                                                         |
| **2039** | Beneficiary.Identifier is not a valid BIC                                                                         | Provide a valid BIC (Bank Identifier Code) for beneficiary                                   |
| **2040** | BeneficiaryFi.Identifier is not a valid BIC                                                                       | Provide a valid BIC for beneficiary financial institution                                    |
| **2041** | IntermediaryFi.Identifier is not a valid BIC                                                                      | Provide a valid BIC for intermediary financial institution                                   |
| **2042** | Beneficiary.IdCode must be one of: 1,2,3,4,5,9,B,D                                                                | Provide a valid customer IdCode for beneficiary                                              |
| **2043** | Originator.Identifier is not a valid BIC                                                                          | Provide a valid BIC for originator                                                           |
| **2044** | At least one line of text is required for the requested type code                                                 | Include required text lines for the service message type                                     |
| **2045** | Invalid or missing investigation type code                                                                        | Provide a valid investigation type code                                                      |
| **2046** | Invalid investigation subtype code                                                                                | Provide a valid investigation subtype code                                                   |
| **2047** | Invalid or missing investigation reason code                                                                      | Provide a valid investigation reason code                                                    |
| **2048** | Invalid investigation reason subtype code                                                                         | Provide a valid investigation reason subtype code                                            |
| **2049** | Narrative is required when reason code is NARR                                                                    | Include narrative text when using NARR reason code                                           |
| **2051** | Source payment is not an investigation request                                                                    | Source payment must be an investigation request type                                         |
| **2052** | Cannot investigate untransmitted payments                                                                         | Payment must be transmitted before investigation can be initiated                            |
| **2053** | Invalid or missing investigation status code                                                                      | Provide a valid investigation status code                                                    |
| **2054** | Invalid or missing investigation status reason code                                                               | Provide a valid investigation status reason code                                             |
| **2055** | Payment type not drawdown                                                                                         | Operation requires payment to be a drawdown type                                             |
| **2056** | Reason Code is missing or invalid                                                                                 | Provide a valid reason code from the allowed list                                            |
| **2057** | Source Payment type not Return Request                                                                            | Source payment must be a return request type                                                 |
| **2058** | Cancellation Reason Code is missing or invalid                                                                    | Provide a valid cancellation reason code                                                     |
| **2059** | Cancellation Additional Info is required                                                                          | Include additional information for the cancellation                                          |
| **2060** | Amount must be equal or less than original payment amount                                                         | Reduce amount to match or be less than original payment                                      |
| **2061** | Originator address is required                                                                                    | Provide complete originator address                                                          |
| **2062** | Originator.IdCode must be one of: 1,2,3,4,5,9,B,D                                                                 | Provide a valid customer IdCode for originator                                               |
| **2063** | Originator.Name is required                                                                                       | Provide originator name in the request                                                       |
| **2064** | BeneficiaryFi address is required                                                                                 | Provide complete beneficiary financial institution address                                   |
| **2065** | BeneficiaryFi.IdCode must be one of: B,C,D,F,T,U                                                                  | Provide a valid financial institution IdCode for beneficiary FI                              |
| **2066** | BeneficiaryFi.Name is required                                                                                    | Provide beneficiary financial institution name                                               |
| **2067** | BeneficiaryFi.Identifier is not a valid routing number                                                            | Provide a valid routing number for beneficiary financial institution                         |
| **2068** | IntermediaryFi address is required                                                                                | Provide complete intermediary financial institution address                                  |
| **2069** | IntermediaryFi.IdCode must be one of: B,C,D,F,T,U                                                                 | Provide a valid financial institution IdCode for intermediary FI                             |
| **2070** | IntermediaryFi.Identifier is not a valid routing number                                                           | Provide a valid routing number for intermediary financial institution                        |
| **2071** | IntermediaryFi.Name is required                                                                                   | Provide intermediary financial institution name                                              |
| **2072** | Beneficiary.IdCode must be one of: B,C,D,F,T,U                                                                    | Provide a valid financial institution IdCode for beneficiary                                 |
| **2073** | Beneficiary.Identifier is not a valid routing number                                                              | Provide a valid routing number for beneficiary                                               |
| **2074** | Originator.IdCode must be one of: B,C,D,F,T,U                                                                     | Provide a valid financial institution IdCode for originator                                  |
| **2075** | Originator.Identifier is not a valid routing number                                                               | Provide a valid routing number for originator                                                |
| **2076** | Account or product configuration error                                                                            | Verify account and product configuration settings                                            |
| **2077** | The Total Amount of all reversals must be equal or less than original payment amount                              | Combined reversal amounts exceed original payment amount                                     |
| **2078** | Sender routing number not found                                                                                   | Verify sender routing number is correct and valid                                            |
| **2079** | Beneficiary name or identifier required                                                                           | Provide either beneficiary name or identifier                                                |
| **2080** | Originator name or identifier required                                                                            | Provide either originator name or identifier                                                 |
| **2081** | BeneficiaryFi name or identifier required                                                                         | Provide either beneficiary FI name or identifier                                             |
| **2082** | IntermediaryFi name or identifier required                                                                        | Provide either intermediary FI name or identifier                                            |
| **2083** | OriginatorFi address is required                                                                                  | Provide complete originator financial institution address                                    |
| **2084** | OriginatorFi.IdCode must be one of: B,C,D,F,T,U                                                                   | Provide a valid financial institution IdCode for originator FI                               |
| **2085** | OriginatorFi.Identifier is not a valid BIC                                                                        | Provide a valid BIC for originator financial institution                                     |
| **2086** | OriginatorFi.Identifier is not a valid routing number                                                             | Provide a valid routing number for originator financial institution                          |
| **2087** | OriginatorFi name or identifier required                                                                          | Provide either originator FI name or identifier                                              |
| **2088** | OriginatorFi.Name is required                                                                                     | Provide originator financial institution name                                                |
| **2089** | InstructingFi address is required                                                                                 | Provide complete instructing financial institution address                                   |
| **2090** | InstructingFi.IdCode must be one of: B,C,D,F,T,U                                                                  | Provide a valid financial institution IdCode for instructing FI                              |
| **2091** | InstructingFi.Identifier is not a valid BIC                                                                       | Provide a valid BIC for instructing financial institution                                    |
| **2092** | InstructingFi.Identifier is not a valid routing number                                                            | Provide a valid routing number for instructing financial institution                         |
| **2093** | InstructingFi.Name is required                                                                                    | Provide instructing financial institution name                                               |
| **2094** | InstructingFi name or identifier required                                                                         | Provide either instructing FI name or identifier                                             |
| **2095** | BeneficiaryFi not available with ISO format                                                                       | BeneficiaryFi cannot be used with ISO format messages                                        |
| **2096** | IntermediaryFi not available with ISO format                                                                      | IntermediaryFi cannot be used with ISO format messages                                       |
| **2097** | DrawdownDebitAccount address is required                                                                          | Provide complete drawdown debit account address                                              |
| **2098** | DrawdownDebitAccount.IdCode must be one of: B,C,D,F,T,U                                                           | Provide a valid financial institution IdCode for drawdown debit account                      |
| **2099** | DrawdownDebitAccount.Identifier is not a valid BIC                                                                | Provide a valid BIC for drawdown debit account                                               |
| **2100** | DrawdownDebitAccount.Identifier is not a valid routing number                                                     | Provide a valid routing number for drawdown debit account                                    |
| **2101** | DrawdownDebitAccount name or identifier required                                                                  | Provide either drawdown debit account name or identifier                                     |
| **2102** | DrawdownDebitAccount.Name is required                                                                             | Provide drawdown debit account name                                                          |
| **2103** | IntermediaryFi and BeneficiaryFi cannot be identical                                                              | Use different institutions for intermediary and beneficiary FI                               |
| **2104** | Unable to resend payment                                                                                          | Payment cannot be resent; check payment status and configuration                             |
| **2105** | Combined service message line content cannot exceed 105 characters                                                | Reduce service message line content to 105 characters or less                                |
| **2106** | Combined service message line content cannot exceed 210 characters                                                | Reduce service message line content to 210 characters or less                                |
| **2107** | FedWire is currently closed. This request can only be sent during FedWire business hours                          | Wait for FedWire business hours to submit request                                            |
| **2108** | Payment must be completed before it can be return requested                                                       | Only completed payments can be return requested; verify payment status                       |
| **2109** | Address1, Address2, and Address3 are no longer supported for origination. Please use PostalAddress fields instead | Use PostalAddress fields instead of legacy Address fields                                    |
| **2110** | PostalAddress AdrLine1 and AdrLine2 cannot exceed 35 characters                                                   | Limit address lines to 35 characters or less                                                 |
| **2111** | investigationSubTypeCode must not be provided when using the specified investigationTypeCode                      | Remove investigationSubTypeCode for this investigation type                                  |
| **2112** | investigationSubTypeCode must be provided when using the specified investigationTypeCode                          | Include required investigationSubTypeCode                                                    |
| **2113** | investigationReasonCode must be CONR when investigationTypeCode is CONR                                           | Use CONR reason code for CONR investigation type                                             |
| **2114** | investigationReasonCode must be UTAP when investigationTypeCode is UTAP                                           | Use UTAP reason code for UTAP investigation type                                             |
| **2115** | Cancellation Additional Info is not allowed with the specified cancellation reason code                           | Remove additional info for this cancellation reason code                                     |
| **2116** | Cannot claim payment was already returned because no related payment return was found                             | Verify payment return exists before claiming payment was returned                            |

### Submission errors (2200-2203)

Errors related to wire submission processing.

| Code     | Description                   | Resolution                                                                                      |
| -------- | ----------------------------- | ----------------------------------------------------------------------------------------------- |
| **2200** | Invalid submission status     | Check current submission status; verify the requested operation is valid for the current status |
| **2201** | Submission must be pending    | Operation requires submission to be in pending status                                           |
| **2202** | Submission must be processing | Operation requires submission to be in processing status                                        |
| **2203** | Submission must be created    | Operation requires submission to be in created status                                           |

### Distribution errors (2300-2309)

Errors related to wire distribution lifecycle management.

| Code     | Description                                           | Resolution                                                        |
| -------- | ----------------------------------------------------- | ----------------------------------------------------------------- |
| **2300** | Distribution must be pending                          | Operation requires distribution to be in pending status           |
| **2301** | Distribution must be verified                         | Operation requires distribution to be in verified status          |
| **2302** | Distribution must be released                         | Operation requires distribution to be in released status          |
| **2303** | Distribution must be generating                       | Operation requires distribution to be in generating status        |
| **2304** | Distribution must not be released                     | Operation requires distribution to not be released yet            |
| **2305** | Distribution already canceled                         | Distribution has already been canceled; cannot cancel again       |
| **2306** | No payments to distribute                             | Distribution must contain at least one payment                    |
| **2307** | Distribution currently generating                     | Another distribution is currently generating; wait for completion |
| **2308** | Distribution must be transmitted                      | Operation requires distribution to be in transmitted status       |
| **2309** | Distribution must be transmitted but not acknowledged | Distribution must be transmitted but not yet acknowledged         |

### Hold errors (2400-2401)

Errors related to wire payment hold management.

| Code     | Description            | Resolution                                                           |
| -------- | ---------------------- | -------------------------------------------------------------------- |
| **2400** | Hold is not active     | Hold must be in active status for this operation; verify hold status |
| **2401** | Hold is not evaluating | Hold must be in evaluating status for this operation                 |

### Scan errors (2500-2503)

Errors related to compliance scanning operations.

| Code     | Description                                 | Resolution                                                       |
| -------- | ------------------------------------------- | ---------------------------------------------------------------- |
| **2500** | Scan already pending                        | A scan is already in progress; wait for current scan to complete |
| **2501** | No scan lists are configured for account    | Configure compliance scan lists for the account                  |
| **2502** | Payment type must be a transfer             | Scanning only applies to transfer payment types                  |
| **2503** | Payment must be on hold to request a rescan | Payment must be in hold status before requesting a rescan        |

### Posting record errors (2550)

Errors related to posting record status.

|  Code    | Description                   | Resolution                                                     |
| -------- | ----------------------------- | -------------------------------------------------------------- |
| **2550** | Invalid posting record status | Posting record status is not valid for the requested operation |

### Account configuration errors (2600-2613)

Errors related to account and global configuration management.

| Code     | Description                                                      | Resolution                                                                                          |
| -------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| **2600** | This action requires dual control                                | Have a second authorized user approve the configuration change                                      |
| **2601** | Accounts must be unique                                          | Each configuration field must use a different account number                                        |
| **2602** | Inbound Suspense Account not found                               | Configure a valid inbound suspense account                                                          |
| **2603** | Outbound Suspense Account not found                              | Configure a valid outbound suspense account                                                         |
| **2604** | Operator Account not found                                       | Configure a valid operator account                                                                  |
| **2605** | Unposted Account not found                                       | Configure a valid unposted account                                                                  |
| **2606** | Change not approved                                              | Configuration change must be approved before applying                                               |
| **2607** | Change not pending                                               | Operation requires configuration change to be in pending status                                     |
| **2608** | Global profile not found or is invalid                           | Verify global profile ID is correct and profile exists                                              |
| **2609** | Reversal Account not found                                       | Configure a valid reversal account                                                                  |
| **2610** | Blocked Account not found                                        | Configure a valid blocked account                                                                   |
| **2612** | Functionality is not supported when UseFedLineDirect is enabled  | This feature is not available with FedLine Direct; disable FedLine Direct or use alternative method |
| **2613** | Functionality is not supported when UseFedLineDirect is disabled | This feature requires FedLine Direct to be enabled                                                  |

### Whitelist errors (2650-2653)

Errors related to wire whitelist management.

| Code     | Description                                         | Resolution                                                                 |
| -------- | --------------------------------------------------- | -------------------------------------------------------------------------- |
| **2650** | Account not found                                   | Verify the account number is correct; check if account exists in whitelist |
| **2651** | A whitelist entry with that criteria already exists | Whitelist entry already exists; cannot create duplicate                    |
| **2652** | Change not approved                                 | Whitelist change must be approved before applying                          |
| **2653** | This action requires dual control                   | Have a second authorized user approve the whitelist change                 |

### Approval policy errors (2700-2703)

Errors related to approval policy management.

| Code     | Description                                                | Resolution                                                                       |
| -------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------- |
| **2700** | Account not found                                          | Verify the account number is correct; check if account exists in approval policy |
| **2701** | An approval policy entry with that criteria already exists | Approval policy entry already exists; cannot create duplicate                    |
| **2702** | Change not approved                                        | Approval policy change must be approved before applying                          |
| **2703** | This action requires dual control                          | Have a second authorized user approve the approval policy change                 |

### Integration errors (2750-2751)

Errors related to FedLine Direct and FedWire integration.

| Code     | Description                | Resolution                                                   |
| -------- | -------------------------- | ------------------------------------------------------------ |
| **2750** | FedLine Direct not enabled | Enable FedLine Direct in configuration to use this feature   |
| **2751** | FedWire is closed          | FedWire is currently closed; wait for FedWire business hours |

### Automated drawdown response errors (2800-2803)

Errors related to automated drawdown response configuration.

| Code     | Description                                                  | Resolution                                                        |
| -------- | ------------------------------------------------------------ | ----------------------------------------------------------------- |
| **2800** | Source payment must be an outbound drawdown response         | Source payment must be an outbound drawdown response type         |
| **2801** | Product not found                                            | Verify product ID is correct and product exists                   |
| **2802** | Account not found                                            | Verify the account number is correct; check if account exists     |
| **2803** | Request would create a duplicate automated drawdown response | An automated drawdown response with these criteria already exists |

### Security/permission errors (3000-3006, 3200)

Errors related to user permissions and security.

| Code     | Description                                               | Resolution                                                                                                      |
| -------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **3000** | General exception                                         | General security error; verify user permissions and authorization                                               |
| **3001** | Origination payment amount exceeds user permissions       | Payment amount exceeds user's origination dollar limit; reduce amount or request approval from higher authority |
| **3002** | Clearing hold exceeds user permissions for payment amount | Payment amount exceeds user's hold clearance dollar limit; request approval from higher authority               |
| **3003** | Posting flags not allowed for user                        | User does not have permission to set posting flags; contact administrator                                       |
| **3004** | User not authorized to reject inbound wires               | User lacks permission to reject inbound wires; contact administrator for access                                 |
| **3005** | Distribution max wire amount exceeds user permissions     | Distribution amount exceeds user's maximum distribution dollar limit                                            |
| **3006** | User not authorized to clear this type of hold            | User lacks permission to clear this hold type; request approval from authorized user                            |
| **3200** | Access denied                                             | User lacks permission to access configuration; verify user has appropriate role and permissions                 |


[title] Wire transfer
[path] Payments/Wires/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Wire.Payment.Sent](docId\:OA3cg-apKn_510VPq2yYe)&#x20;
- [Wire.Payment.Received](docId\:OA3cg-apKn_510VPq2yYe)&#x20;
- [Wire.Payment.Rejected](docId\:OA3cg-apKn_510VPq2yYe)&#x20;
- [Wire.Payment.Canceled](docId\:OA3cg-apKn_510VPq2yYe)&#x20;

## API reference

Sends a single wire transfer payment.

:::hint{type="warning"}
In November 2027, the Fedwire Funds Service will remove the fully unstructured postal address option in favor of a single hybrid postal address format. **All parties** (intermediaryFi, beneficiaryFi, beneficiary, originator)  across **all message types** must transition from free-text address lines (address1, address2, address3) to a new **postalAddress object** with mandatory adrLine1, country and city fields.

In advance of the Fedwire enforcement date, all partners must use the new **postalAddress&#x20;**&#x73;tructure in production no later tha&#x6E;**&#x20;October 2027.&#x20;**&#x4D;essages sent in the old format after this date will be rejected.
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /wires/v1/payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/wires/v1/payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "MTsRdSNJ69G4MXIevOmpV",
        "language": "curl",
        "code": "curl -L 'https://sandbox.crbcos.com/wires/v1/payments' ^\n-d '{\n    \"accountNumber\": \"2955057589\",\n    \"businessFunctionCode\": \"CTR\",\n    \"receiverRoutingNumber\": \"026009593\",\n    \"beneficiary\": {\n        \"idCode\": \"D\",\n        \"identifier\": \"316840684\",\n        \"name\": \"Stewie Griffin\",\n        \"postalAddress\": {\n            \"adrLine1\": \"31 Spooner St\",\n            \"city\": \"Quahog\",\n            \"state\": \"RI\",\n            \"postalCode\": \"33030\",\n            \"country\": \"US\"\n        }\n    },\n    \"beneficiaryReference\": \"Gift\",\n    \"originatorToBeneficiary1\": \"Happy Birthday\",\n    \"amount\": 15000,\n    \"purpose\": \"Testing\",\n    \"clientIdentifier\": \"05d73490-65ac-4725-98b6-cbf8252e52fe\"\n}\n\n'",
        "customLabel": ""
      },
      {
        "id": "m0oVVmc-UFe3DfJ423-BO",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/wires/v1/payments',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n    \\\"accountNumber\\\": \\\"2955057589\\\",\\r\\n    \\\"businessFunctionCode\\\": \\\"CTR\\\",\\r\\n    \\\"receiverRoutingNumber\\\": \\\"026009593\\\",\\r\\n    \\\"beneficiary\\\": {\\r\\n        \\\"idCode\\\": \\\"D\\\",\\r\\n        \\\"identifier\\\": \\\"316840684\\\",\\r\\n        \\\"name\\\": \\\"Stewie Griffin\\\",\\r\\n        \\\"postalAddress\\\": {\\r\\n            \\\"adrLine1\\\": \\\"31 Spooner St\\\",\\r\\n            \\\"city\\\": \\\"Quahog\\\",\\r\\n            \\\"state\\\": \\\"RI\\\",\\r\\n            \\\"postalCode\\\": \\\"33030\\\",\\r\\n            \\\"country\\\": \\\"US\\\"\\r\\n        }\\r\\n    },\\r\\n    \\\"beneficiaryReference\\\": \\\"Gift\\\",\\r\\n    \\\"originatorToBeneficiary1\\\": \\\"Happy Birthday\\\",\\r\\n    \\\"amount\\\": 15000,\\r\\n    \\\"purpose\\\": \\\"Testing\\\",\\r\\n    \\\"clientIdentifier\\\": \\\"05d73490-65ac-4725-98b6-cbf8252e52fe\\\"\\r\\n}\\r\\n\\r\\n\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "O-7EFXDUL0ToLKOs1v1_g",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/wires/v1/payments\"\n\npayload = \"{\\r\\n    \\\"accountNumber\\\": \\\"2955057589\\\",\\r\\n    \\\"businessFunctionCode\\\": \\\"CTR\\\",\\r\\n    \\\"receiverRoutingNumber\\\": \\\"026009593\\\",\\r\\n    \\\"beneficiary\\\": {\\r\\n        \\\"idCode\\\": \\\"D\\\",\\r\\n        \\\"identifier\\\": \\\"316840684\\\",\\r\\n        \\\"name\\\": \\\"Stewie Griffin\\\",\\r\\n        \\\"postalAddress\\\": {\\r\\n            \\\"adrLine1\\\": \\\"31 Spooner St\\\",\\r\\n            \\\"city\\\": \\\"Quahog\\\",\\r\\n            \\\"state\\\": \\\"RI\\\",\\r\\n            \\\"postalCode\\\": \\\"33030\\\",\\r\\n            \\\"country\\\": \\\"US\\\"\\r\\n        }\\r\\n    },\\r\\n    \\\"beneficiaryReference\\\": \\\"Gift\\\",\\r\\n    \\\"originatorToBeneficiary1\\\": \\\"Happy Birthday\\\",\\r\\n    \\\"amount\\\": 15000,\\r\\n    \\\"purpose\\\": \\\"Testing\\\",\\r\\n    \\\"clientIdentifier\\\": \\\"05d73490-65ac-4725-98b6-cbf8252e52fe\\\"\\r\\n}\\r\\n\\r\\n\"\nheaders = {\n\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "87mpvCfQVI032eOLF41CC",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/wires/v1/payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n    \\\"accountNumber\\\": \\\"2955057589\\\",\\r\\n    \\\"businessFunctionCode\\\": \\\"CTR\\\",\\r\\n    \\\"receiverRoutingNumber\\\": \\\"026009593\\\",\\r\\n    \\\"beneficiary\\\": {\\r\\n        \\\"idCode\\\": \\\"D\\\",\\r\\n        \\\"identifier\\\": \\\"316840684\\\",\\r\\n        \\\"name\\\": \\\"Stewie Griffin\\\",\\r\\n        \\\"postalAddress\\\": {\\r\\n            \\\"adrLine1\\\": \\\"31 Spooner St\\\",\\r\\n            \\\"city\\\": \\\"Quahog\\\",\\r\\n            \\\"state\\\": \\\"RI\\\",\\r\\n            \\\"postalCode\\\": \\\"33030\\\",\\r\\n            \\\"country\\\": \\\"US\\\"\\r\\n        }\\r\\n    },\\r\\n    \\\"beneficiaryReference\\\": \\\"Gift\\\",\\r\\n    \\\"originatorToBeneficiary1\\\": \\\"Happy Birthday\\\",\\r\\n    \\\"amount\\\": 15000,\\r\\n    \\\"purpose\\\": \\\"Testing\\\",\\r\\n    \\\"clientIdentifier\\\": \\\"05d73490-65ac-4725-98b6-cbf8252e52fe\\\"\\r\\n}\\r\\n\\r\\n\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "yp-ndYkY5ByOh3pbco8f3",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/wires/v1/payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n    \"accountNumber\": \"2955057589\",`+\"\n\"+`\n    \"businessFunctionCode\": \"CTR\",`+\"\n\"+`\n    \"receiverRoutingNumber\": \"026009593\",`+\"\n\"+`\n    \"beneficiary\": {`+\"\n\"+`\n        \"idCode\": \"D\",`+\"\n\"+`\n        \"identifier\": \"316840684\",`+\"\n\"+`\n        \"name\": \"Stewie Griffin\",`+\"\n\"+`\n        \"postalAddress\": {`+\"\n\"+`\n            \"adrLine1\": \"31 Spooner St\",`+\"\n\"+`\n            \"city\": \"Quahog\",`+\"\n\"+`\n            \"state\": \"RI\",`+\"\n\"+`\n            \"postalCode\": \"33030\",`+\"\n\"+`\n            \"country\": \"US\"`+\"\n\"+`\n        }`+\"\n\"+`\n    },`+\"\n\"+`\n    \"beneficiaryReference\": \"Gift\",`+\"\n\"+`\n    \"originatorToBeneficiary1\": \"Happy Birthday\",`+\"\n\"+`\n    \"amount\": 15000,`+\"\n\"+`\n    \"purpose\": \"Testing\",`+\"\n\"+`\n    \"clientIdentifier\": \"05d73490-65ac-4725-98b6-cbf8252e52fe\"`+\"\n\"+`\n}`+\"\n\"+`\n`+\"\n\"+`\n`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "MTsRdSNJ69G4MXIevOmpV"
  },
  "results": {
    "languages": [
      {
        "id": "qhmiA1yJ9zvP9MO9zQnhh",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"2c17d36d-cb70-420d-9a16-b30100ddd39c\",\n    \"accountNumber\": \"2955057589\",\n    \"coreTransactionId\": \"5449f04c-9dce-4d54-9873-b30100ddd39c\",\n    \"referenceId\": \"FT86171667Z\",\n    \"direction\": \"Outbound\",\n    \"paymentType\": \"Transfer\",\n    \"source\": \"Api\",\n    \"status\": \"Created\",\n    \"posting\": \"Pending\",\n    \"partnerAuthorization\": \"NotRequired\",\n    \"partnerAuthorization2\": \"NotRequired\",\n    \"enteredById\": \"b799951d47eb410d92b9da901b8ffa69\",\n    \"amount\": 15000,\n    \"currency\": \"usd\",\n    \"purpose\": \"Testing\",\n    \"businessFunctionCode\": \"CTR\",\n    \"typeCode\": \"1000\",\n    \"senderRoutingNumber\": \"021214891\",\n    \"senderName\": \"CROSS RIVER BANK\",\n    \"senderReference\": \"FT86171667Z\",\n    \"receiverRoutingNumber\": \"026009593\",\n    \"receiverName\": \"BK AMER NYC       \",\n    \"originatingFi\": {\n        \"idCode\": \"F\",\n        \"identifier\": \"021214891\",\n        \"name\": \"CROSS RIVER BANK\",\n        \"address1\": \"400 KELBY STREET\",\n        \"address2\": \"FORT LEE, NJ\",\n        \"address3\": \"US\"\n    },\n    \"originator\": {\n        \"identifier\": \"2955057589\",\n        \"name\": \"ORIGINATOR NAME\"\n    },\n    \"beneficiary\": {\n        \"idCode\": \"D\",\n        \"identifier\": \"316840684\",\n        \"name\": \"Stewie Griffin\",\n        \"address1\": \"31 Spooner St\",\n        \"address2\": \"Quahog RI 33030\",\n        \"address3\": \"US\"\n    },\n    \"originatorToBeneficiary1\": \"HAPPY BIRTHDAY\",\n    \"beneficiaryReference\": \"GIFT\",\n    \"wasReversed\": false,\n    \"isInternational\": false,\n    \"clientIdentifier\": \"05d73490-65ac-4725-98b6-cbf8252e52fe\",\n    \"createdAt\": \"2025-06-19T09:27:38.7553761-04:00\",\n    \"effectiveDate\": \"2025-06-19T00:00:00-04:00\",\n    \"originalPaymentId\": \"2c17d36d-cb70-420d-9a16-b30100ddd39c\",\n    \"partnerId\": \"1101a33d-fbd9-4b9e-b169-b29500f12407\",\n    \"productId\": \"29f3022a-ccfc-42eb-aa8f-b29500f13d00\",\n    \"lastModifiedAt\": \"2025-06-19T09:27:38.7553761-04:00\",\n    \"postingCode\": \"OK\",\n    \"investigated\": false,\n    \"isoPaymentType\": \"CustomerCreditTransfer\"\n}"
      },
      {
        "id": "1yO0mYc_oRnxdwLoA-u5h",
        "language": "403",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 3001,\n            \"message\": \"Origination payment amount exceeds user permissions\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "1yO0mYc_oRnxdwLoA-u5h"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Originator account number"
      },
      {
        "name": "originator",
        "kind": "optional",
        "type": "object",
        "description": "Originator of the payment.\n\nUnder the Bank Secrecy Act Travel Rule, information identifying the sender has to travel with the payment, and wires that arrive without it may be held for compliance review and returned to you for correction. The rule applies to transfers of $3,000 or more. We recommend supplying these details on every wire, so you do not have to make it conditional on the amount.\n\nBy default, the originator on the outbound wire is either Cross River or the name of the account, depending on the configuration of your product.\n\nIf you are providing the originator you must supply it in full.",
        "": "Originator of the payment.\n\nUnder the Bank Secrecy Act Travel Rule, information identifying the sender has to travel with the payment, and wires that arrive without it may be held for compliance review and returned to you for correction. The rule applies to transfers of $3,000 or more. We recommend supplying these details on every wire, so you do not have to make it conditional on the amount.\n\nBy default, the originator on the outbound wire is either Cross River or the name of the account, depending on the configuration of your product.\n\nIf you are providing the originator you must supply it in full.",
        "children": [
          {
            "name": "idCode",
            "kind": "optional",
            "type": "string",
            "description": "Details of the financial institution sending the wire - Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
          },
          {
            "name": "identifier",
            "kind": "optional",
            "type": "string",
            "description": "Originator id"
          },
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Originator name. Maximum 140 characters."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead. \nDetails of the party sending the wire - Field of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nDetails of the party sending the wire - Field of 35 characters usually used for the city, state, and postal code. If address2 is supplied then address1 must also be supplied."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nDetails of the party sending the wire - Field of 35 characters for any information, for example, country code or information related to the wire. If address3 is supplied then address2 must also be supplied."
          }
        ],
        "schema": [
          {
            "name": "idCode",
            "kind": "optional",
            "type": "string",
            "description": "Details of the financial institution sending the wire - Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
          },
          {
            "name": "identifier",
            "kind": "optional",
            "type": "string",
            "description": "Originator id"
          },
          {
            "name": "name",
            "kind": "optional",
            "type": "string",
            "description": "Originator name. Maximum 140 characters."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead. \nDetails of the party sending the wire - Field of 35 characters usually used for the street address."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nDetails of the party sending the wire - Field of 35 characters usually used for the city, state, and postal code. If address2 is supplied then address1 must also be supplied."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nDetails of the party sending the wire - Field of 35 characters for any information, for example, country code or information related to the wire. If address3 is supplied then address2 must also be supplied."
          }
        ]
      },
      {
        "name": "businessFunctionCode",
        "kind": "required",
        "type": "string",
        "description": "The business purpose of the wire transfer. The most common type is customer wire transfer (CTR) where the beneficiary isn't a bank. See the full list of codes and descriptions.",
        "": "The business purpose of the wire transfer. The most common type is customer wire transfer (CTR) where the beneficiary isn't a bank. See the full list of codes and descriptions."
      },
      {
        "name": "receiverRoutingNumber",
        "kind": "required",
        "type": "string",
        "description": "The 9-digit Fedwire routing number of the financial institution receiving the wire drawdown request. The ABA directory provides financial institution routing numbers.",
        "": "The 9-digit Fedwire routing number of the financial institution receiving the wire drawdown request. The ABA directory provides financial institution routing numbers."
      },
      {
        "name": "beneficiary",
        "kind": "required",
        "type": "object",
        "description": "Entity receiving the funds",
        "children": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Specifies the type of value in the identifier field that follows it. Maximum 1 character. \nFor outbound payments, this field must contain a valid customer code, with the most common being \"D\" for demand deposit accounts.\n\nPlease refer to the \"Request and Response Code\" section for the full list of valid customer codes."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "A number or string that provides unique identification, such as a driver's license number for an individual, or a Fed routing number for an FI. Maximum 34 characters.\nFor outbound payments, this is the beneficiary's account number.\n"
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Beneficiary name. Maximum 140 characters."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address.\n"
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code. If address2 is supplied then address1 must also be supplied."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire. If address3 is supplied then address2 must also be supplied."
          }
        ],
        "schema": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Specifies the type of value in the identifier field that follows it. Maximum 1 character. \nFor outbound payments, this field must contain a valid customer code, with the most common being \"D\" for demand deposit accounts.\n\nPlease refer to the \"Request and Response Code\" section for the full list of valid customer codes."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "A number or string that provides unique identification, such as a driver's license number for an individual, or a Fed routing number for an FI. Maximum 34 characters.\nFor outbound payments, this is the beneficiary's account number.\n"
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Beneficiary name. Maximum 140 characters."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address.\n"
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code. If address2 is supplied then address1 must also be supplied."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire. If address3 is supplied then address2 must also be supplied."
          }
        ]
      },
      {
        "name": "beneficiaryFi",
        "kind": "optional",
        "type": "object",
        "description": "Bank receiving the wire transfer",
        "children": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Specifies the type of value in the identifier field that follows it.  Maximum 1 character.\n\nFor outbound payments, the value for the beneficiary FI is F to indicate the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field.\n\nRequired if idCode is not \"F\" - Fed routing number."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "A number or string that provides unique identification, such as a driver's license number for an individual, or a Fed routing number for an FI. Maximum 34 characters.\n\nFor outbound payments, enter the bank Fed routing number for the beneficiary FI. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field.\n\nRequired if idCode is not \"F\" - Fed routing number."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Beneficiary financial institution name. Maximum 140 characters.\n\nRequired if idCode is not \"F\" - Fed routing number."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address.\n\nMust include address1 if IdCode is not a BIC."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code. If address2 is supplied then address1 must also be supplied."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire. If address3 is supplied then address2 must also be supplied."
          }
        ],
        "schema": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Specifies the type of value in the identifier field that follows it.  Maximum 1 character.\n\nFor outbound payments, the value for the beneficiary FI is F to indicate the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field.\n\nRequired if idCode is not \"F\" - Fed routing number."
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "A number or string that provides unique identification, such as a driver's license number for an individual, or a Fed routing number for an FI. Maximum 34 characters.\n\nFor outbound payments, enter the bank Fed routing number for the beneficiary FI. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field.\n\nRequired if idCode is not \"F\" - Fed routing number."
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Beneficiary financial institution name. Maximum 140 characters.\n\nRequired if idCode is not \"F\" - Fed routing number."
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address.\n\nMust include address1 if IdCode is not a BIC."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code. If address2 is supplied then address1 must also be supplied."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire. If address3 is supplied then address2 must also be supplied."
          }
        ]
      },
      {
        "name": "intermediaryFi",
        "kind": "optional",
        "type": "object",
        "description": "Intermediary bank involved in the transaction. Required when sending an international payment.",
        "children": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Specifies the type of value in the identifier field that follows it. Maximum 1 character. "
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "A number or string that provides unique identification, such as a driver's license number for an individual, or a Fed routing number for an FI. Maximum 34 characters.\n\nIn this object, enter an identifier for the intermediary bank involved with the wire transaction. If the idCode is a Fed routing number, the identifier must be a valid Fed participant.\n"
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Intermediary financial institution name. Maximum 140 characters.\n"
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address.\n\nMust include address1 if IdCode is not a BIC."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code. If address2 is supplied then address1 must also be supplied."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire. If address3 is supplied then address2 must also be supplied."
          }
        ],
        "schema": [
          {
            "name": "idCode",
            "kind": "required",
            "type": "string",
            "description": "Specifies the type of value in the identifier field that follows it. Maximum 1 character. "
          },
          {
            "name": "identifier",
            "kind": "required",
            "type": "string",
            "description": "A number or string that provides unique identification, such as a driver's license number for an individual, or a Fed routing number for an FI. Maximum 34 characters.\n\nIn this object, enter an identifier for the intermediary bank involved with the wire transaction. If the idCode is a Fed routing number, the identifier must be a valid Fed participant.\n"
          },
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Intermediary financial institution name. Maximum 140 characters.\n"
          },
          {
            "name": "postalAddress",
            "kind": "optional",
            "type": "object",
            "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information and should be used instead of the deprecated address lines",
            "children": [
              {
                "name": "adrLine1",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              },
              {
                "name": "adrLine2",
                "kind": "optional",
                "type": "string",
                "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
              },
              {
                "name": "country",
                "kind": "required",
                "type": "string",
                "description": "2 character country ISO country code. For example US, GB"
              },
              {
                "name": "state",
                "kind": "optional",
                "type": "string",
                "description": "2-char state. For example NY, FL"
              },
              {
                "name": "postalCode",
                "kind": "optional",
                "type": "string",
                "description": "Max 15 chars"
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Max 35 chars"
              }
            ]
          },
          {
            "name": "address1",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address.\n\nMust include address1 if IdCode is not a BIC."
          },
          {
            "name": "address2",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code. If address2 is supplied then address1 must also be supplied."
          },
          {
            "name": "address3",
            "kind": "optional",
            "type": "string",
            "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire. If address3 is supplied then address2 must also be supplied."
          }
        ]
      },
      {
        "name": "beneficiaryReference",
        "kind": "optional",
        "type": "string",
        "description": "Optional field for additional information. 35 characters maximum.",
        "": "Optional field for additional information. 35 characters maximum."
      },
      {
        "name": "originatorToBeneficiary1",
        "kind": "optional",
        "type": "string",
        "description": "Field for additional information from the originator to the beneficiary.\n\n35 characters maximum.\n\nYou can add information in up to 4 originator to beneficiary fields (originatorToBeneficiary1, originatorToBeneficiary2, originatorToBeneficiary3, originatorToBeneficiary4).",
        "children": []
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "Dollar amount of wire transfer in positive integral cents. For example, write $1.00 as 100.",
        "children": []
      },
      {
        "name": "purpose",
        "kind": "required",
        "type": "string",
        "description": "Reason for the wire transfer, such as \"daily settlement.\" Also use this field if you submit multiple wires for the same amount, such as \"1 of 2, 2 of 2.\" This data is not included with the outgoing FedWire message. Maxmum 50 characters.",
        "": "Reason for the wire transfer, such as \"daily settlement.\" Also use this field if you submit multiple wires for the same amount, such as \"1 of 2, 2 of 2.\" This data is not included with the outgoing FedWire message. Maxmum 50 characters."
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
        "children": []
      }
    ]
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The payment ID. First appears in the initial response to the originate a payment request. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River Account number. In Cross River, depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier in GUID format for the Federal Reserve batch the payment went out on (or came in on for inbound payments)",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of payment in batch",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "Inbound or outbound",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Transfer, Drawdown, DrawdownResponse, ServiceMessage, Reversal",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Method used to send payment instructions: Phone, fax, email, file, API, partner portal, Ops portal.",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Payment status: Created, Pending, Hold, Batched, Processing, Completed, Rejected, Canceled, Blocked",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status: Pending, Posted, Failed, Canceled",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- OfacCancelUnableToDetermine\n- OfacConfirmed\n- OfacUnconfirmed\n- Other",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "Blocked because: OfacMatch, Other",
      "children": []
    },
    {
      "name": "partnerAuthorization",
      "kind": "optional",
      "type": "string",
      "description": "Partner authorization for out-of-band payment requests: NotRequired, Pending , Approved, Canceled",
      "children": []
    },
    {
      "name": "authorizedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the wire was authorized. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "authorizedById",
      "kind": "optional",
      "type": "string",
      "description": "Cross River user ID of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "authorizedByName",
      "kind": "optional",
      "type": "string",
      "description": "Cross River username of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "partnerAuthorization2",
      "kind": "optional",
      "type": "string",
      "description": "Second partner authorization for out-of-band payment requests: NotRequired, Pending , Approved, Canceled",
      "children": []
    },
    {
      "name": "authorizedAt2",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the wire was authorized. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "authorizedById2",
      "kind": "optional",
      "type": "string",
      "description": "Cross River user ID of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "authorizedByName2",
      "kind": "optional",
      "type": "string",
      "description": "Cross River username of the partner user who authorizes the wire",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "integer",
      "description": "Dollar amount of wire transfer in positive integral cents. For example, write $1.00 as 100.",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of funds transfer",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the wire transfer, such as \"daily settlement.\" Also use this field if you submit multiple wires for the same amount, such as \"1 of 2, 2 of 2.\" This data is not included with the outgoing FedWire message.",
      "children": []
    },
    {
      "name": "imad",
      "kind": "optional",
      "type": "string",
      "description": "Input Messaging Accountability Data. A combination of a date, source identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application. Unique to the payment.",
      "children": []
    },
    {
      "name": "omad",
      "kind": "optional",
      "type": "string",
      "description": "Output Messaging Accountability Data. A combination of a date, destination identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application.",
      "children": []
    },
    {
      "name": "businessFunctionCode",
      "kind": "optional",
      "type": "string",
      "description": "The business purpose of the wire transfer. The most common type is customer wire transfer (CTR) where the beneficiary isn't a bank. See the full list of codes and descriptions.",
      "children": []
    },
    {
      "name": "typeCode",
      "kind": "optional",
      "type": "string",
      "description": "The type code value provides information about the type of wire transfer sent (type code, first 2 digits) and more details about the transfer (subtype code, second 2 digits).",
      "children": []
    },
    {
      "name": "senderRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "Fedwire routing number for the sender's bank",
      "children": []
    },
    {
      "name": "senderName",
      "kind": "optional",
      "type": "string",
      "description": "Entity sending the wire",
      "children": []
    },
    {
      "name": "senderReference",
      "kind": "optional",
      "type": "string",
      "description": "Sender's assigned reference number",
      "children": []
    },
    {
      "name": "receiverRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The 9-digit Fedwire routing number of the financial institution receiving the wire drawdown request. The ABA directory provides financial institution routing numbers.",
      "children": []
    },
    {
      "name": "receiverName",
      "kind": "optional",
      "type": "string",
      "description": "Name of the FI receiving the funds",
      "children": []
    },
    {
      "name": "originatingFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of the financial institution sending the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier at the financial institution sending the wire"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originating financial institution"
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "object",
      "description": "Details of the party sending the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the party sending the wire. For outbound payments where originator details are submitted with the payment request, this is the customer account number. Otherwise, the system automatically populates this field."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Originator name. "
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "intermediaryFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of any intermediary bank involved in the wire transaction. Not all wire transfers use an intermediary FI.",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the intermediary bank involved with the wire transaction."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Intermediary financial institution name."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "beneficiaryFi",
      "kind": "optional",
      "type": "object",
      "description": "Details of the financial institution receiving the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Specifies the type of value in the identifier field that follows it. 1 character. See the list of ID codes.\n\nFor outbound payments, the value for the beneficiary FI is F to indicate the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the bank receiving the wire. For outbound payments, this is the bank Fed routing number. This field is optional for domestic wires because the system automatically uses the banking information for the value entered into the receiverRoutingNumber field."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary financial institution name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "object",
      "description": "Details of the party receiving the wire",
      "children": [
        {
          "name": "idCode",
          "kind": "optional",
          "type": "string",
          "description": "Identifier code for the party receiving the wire. For outbound payments, this is \"D\" to indicate a deposit account."
        },
        {
          "name": "identifier",
          "kind": "optional",
          "type": "string",
          "description": "Identifier for the party receiving the wire. For outbound payments, this is the beneficiary's account number."
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Beneficiary name. Maximum 140 characters."
        },
        {
          "name": "postalAddressInfo",
          "kind": "optional",
          "type": "object",
          "description": "Postal address details of the party involved - this is the NEW ISO20022 format for address information",
          "children": [
            {
              "name": "adrLine1",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            },
            {
              "name": "adrLine2",
              "kind": "optional",
              "type": "string",
              "description": "Max 35 chars. If adrLine2 is provided, then adrLine1 must not be blank"
            },
            {
              "name": "country",
              "kind": "required",
              "type": "string",
              "description": "2 character country ISO country code. For example US, GB"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "2-char state. For example NY, FL"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 15 chars"
            },
            {
              "name": "city",
              "kind": "required",
              "type": "string",
              "description": "Max 35 chars"
            }
          ]
        },
        {
          "name": "address1",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the street address"
        },
        {
          "name": "address2",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters usually used for the city, state, and postal code"
        },
        {
          "name": "address3",
          "kind": "optional",
          "type": "string",
          "description": "DEPRECATED - Use the PostalAddress object instead.\nField of 35 characters for any information, for example, country code or information related to the wire"
        }
      ]
    },
    {
      "name": "originatorToBeneficiary1",
      "kind": "optional",
      "type": "string",
      "description": "Field for additional information from the originator to the beneficiary.",
      "children": []
    },
    {
      "name": "beneficiaryReference",
      "kind": "optional",
      "type": "string",
      "description": "Optional field for additional information. 35 characters maximum.",
      "children": []
    },
    {
      "name": "receiptDate",
      "kind": "optional",
      "type": "string",
      "description": "Month and day the wire was received in the format mmdd",
      "children": []
    },
    {
      "name": "receiptTime",
      "kind": "optional",
      "type": "string",
      "description": "Time the wire was received, in the format hhmm",
      "children": []
    },
    {
      "name": "wasReversed",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the payment was reversed, otherwise false",
      "children": []
    },
    {
      "name": "isInternational",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the payment is international, otherwise false",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "releasedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was released in a distribution to the Fed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Business date on which the payment is effective",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was posted to the Cross River account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID of a previously sent wire that was reversed. Otherwise, the same as the payment ID.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, the Cross River account involved in the payment. More about Product IDs.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Includes OK (posted), RES (account restricted), NSF (insufficient funds in the account sending the wire)",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-wiresv1payments",
  "legacyHash": "cPNM_hcjLbLMMi3Vt4BFe"
}
```
:::

### *Validation Rules*

- **Originator Requirement**
  - If Originator is null or empty, the system will use the configured account/product originator.
  - If the configured account/product originator contains any of the following ID codes, the request will be rejected:
    - "U" (CHIPS Identifier)
    - "C" (CHIPS Participant)
    - "F" (Fed Routing Number)
  - **Error Message:** `Account or product configuration error.`
- **Intermediary FI and Beneficiary FI Uniqueness**
  - If both are specified with the same identifier, the request will be rejected.
  - **Error Message:** `IntermediaryFi and BeneficiaryFi cannot be identical.`
- **Beneficiary Validation**
  - Must be validated as a person or organization.
  - ***Errors follow the person/organization validation rules.***
- **Beneficiary FI Validation**
  - Must be validated as a financial institution.
  - ***Errors follow the financial institution validation rules.***
- **Intermediary FI Validation**
  - Must be validated as a financial institution.
  - ***Errors follow the financial institution validation rules.***

### Default Values

- **Beneficiary FI (if not explicitly provided — no ID Code or Identifier specified)**
  - Derived from the Receiver Routing Number:
    - ID Code: "F"
    - Identifier: Routing number
    - Name: Participant’s customer name
    - Address1: Participant’s city and state

[title] Cancel payment
[path] Payments/ACH/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:&#x20;

- [Ach.Payment.Canceled](docId\:AVRvavzdk7hC0UfXn6XZ9)&#x20;

## API reference

Cancels an ACH transaction.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /ach/v1/payments/{id}/cancel",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/ach/v1/payments/{id}/cancel",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "HRBR9MsKSwwyH-NYrjwNM",
        "language": "curl",
        "code": "curl --location --globoff --request POST 'https://sandbox.crbcos.com/ach/v1/payments/{{id}}/cancel?id=63f87c2b-38e9-438f-a3c8-b07401212511' \\\n--header 'Authorization: Bearer <token>'",
        "customLabel": ""
      },
      {
        "id": "Sv7nF_dbswuBC1naIgDjC",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/payments/{{id}}/cancel?id=63f87c2b-38e9-438f-a3c8-b07401212511',\n  'headers': {\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "0fhf31t89iCNXQvtYF81M",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"POST\", \"/ach/v1/payments/{{id}}/cancel?id=63f87c2b-38e9-438f-a3c8-b07401212511\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "OvGlJj2pYMD2AuGECCfll",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/payments/{{id}}/cancel?id=63f87c2b-38e9-438f-a3c8-b07401212511\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Authorization\"] = \"Bearer <token>\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "azSbUgraxEn8b_olYeCcU",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/payments/{{id}}/cancel?id=63f87c2b-38e9-438f-a3c8-b07401212511\"\n  method := \"POST\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "azSbUgraxEn8b_olYeCcU"
  },
  "results": {
    "languages": [
      {
        "id": "OaQ6YHIkwFzOhLKg7zsw2",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"id\": \"63f87c2b-38e9-438f-a3c8-b07401212511\",\n  \"accountNumber\": \"2151546989\",\n  \"referenceId\": \"A248NEY051X2\",\n  \"paymentType\": \"Origination\",\n  \"direction\": \"Outbound\",\n  \"status\": \"Canceled\",\n  \"source\": \"Api\",\n  \"postingType\": \"Aggregate\",\n  \"postingCode\": \"OK\",\n  \"posting\": \"Canceled\",\n  \"originator\": {\n    \"routingNumber\": \"021214891\",\n    \"accountNumber\": \"2151546989\",\n    \"accountType\": \"Checking\",\n    \"name\": \"Cross River Bank\",\n    \"identification\": \"021214891\"\n  },\n  \"receiver\": {\n    \"routingNumber\": \"021200339\",\n    \"accountNumber\": \"6546543213\",\n    \"accountType\": \"Checking\",\n    \"name\": \"Glenn Quagmire\",\n    \"identification\": \"XYZ123\"\n  },\n  \"secCode\": \"WEB\",\n  \"description\": \"JulyFees\",\n  \"transactionType\": \"Pull\",\n  \"amount\": 19,\n  \"serviceType\": \"SameDay\",\n  \"extendedDetails\": {\n    \"paymentType\": \"S\"\n  },\n  \"effectiveDate\": \"230905\",\n  \"traceNumber\": \"021214891385537\",\n  \"wasReturned\": false,\n  \"wasCorrected\": false,\n  \"holdDays\": 0,\n  \"original\": {\n    \"paymentId\": \"63f87c2b-38e9-438f-a3c8-b07401212511\"\n  },\n  \"createdAt\": \"2023-09-05T13:32:44.637-04:00\",\n  \"canceledAt\": \"2023-09-05T13:33:14.7192084-04:00\",\n  \"partnerId\": \"1e5d3f04-ae24-4af6-9e30-aecf012b99dd\",\n  \"productId\": \"cc62e17f-5912-483e-9e42-aed30112fbb6\",\n  \"lastModifiedAt\": \"2023-09-05T13:33:14.7192084-04:00\",\n  \"purpose\": \"sample payment\",\n  \"clientIdentifier\": \"9a6c6c07-6c6d-4cff-91f6-901b90c4d2f9\"\n}"
      }
    ],
    "selectedLanguageId": "OaQ6YHIkwFzOhLKg7zsw2"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "Payment ID. This ID first appears as the value for the id attribute in the response to the originate a payment call. This ID is in GUID format.",
        "": "Payment ID. This ID first appears as the value for the id attribute in the response to the originate a payment call. This ID is in GUID format."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Payment ID. This ID first appears as the value for this attribute in the response to the originate a payment call. This ID is in the GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Cross River account number for payment originator.  Depending on the account type, the number of digits will vary. The first digit indicates the kind of account.",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment. The reference ID always begins with the first letter of the rail. For ACH the reference ID starts with 'A'.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "What kind of payment was sent, for example, origination or return. See the ACH Request and response codes page for a list of payment types.",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "The payment direction, which includes:\n- Inbound: payment received by a Cross River account from another bank\n- Outbound: a payment sent from a Cross River account to another bank",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Current lifecycle status of the payment, for example, Created, Processing, or Completed. See the ACH Request and response codes page for a list of payment statuses.",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Payment channel:\n- Api\n- PartnerPortal\n- OpsPortal\n- File",
      "children": []
    },
    {
      "name": "postingType",
      "kind": "optional",
      "type": "string",
      "description": "How the payment is grouped for posting:\n- Individual\n- Aggregate (batch)",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Identifier (GUID) used to group related client payments in batch submissions, if you originate the client batch",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "Integer",
      "description": "Sequence number of the payment in the batch, if you originate the client batch",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "Fedwire or ACH batch ID used for settlement tracking",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "Integer",
      "description": "Sequence of the payment inside of the batch sent to or received from the Fed",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "ID representing the memo post associated with this transaction",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code representing the posting category used internally",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "The related Cross River system transaction status. When you originate a payment, the system initially returns OK. If the payment fails or is declined, the value changes to a Cross River system-generated code:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Processing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because: \n- OfacUnableToDetermine\n- OfacConfirmed\n- OfacUnconfirmed\n- Other",
      "children": []
    },
    {
      "name": "blockedReason",
      "kind": "optional",
      "type": "string",
      "description": "Reason for any OFAC or compliance-based block:\n- Ofac\n- Other",
      "children": []
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "Object",
      "description": "Originator bank details",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies the originator financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number for payment originator"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Originator deposit account type:\n- Checking\n- Savings\n- GeneralLedger\n- Loan"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Name of the originator of the transaction. Nacha refers to this as Company Name."
        },
        {
          "name": "identification",
          "kind": "optional",
          "type": "string",
          "description": "Originator Identification. Nacha refers to this as the Company Identification."
        },
        {
          "name": "data",
          "kind": "optional",
          "type": "string",
          "description": "Additional metadata provided by the originator. Nacha refers to this as Company Discretionary Data."
        }
      ]
    },
    {
      "name": "receiver",
      "kind": "optional",
      "type": "Object",
      "description": "Receiver bank details",
      "children": [
        {
          "name": "routingNumber",
          "kind": "optional",
          "type": "string",
          "description": "9-digit ABA routing number that identifies the receiver financial institution"
        },
        {
          "name": "accountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Account number for the receiver"
        },
        {
          "name": "accountType",
          "kind": "optional",
          "type": "string",
          "description": "Receiver deposit account type:\n- Checking\n- Savings\n- GeneralLedger\n- Loan"
        },
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Receiver name as it appears on the receiver account. Nacha refers to this as the Individual Name."
        },
        {
          "name": "identification",
          "kind": "optional",
          "type": "string",
          "description": "Receiver Identification. Nacha refers to this as the Individual Identification Number. 15 character maximum."
        },
        {
          "name": "data",
          "kind": "optional",
          "type": "string",
          "description": "Additional metadata provided by the receiver. Nacha refers to this as Discretionary Data."
        }
      ]
    },
    {
      "name": "secCode",
      "kind": "optional",
      "type": "string",
      "description": "Standard Entry Class (SEC) code required by Nacha for every ACH transaction. See the ACH Request and response code page.",
      "children": []
    },
    {
      "name": "description",
      "kind": "optional",
      "type": "string",
      "description": "Description of the payment provided at origination",
      "children": []
    },
    {
      "name": "transactionType",
      "kind": "optional",
      "type": "string",
      "description": "Sending or requesting funds:\n- Push (originator is sending funds—debit)\n- Pull (originator is receiving funds—credit)",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Dollar amount of payment in positive integral cents. For example, $1.00 appears as 100.",
      "children": []
    },
    {
      "name": "serviceType",
      "kind": "optional",
      "type": "string",
      "description": "When the payment completes:\n- Standard (Payment effective the following business day. International payments must use this service type.)\n- SameDay (Payment effective same day, subject to certain constraints. See ACH overview.)",
      "children": []
    },
    {
      "name": "extendedDetails",
      "kind": "optional",
      "type": "Object",
      "description": "ACH-specific fields. Learn more on the Nacha site.",
      "children": [
        {
          "name": "authCode",
          "kind": "optional",
          "type": "string",
          "description": "Authorization code related to card-based transactions"
        },
        {
          "name": "cardExpDate",
          "kind": "optional",
          "type": "string",
          "description": "Expiration date of the card used"
        },
        {
          "name": "cardTransactionType",
          "kind": "optional",
          "type": "string",
          "description": "Card transaction types are represented by specific codes that explain what kind of transaction took place at the point of sale, for example, Purchase or Refund"
        },
        {
          "name": "checkSerialNumber",
          "kind": "optional",
          "type": "string",
          "description": "Serial number for check-based transactions"
        },
        {
          "name": "docReferenceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Document reference number associated with the transaction"
        },
        {
          "name": "itemType",
          "kind": "optional",
          "type": "string",
          "description": "Type of financial item, for example, Check or  Card"
        },
        {
          "name": "networkIdentification",
          "kind": "optional",
          "type": "string",
          "description": "Network through which the transaction was processed"
        },
        {
          "name": "paymentType",
          "kind": "optional",
          "type": "string",
          "description": "Payment types are used in proceessing and are based on the authorization of the account holder to debit their account:\n- S for single\n- R for recurring"
        },
        {
          "name": "processControl",
          "kind": "optional",
          "type": "string",
          "description": "Internal Cross River processing control code"
        },
        {
          "name": "reference1",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "reference2",
          "kind": "optional",
          "type": "string",
          "description": "Reference field for reconciliation"
        },
        {
          "name": "researchNumber",
          "kind": "optional",
          "type": "string",
          "description": "Research ID for dispute or trace purposes"
        },
        {
          "name": "terminalIdentification",
          "kind": "optional",
          "type": "string",
          "description": "ID of the terminal where the transaction occurred"
        },
        {
          "name": "terminalLocation",
          "kind": "optional",
          "type": "string",
          "description": "Location descriptor of the terminal"
        },
        {
          "name": "terminalCity",
          "kind": "optional",
          "type": "string",
          "description": "City where the terminal is located"
        },
        {
          "name": "terminalState",
          "kind": "optional",
          "type": "string",
          "description": "State where the terminal is located"
        },
        {
          "name": "transactionDate",
          "kind": "optional",
          "type": "string",
          "description": "Date the transaction happened"
        },
        {
          "name": "transactionDesc",
          "kind": "optional",
          "type": "string",
          "description": "Additional description of the transaction"
        },
        {
          "name": "transactionSerial",
          "kind": "optional",
          "type": "string",
          "description": "Serial number fo the transaction"
        },
        {
          "name": "transactionTime",
          "kind": "optional",
          "type": "string",
          "description": "Transaction timestamp"
        },
        {
          "name": "cardAccountNumber",
          "kind": "optional",
          "type": "string",
          "description": "Card account number used in the transaction"
        }
      ]
    },
    {
      "name": "iatDetails",
      "kind": "optional",
      "type": "Object",
      "description": "International ACH details. \nThis object is only returned for the IAT secCode.",
      "children": [
        {
          "name": "originator",
          "kind": "optional",
          "type": "Object",
          "description": "Payment sender details",
          "children": [
            {
              "name": "address",
              "kind": "optional",
              "type": "string",
              "description": "Originator street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Originator city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Originator state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Originator 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receiver",
          "kind": "optional",
          "type": "Object",
          "description": "Payment receiver details",
          "children": [
            {
              "name": "address",
              "kind": "optional",
              "type": "string",
              "description": "Receiver street or post office box address"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Receiver city full name"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "Receiver state or province name"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver postal or ZIP code"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiver 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "originatingBank",
          "kind": "optional",
          "type": "Object",
          "description": "Details of financial institution originating the IAT",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of originating financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank DFI Identification number, which is the first 8 digits of its routing number."
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Originating DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Originating bank 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "receivingBank",
          "kind": "optional",
          "type": "Object",
          "description": "Details of financial institution receiving the IAT",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of receiving financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank DFI Identification number, which is the first 8 digits of its routing number"
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "Receiving DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "Receiving bank 2-letter ISO country code"
            }
          ]
        },
        {
          "name": "remittanceInfo1",
          "kind": "optional",
          "type": "string",
          "description": "Additional IAT information.\nA second field is available as remittanceInfo2."
        },
        {
          "name": "correspondentBank1",
          "kind": "optional",
          "type": "Object",
          "description": "Details of a correspondent (intermediary) bank, if there is one.\nYou can have up to 5 correspondent banks: (correspondentBank1, correspondentBank2, correspondentBank3, correspondentBank4, correspondentBank5, each with the same child attributes.",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": " Name of financial institution"
            },
            {
              "name": "identification",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification number, which is the first 8 digits of its routing number."
            },
            {
              "name": "idQualifier",
              "kind": "optional",
              "type": "string",
              "description": "DFI Identification Number Qualifier:\n- 01 National Clearing System Number\n- 02 BIC Coder\n- 03 IBAN"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        },
        {
          "name": "transactionTypeCode",
          "kind": "optional",
          "type": "string",
          "description": "Part of the addenda record. An additional way to explain the purpose of the IAT. See the ACH request and response codes page for IAT transaction types."
        },
        {
          "name": "originatingCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the originating currency"
        },
        {
          "name": "destinationCurrency",
          "kind": "optional",
          "type": "string",
          "description": "An ISO three-character code to identify the receiving currency"
        }
      ]
    },
    {
      "name": "addenda",
      "kind": "optional",
      "type": "string",
      "description": "Supplemental data to identify an account holder or provide information about the payment. This may include details such as invoice numbers.",
      "children": []
    },
    {
      "name": "effectiveDate",
      "kind": "optional",
      "type": "string",
      "description": "Effective date of the ACH payment (YYYY-MM-DD)",
      "children": []
    },
    {
      "name": "reasonCode",
      "kind": "optional",
      "type": "string",
      "description": "Valid ACH return code explaining the return reason in accordance with NACHA guidelines (for example, R01, R02). See the ACH Request and Response Codes page for the return codes. ",
      "children": []
    },
    {
      "name": "reasonData",
      "kind": "optional",
      "type": "string",
      "description": "More information about the reason for the return.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "Unique ACH trace number for the transaction",
      "children": []
    },
    {
      "name": "settlementDate",
      "kind": "optional",
      "type": "string",
      "description": "Date payment settled in the receiver's account",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if payment was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "wasCorrected",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if a payment is sent with bad info but the receiving FI fixes it and sends back the information (NOC). Otherwise false.",
      "children": []
    },
    {
      "name": "holdDays",
      "kind": "optional",
      "type": "Integer",
      "description": "For ACH pulls, allows defining a number of days to delay credit of funds to an account to mitigate fraud and NSF scenarios",
      "children": []
    },
    {
      "name": "previous",
      "kind": "optional",
      "type": "Object",
      "description": "Previous payment details",
      "children": [
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "Payment ID for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Trace number for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "settlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Settlement date for an original payment if the payment is returned or the system sends a NOC"
        },
        {
          "name": "reasonData",
          "kind": "optional",
          "type": "string",
          "description": "Supporting data for the reason code for an original payment if the payment is returned or the system sends a NOC"
        }
      ]
    },
    {
      "name": "original",
      "kind": "optional",
      "type": "Object",
      "description": "Original payment details when a payment was returned or a NOC was sent.\nResending a payment after failure as a completely new request. The new payment cannot be linked to the failed payment.",
      "children": [
        {
          "name": "paymentId",
          "kind": "optional",
          "type": "string",
          "description": "Payment ID for an original payment before any returns or corrections"
        },
        {
          "name": "reasonCode",
          "kind": "optional",
          "type": "string",
          "description": "Reason code for an original payment"
        },
        {
          "name": "traceNumber",
          "kind": "optional",
          "type": "string",
          "description": "Trace number for an original payment"
        },
        {
          "name": "settlementDate",
          "kind": "optional",
          "type": "string",
          "description": "Settlement date for an original payment"
        },
        {
          "name": "reasonData",
          "kind": "optional",
          "type": "string",
          "description": "Supporting data for the reason code for an original payment"
        }
      ]
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was blocked by BSA/AML. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was posted to the Cross River account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, the Cross River account involved in the payment.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Reason for the ACH transfer. For internal use only. The data is not included with the outgoing ACH batch file.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "externalPrefix",
      "kind": "optional",
      "type": "string",
      "description": "Prefix from external system integration",
      "children": []
    },
    {
      "name": "externalAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "External-facing account reference number",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-achv1paymentsidcancel",
  "legacyHash": "MHMqQcZ5W0fiT5WcbEgiR"
}
```
:::




[title] Payments by ID
[path] Payments/Card payments/Payments APIs/

## API reference

Retrieve payment details by payment ID

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/payments/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/cardpayments/v1/payments/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "33aWPaSZUBoxhnxSXFyH0",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/cardpayments/v1/payments/9b16efc0-166c-96e1-47fa-5167b34bab85' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer Token'"
      },
      {
        "id": "VeeGmwkA_clEzxjzmMBUK",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/cardpayments/v1/payments/9b16efc0-166c-96e1-47fa-5167b34bab85',\n  'headers': {\n    'Accept': 'application/json',\n    'Authorization': 'Bearer Token'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "fMIo89EnX_crr5ngAqPZA",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/cardpayments/v1/payments/9b16efc0-166c-96e1-47fa-5167b34bab85\"\n\npayload = {}\nheaders = {\n  'Accept': 'application/json',\n  'Authorization': '••••••'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
      },
      {
        "id": "AxHF85_K4fcIC0doIejLE",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/cardpayments/v1/payments/9b16efc0-166c-96e1-47fa-5167b34bab85\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer Token\"\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "S1rSMlrok51eWFaTXcguW",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/cardpayments/v1/payments/9b16efc0-166c-96e1-47fa-5167b34bab85\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer Token\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "33aWPaSZUBoxhnxSXFyH0"
  },
  "results": {
    "languages": [
      {
        "id": "qaLRHBp_njcq9NhtL7R3X",
        "language": "200",
        "code": "{\n    \"id\": \"5124e2c1-4660-4cc2-a38f-b42501346965\",\n    \"clientIdentifier\": \"395673a4-d91d-5f82-993d-9e1a9e5ef2a3\",\n    \"amount\": 100,\n    \"paymentType\": \"Pull\",\n    \"status\": \"Failed\",\n    \"source\": \"Api\",\n    \"productId\": \"31cae717-408e-4813-a6b1-ad6600e48632\",\n    \"partnerId\": \"82a1cfb9-de92-4cc2-8a74-ad6600e36d7a\",\n    \"cardId\": \"febe40ae-cbe7-4428-9aab-b41b004159eb\",\n    \"cardToken\": \"7D30206F4D3848D387564F4FFDC3D151000000\",\n    \"cardBrand\": \"Visa\",\n    \"panLastFour\": \"1111\",\n    \"issuerCountryCode\": \"US\",\n    \"reasonCode\": \"9999\",\n    \"reasonDescription\": \"CVV not found\",\n    \"correspondingEntity\": {\n        \"firstName\": \"Randy\",\n        \"lastName\": \"Marsh\",\n        \"externalAccountIdentifier\": \"411111***1111\",\n        \"address\": {\n            \"street1\": \"260 Avenue De Los Mexicanos\",\n            \"city\": \"South Park\",\n            \"state\": \"CO\",\n            \"postalCode\": \"81241\",\n            \"countryCode\": \"US\"\n        }\n    },\n    \"merchantVerificationValue\": \"123456\",\n    \"accountNumber\": \"2287979807\",\n    \"businessType\": \"AA\",\n    \"wasRefunded\": false,\n    \"createdAt\": \"2026-04-07T14:42:53.557-04:00\",\n    \"authorizedOn\": \"2026-04-07T14:45:09.44-04:00\",\n    \"submittedOn\": \"2026-04-07T14:45:10.397-04:00\",\n    \"failedAt\": \"2026-04-07T14:45:10.397-04:00\",\n    \"lastModifiedAt\": \"2026-04-07T14:47:22.3277117-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "qaLRHBp_njcq9NhtL7R3X"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The GUID of the payment you want to retrieve",
        "": "The GUID of the payment you want to retrieve"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The GUID of the payment you want to retrieve",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that is the primary identifier for the payment.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": " ",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "string",
      "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Indicates the direction of the payment:\nPush -  Money sent out (e.g. disbursement to a customer)\nPull -  Money received (e.g. a charge to a customer's card)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "One of  \"Created\",\n                        \"Pending\",\n                        \"Authorized\",\n                        \"Submitted\",\n                        \"Processing\",\n                        \"Completed\",\n                        \"Rejected\",\n                        \"Failed\"",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "How the payment was initiated e.g. API ",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the product, as defined in COS.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the partner, as defined in COS.",
      "children": []
    },
    {
      "name": "cardId",
      "kind": "optional",
      "type": "string",
      "description": " A UUID that identifies the card used.",
      "children": []
    },
    {
      "name": "cardToken",
      "kind": "optional",
      "type": "string",
      "description": "A randomly generated string of characters that relates to the consumer's payment card (15-38 alphanumeric characters). ",
      "children": []
    },
    {
      "name": "network",
      "kind": "optional",
      "type": "string",
      "description": "The network through which the payment is processed (e.g. Visa, Mastercard).",
      "children": []
    },
    {
      "name": "cardBrand",
      "kind": "optional",
      "type": "string",
      "description": "One of  \"AmericanExpress\",\n                        \"ChinaUnionPay\",\n                        \"Dankort\",\n                        \"DinersClub\",\n                        \"Discover\",\n                        \"Hipercard\",\n                        \"JCB\",\n                        \"Laser\",\n                        \"Maestro\",\n                        \"MasterCard\",\n                        \"RuPay\",\n                        \"Solo\",\n                        \"Switch\",\n                        \"Visa\",\n                        \"Unknown\"",
      "children": []
    },
    {
      "name": "panLastFour",
      "kind": "optional",
      "type": "string",
      "description": "The last four digits of the Primary Account Number (card number).",
      "children": []
    },
    {
      "name": "issuerCountryCode",
      "kind": "optional",
      "type": "string",
      "description": "A string representing the country code of the card issuer.",
      "children": []
    },
    {
      "name": "retrievalReferenceId",
      "kind": "optional",
      "type": "string",
      "description": "A unique identifier used for retrieving transaction details, often used in disputes or reconciliation.",
      "children": []
    },
    {
      "name": "reasonCode",
      "kind": "optional",
      "type": "string",
      "description": "A 2-digit code signifying the transaction result (approved or decline). For example, 00 means successful.",
      "children": []
    },
    {
      "name": "reasonDescription",
      "kind": "optional",
      "type": "string",
      "description": "A string describing the transaction result. For example, Approved.",
      "children": []
    },
    {
      "name": "traceNumber",
      "kind": "optional",
      "type": "string",
      "description": "A unique number assigned to a transaction from the time it leaves the merchant bank until it arrives at the cardholder bank",
      "children": []
    },
    {
      "name": "correspondingEntity",
      "kind": "optional",
      "type": "object",
      "description": "References information about the corresponding entity for the transaction",
      "children": [
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name. Min 1 character, max 35 characters"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name. Min 1 character, max 35 characters"
        },
        {
          "name": "externalAccountIdentifier",
          "kind": "optional",
          "type": "string",
          "description": "Account number to ensure the money movement is routed to the correct destination."
        },
        {
          "name": "address",
          "kind": "optional",
          "type": "object",
          "description": "Address of card holder",
          "children": [
            {
              "name": "street1",
              "kind": "optional",
              "type": "string",
              "description": "Street address line 1. Max length 60"
            },
            {
              "name": "street2",
              "kind": "optional",
              "type": "string",
              "description": "Street address line 2. Max length 60"
            },
            {
              "name": "city",
              "kind": "optional",
              "type": "string",
              "description": "Name of the city. Max length 60"
            },
            {
              "name": "state",
              "kind": "optional",
              "type": "string",
              "description": "State code. 2 characters"
            },
            {
              "name": "postalCode",
              "kind": "optional",
              "type": "string",
              "description": "Max 10 characters"
            },
            {
              "name": "countryCode",
              "kind": "optional",
              "type": "string",
              "description": "2-letter ISO country code"
            }
          ]
        }
      ]
    },
    {
      "name": "mcc",
      "kind": "optional",
      "type": "string",
      "description": "Merchant Category Code (MCC). 4-digits that a credit card issuer uses to categorize consumer transactions for their card.",
      "children": []
    },
    {
      "name": "merchantVerificationValue",
      "kind": "optional",
      "type": "string",
      "description": "A value used to verify the merchant's identity.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number associated with the payment.",
      "children": []
    },
    {
      "name": "businessType",
      "kind": "optional",
      "type": "string",
      "description": "Business Application Indicator (BAI) -- a standardized category used to classify the nature of a business.\nOne of \nBB - 'Business2Business', \nFD - 'Funds Disbursement ', \nAA - 'Account2Account', \nPP - 'Person2Person', \nMT -'Money Transfer', \nCD - 'Cash Deposit', \nFT - 'Funds Transfer', \nWT - 'Wallet Transfer', \nCP - 'Card Bill Payment'\nMD - 'Merchant Disbursement'",
      "children": []
    },
    {
      "name": "purposeOfPayment",
      "kind": "optional",
      "type": "string",
      "description": "The reason for the transaction. e.g. payroll. Needed for international. ",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that links the payment to the core banking system.",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the corresponding memo post (a temporary transaction posting).",
      "children": []
    },
    {
      "name": "memoPostRemovedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the memo post was removed. I.e. When the temporary hold was released.",
      "children": []
    },
    {
      "name": "wasRefunded",
      "kind": "optional",
      "type": "boolean",
      "description": "Boolean value indicating whether the payment has been refunded.",
      "children": []
    },
    {
      "name": "refundPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "A UUID that identifies the refund transaction associated with the payment.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was created",
      "children": []
    },
    {
      "name": "authorizedOn",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was authorized by the issuing bank.",
      "children": []
    },
    {
      "name": "submittedOn",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was submitted to the network.",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was rejected.",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment was successfully completed.",
      "children": []
    },
    {
      "name": "failedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment failed to process.",
      "children": []
    },
    {
      "name": "limitsEligibleOn",
      "kind": "optional",
      "type": "string",
      "description": "When the transaction becomes eligible for limit calculations.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "When the payment record was last modified.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1paymentsid",
  "legacyHash": "uDAHEhDpcGmteMb-UUXwk"
}
```
:::


[title] 
[path] Payments/Card payments/


[title] Limits utilization
[path] Payments/ACH/APIs/

## API reference

Returns the percentage of your ACH payment limit used.

:::ApiMethodV2
```json
{
  "name": "Endpoint: ach/v1/limits-utilization/{productId}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/ach/v1/limits-utilization/{productId}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "eu7zyTdFsC0yQ9chnsH7r",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb'",
        "customLabel": ""
      },
      {
        "id": "OQVBPfWx0RIQu4mACPFIc",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "MpjiF1EdiWS_c_OLJaOqk",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"GET\", \"/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "L3RNCBaMDlMJcddx4Ucl3",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "FF1GP-nFBFW1M534T40BQ",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/ach/v1/limits-utilization/a68a0fa5-98fe-4cd5-b626-af5b0137e0cb\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "eu7zyTdFsC0yQ9chnsH7r"
  },
  "results": {
    "languages": [
      {
        "id": "Kv_dhgC5D91C1_TZnk7YQ",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"productId\": \"a68a0fa5-98fe-4cd5-b626-af5b0137e0cb\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"limitDate\": \"2025-07-03T00:00:00-04:00\",\n    \"pullPercent\": 0,\n    \"pushPercent\": 0,\n    \"totalCountPercent\": 0\n}"
      }
    ],
    "selectedLanguageId": "Kv_dhgC5D91C1_TZnk7YQ"
  },
  "request": {
    "pathParameters": [
      {
        "name": "productId",
        "kind": "required",
        "type": "string",
        "description": "ID in GUID format of the product used to initiate ACH payments",
        "": "ID in GUID format of the product used to initiate ACH payments"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the product used to initiate ACH payments"
    },
    {
      "name": "partnerId ",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "limitDate ",
      "kind": "optional",
      "type": "string",
      "description": "Date the limit is set for. The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "pullPercent",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the daily limit already used for incoming (credit) payments",
      "children": []
    },
    {
      "name": "pushPercent",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the daily limit already used for outgoing (debit) payments",
      "children": []
    },
    {
      "name": "totalCountPercent",
      "kind": "optional",
      "type": "number",
      "description": "Percentage of the total count of transactions",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-achv1limits-utilizationproductid",
  "legacyHash": "36ViEgJZyn8Osw4Z_YPdO"
}
```
:::

****

[title] Print check payment
[path] Payments/Checks/APIs/

# Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Check.PrintedPayment.Submitted](docId\:cWUBvaS0BDIfokyxu5LhQ)
- [Check.PrintedPayment.Sent](docId\:cWUBvaS0BDIfokyxu5LhQ)
- Check.PrintedPayment.Failed
- [Check.PrintedPayment.Returned](docId\:cWUBvaS0BDIfokyxu5LhQ)
- [Check.PrintedPayment.Canceled](docId\:cWUBvaS0BDIfokyxu5LhQ)
- [Core.Transaction.Completed](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Check.PositivePay.Created](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Check.PositivePay.Revoked](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;

## API reference

Sends a request to print and deliver a physical check.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/printed-payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/checks/v1/printed-payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "CkBeCLe8iPdXERwfge2bM",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/printed-payments' \\\n--data '{\n  \"accountNumber\": \"2136870751\",\n  \"amount\": 5000,\n  \"payeeName\": \"Frank Wright\",\n  \"payeeAddress\": \"123 Main Street\",\n  \"payeeCity\": \"New York\",\n  \"payeeState\": \"NY\",\n  \"payeeCountry\": \"US\",\n  \"payeeZip\": \"10001\",\n  \"memo\": \"Test check print\",\n  \"postageCode\": \"UspsFirstClass\"\n}'",
        "customLabel": ""
      },
      {
        "id": "R0cJ16YtHxcXH-RUxYsiI",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/printed-payments',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"accountNumber\\\": \\\"2136870751\\\",\\r\\n  \\\"amount\\\": 5000,\\r\\n  \\\"payeeName\\\": \\\"Frank Wright\\\",\\r\\n  \\\"payeeAddress\\\": \\\"123 Main Street\\\",\\r\\n  \\\"payeeCity\\\": \\\"New York\\\",\\r\\n  \\\"payeeState\\\": \\\"NY\\\",\\r\\n  \\\"payeeCountry\\\": \\\"US\\\",\\r\\n  \\\"payeeZip\\\": \\\"10001\\\",\\r\\n  \\\"memo\\\": \\\"Test check print\\\",\\r\\n  \\\"postageCode\\\": \\\"UspsFirstClass\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "UMYly34RoUPy6jqzNYt3B",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/checks/v1/printed-payments\"\n\npayload = \"{\\r\\n  \\\"accountNumber\\\": \\\"2136870751\\\",\\r\\n  \\\"amount\\\": 5000,\\r\\n  \\\"payeeName\\\": \\\"Frank Wright\\\",\\r\\n  \\\"payeeAddress\\\": \\\"123 Main Street\\\",\\r\\n  \\\"payeeCity\\\": \\\"New York\\\",\\r\\n  \\\"payeeState\\\": \\\"NY\\\",\\r\\n  \\\"payeeCountry\\\": \\\"US\\\",\\r\\n  \\\"payeeZip\\\": \\\"10001\\\",\\r\\n  \\\"memo\\\": \\\"Test check print\\\",\\r\\n  \\\"postageCode\\\": \\\"UspsFirstClass\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "WWP50RcXc8ToFfmoJIMbu",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/printed-payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"accountNumber\\\": \\\"2136870751\\\",\\r\\n  \\\"amount\\\": 5000,\\r\\n  \\\"payeeName\\\": \\\"Frank Wright\\\",\\r\\n  \\\"payeeAddress\\\": \\\"123 Main Street\\\",\\r\\n  \\\"payeeCity\\\": \\\"New York\\\",\\r\\n  \\\"payeeState\\\": \\\"NY\\\",\\r\\n  \\\"payeeCountry\\\": \\\"US\\\",\\r\\n  \\\"payeeZip\\\": \\\"10001\\\",\\r\\n  \\\"memo\\\": \\\"Test check print\\\",\\r\\n  \\\"postageCode\\\": \\\"UspsFirstClass\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "0ArpUVqPMAC6wyFq4z7UR",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/printed-payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"accountNumber\": \"2136870751\",`+\"\n\"+`\n  \"amount\": 5000,`+\"\n\"+`\n  \"payeeName\": \"Frank Wright\",`+\"\n\"+`\n  \"payeeAddress\": \"123 Main Street\",`+\"\n\"+`\n  \"payeeCity\": \"New York\",`+\"\n\"+`\n  \"payeeState\": \"NY\",`+\"\n\"+`\n  \"payeeCountry\": \"US\",`+\"\n\"+`\n  \"payeeZip\": \"10001\",`+\"\n\"+`\n  \"memo\": \"Test check print\",`+\"\n\"+`\n  \"postageCode\": \"UspsFirstClass\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "CkBeCLe8iPdXERwfge2bM"
  },
  "results": {
    "languages": [
      {
        "id": "QqHiLt-FHhPgn7vzGSzAQ",
        "language": "200",
        "code": "{\n    \"id\": \"2c49c6ec-ad60-41fc-99e8-b49e00f92120\",\n    \"fundingAccountNumber\": \"2136870751\",\n    \"status\": \"Requested\",\n    \"reserveAccountNumber\": \"2532597750\",\n    \"amount\": 5000,\n    \"checkNumber\": 1000,\n    \"payeeName\": \"Frank Wright\",\n    \"payeeAddress\": \"123 Main Street\",\n    \"payeeCity\": \"New York\",\n    \"payeeState\": \"NY\",\n    \"payeeCountry\": \"US\",\n    \"payeeZip\": \"10001\",\n    \"lastModifiedAt\": \"2026-08-06T11:07:03.1485756-04:00\",\n    \"memo\": \"Test check print\",\n    \"postageCode\": \"UspsFirstClass\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\"\n}",
        "customLabel": ""
      },
      {
        "id": "TtYCharr2YgBjYgqWdlIo",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2331,\n            \"message\": \"Printing Account not found\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "QqHiLt-FHhPgn7vzGSzAQ"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "The customer account from which the check payment will be drawn",
        "": "The customer account from which the check payment will be drawn"
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
        "": "amount"
      },
      {
        "name": "payeeName",
        "kind": "required",
        "type": "string",
        "description": "Name written on the pay to the order of line of the check. Maximum 48 characters.",
        "": "Name written on the pay to the order of line of the check. Maximum 48 characters."
      },
      {
        "name": "payeeAddress",
        "kind": "required",
        "type": "string",
        "description": "Primary address line for the payee. Maximum 60 characters.",
        "": "payeeAddress"
      },
      {
        "name": "payeeAddress2",
        "kind": "optional",
        "type": "string",
        "description": "Secondary address line. Maximum 60 characters.",
        "": "payeeAddress2"
      },
      {
        "name": "payeeCity",
        "kind": "required",
        "type": "string",
        "description": "City name for the payee's address. Maximum 20 characters",
        "": "payeeCity"
      },
      {
        "name": "payeeState",
        "kind": "required",
        "type": "string",
        "description": "State/province 2-letter code for the payee's address (validated against country field)",
        "": "payeeState"
      },
      {
        "name": "payeeCountry",
        "kind": "required",
        "type": "string",
        "description": " 2-letter ISO code for the payee's address country",
        "": " 2-letter ISO code for the payee's address country"
      },
      {
        "name": "zip",
        "kind": "required",
        "type": "string",
        "description": "Postal code, also known as ZIP code. 5 - 10 characters.",
        "": "Postal code, also known as ZIP code. 5 - 10 characters."
      },
      {
        "name": "memo",
        "kind": "required",
        "type": "string",
        "description": "Memo line printed on the check (for example, invoice number, purpose). Maximum 100 characters.",
        "": "Memo line printed on the check (for example, invoice number, purpose). Maximum 100 characters."
      },
      {
        "name": "stubText",
        "kind": "optional",
        "type": "string",
        "description": "Additional text printed on the check stub/voucher portion. Maximum 100 characters.",
        "": "Additional text printed on the check stub/voucher portion. Maximum 100 characters."
      },
      {
        "name": "postageCode",
        "kind": "optional",
        "type": "string",
        "description": "Shipping method for the physical check. One of:\n- UspsFirstClass (default)\n- UspsPriority\n- UspsPriorityConfirmation\n- UspsPrioritySignature\n- FedExExpress2Day\n- FedExExpressOvernight\n- UspsOvernight\n- UspsCertifiedMail\n- FedExPriorityOvernight ",
        "": "Shipping method for the physical check. One of:\n- UspsFirstClass (default)\n- UspsPriority\n- UspsPriorityConfirmation\n- UspsPrioritySignature\n- FedExExpress2Day\n- FedExExpressOvernight\n- UspsOvernight\n- UspsCertifiedMail\n- FedExPriorityOvernight "
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. Maximum 50 characters.",
        "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. Maximum 50 characters."
      },
      {
        "name": "base64InsertData",
        "kind": "optional",
        "type": "string",
        "description": "Optional insert/attachment data to be included with the check as a PDF. Must be Base64 encoded.",
        "": "Optional insert/attachment data to be included with the check as a PDF. Must be Base64 encoded."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the printed payment transaction, in GUID format"
    },
    {
      "name": "fundingAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number from which funds are drawn",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Current status of the check.\n- Requested\n- Posting\n- Posted\n- Submitted\n- Confirmed\n- Mailed\n- Received\n- Failed\n- Returned\n- Canceled",
      "children": []
    },
    {
      "name": "reserveAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number for the check printing account. This is the account number that appears on the printed check.",
      "children": []
    },
    {
      "name": "Amount",
      "kind": "optional",
      "type": "string",
      "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "string",
      "description": "Primary address line for the payee",
      "children": []
    },
    {
      "name": "address2",
      "kind": "optional",
      "type": "string",
      "description": "Secondary address line",
      "children": []
    },
    {
      "name": "city",
      "kind": "optional",
      "type": "string",
      "description": "City name for the payee's address",
      "children": []
    },
    {
      "name": "state",
      "kind": "optional",
      "type": "string",
      "description": "State/province 2-letter code for the payee's address ",
      "children": []
    },
    {
      "name": "country",
      "kind": "optional",
      "type": "string",
      "description": "Country 2-letter code for the payee's address",
      "children": []
    },
    {
      "name": "zip",
      "kind": "optional",
      "type": "string",
      "description": "Postal code, also known as ZIP code",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "memo",
      "kind": "optional",
      "type": "string",
      "description": "Memo line printed on the check (for example, invoice number, purpose)",
      "children": []
    },
    {
      "name": "stubText",
      "kind": "optional",
      "type": "string",
      "description": "Additional text printed on the check stub/voucher portion",
      "children": []
    },
    {
      "name": "postageCode",
      "kind": "optional",
      "type": "string",
      "description": "Shipping method for the physical check. One of:\n- UspsFirstClass\n- UspsPriority\n- UspsPriorityConfirmation\n- UspsPrioritySignature\n- FedExExpress2Day\n- FedExExpressOvernight\n- UspsOvernight\n- UspsCertifiedMail\n- FedExPriorityOvernight ",
      "children": []
    },
    {
      "name": "insertUrl",
      "kind": "optional",
      "type": "string",
      "description": "URL to access the insert/attachment document",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1printed-payments",
  "legacyHash": "tYF7h8hn6FM3coscHl69C"
}
```
:::


[title] Error codes: Instant payments
[path] Payments/Instant payments/

Comprehensive reference for all error codes encountered across our instant payment rails (FedNow and TCH RTP).

## Most common error codes  - Top rejection reasons

The table below summarizes the most frequently occurring rejection codes across both paymentrails, based on actual production data. Use this table as a quick reference to understand which errors your integration is most likely to encounter and to prioritize your error-handling logic accordingly.

| Code | Description                                                                                                                                                                                                                         |
| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| TM01 | Cut-Off Time - Payment received after cut-off time                                                                                                                                                                                  |
| AC03 | Invalid Creditor Account Number                                                                                                                                                                                                     |
| DS24 | Order Rejected by the receiving party                                                                                                                                                                                               |
| AM04 | Insufficient Funds                                                                                                                                                                                                                  |
| AC06 | Blocked Account                                                                                                                                                                                                                     |
| AC04 | Closed Account Number                                                                                                                                                                                                               |
| 1100 | Any Other Reasons - i.e. not covered by ISO reason codes. Look at the `resultAdditionalInfo` field in the [Reject webhooks event](docId\:ffGq2OHYEbWPzn2old6Mc) for additional information that may be provided by the rejecting FI |
| AG01 | Transaction Forbidden - Not allowed for this account type                                                                                                                                                                           |
| 9909 | IPS Switch system malfunction                                                                                                                                                                                                       |
| NARR | Narrative - Reason provided as free text                                                                                                                                                                                            |
| E997 | FedNow - Timeout clock has expired. Processing of the transaction exceeded the payment timeout clock.                                                                                                                               |
| AG03 | Transaction Type Not Supported                                                                                                                                                                                                      |
| TK08 | Token service unavailable                                                                                                                                                                                                           |
| AC01 | Incorrect Account Number                                                                                                                                                                                                            |
| AC07 | Closed Creditor Account Number                                                                                                                                                                                                      |
| AB05 | Timeout - Transaction not completed in time                                                                                                                                                                                         |
| AB09 | Requested By PSU - Cancelled by user                                                                                                                                                                                                |
| E996 | FedNow - Reserved response timeout. Insufficient time remains on the payment timeout clock to accommodate Receiver FI reserved response time.                                                                                       |
| AB08 | Invalid End-to-End ID                                                                                                                                                                                                               |
| E999 | FedNow - ISO message has a creation date or time stamp that is in the future from when it was received by the FedNow Service. This is not allowed.                                                                                  |
| TK03 | Invalid or expired token                                                                                                                                                                                                            |
| AC14 | Invalid Agent Country Code                                                                                                                                                                                                          |
| RC04 | Invalid Creditor BIC                                                                                                                                                                                                                |
| AB06 | Offline Process - Transaction stopped due to offline process                                                                                                                                                                        |
| DUPL | Duplicate Payment                                                                                                                                                                                                                   |
| AC02 | Invalid Debtor Account Number                                                                                                                                                                                                       |
| MS02 | Not Specified Reason - Customer Generated                                                                                                                                                                                           |
| SL03 | Specific Service Offered by Creditor Agent                                                                                                                                                                                          |
| BE01 | Inconsistent With End Customer - Customer identification mismatch                                                                                                                                                                   |



## ISO 20022 standard error codes

ISO 20022 messaging standard powers both FedNow and TCH RTP, which defines a universal set of reason codes for payment rejections and status reporting. The global financial industry uses these codes and provide a standardized way to communicate why the system rejected, returned, or could not process a transaction. The table below lists all ISO 20022 reason codes that either rail returns.&#x20;

| Code | Name                                                          | Definition                                                                                                                                                                                               |
| ---- | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AB01 | AbortedClearingTimeout                                        | Clearing process aborted due to timeout.                                                                                                                                                                 |
| AB02 | AbortedClearingFatalError                                     | Clearing process aborted due to a fatal error.                                                                                                                                                           |
| AB03 | AbortedSettlementTimeout                                      | Settlement aborted due to timeout.                                                                                                                                                                       |
| AB04 | AbortedSettlementFatalError                                   | Settlement process aborted due to a fatal error.                                                                                                                                                         |
| AB05 | TimeoutCreditorAgent                                          | Transaction stopped due to timeout at the Creditor Agent.                                                                                                                                                |
| AB06 | TimeoutInstructedAgent                                        | Transaction stopped due to timeout at the Instructed Agent.                                                                                                                                              |
| AB07 | OfflineAgent                                                  | Agent of message is not online. Generic usage if it cannot be determined who exactly is not online.                                                                                                      |
| AB08 | OfflineCreditorAgent                                          | Creditor Agent is not online.                                                                                                                                                                            |
| AB09 | ErrorCreditorAgent                                            | Transaction stopped due to error at the Creditor Agent.                                                                                                                                                  |
| AB10 | ErrorInstructedAgent                                          | Transaction stopped due to error at the Instructed Agent.                                                                                                                                                |
| AB11 | TimeoutDebtorAgent                                            | Transaction stopped due to timeout at the Debtor Agent.                                                                                                                                                  |
| AC01 | IncorrectAccountNumber                                        | Account number is invalid or missing.                                                                                                                                                                    |
| AC02 | InvalidDebtorAccountNumber                                    | Debtor account number invalid or missing                                                                                                                                                                 |
| AC03 | InvalidCreditorAccountNumber                                  | Creditor account number invalid or missing                                                                                                                                                               |
| AC04 | ClosedAccountNumber                                           | Account number specified has been closed on the bank of account's books.                                                                                                                                 |
| AC05 | ClosedDebtorAccountNumber                                     | Debtor account number closed.                                                                                                                                                                            |
| AC06 | BlockedAccount                                                | Account specified is blocked, prohibiting posting of transactions against it.                                                                                                                            |
| AC07 | ClosedCreditorAccountNumber                                   | Creditor account number closed                                                                                                                                                                           |
| AC08 | InvalidBranchCode                                             | Branch code is invalid or missing                                                                                                                                                                        |
| AC09 | InvalidAccountCurrency                                        | Account currency is invalid or missing                                                                                                                                                                   |
| AC10 | InvalidDebtorAccountCurrency                                  | Debtor account currency is invalid or missing                                                                                                                                                            |
| AC11 | InvalidCreditorAccountCurrency                                | Creditor account currency is invalid or missing                                                                                                                                                          |
| AC12 | InvalidAccountType                                            | Account type missing or invalid. Generic usage if cannot specify between group and payment information levels                                                                                            |
| AC13 | InvalidDebtorAccountType                                      | Debtor account type missing or invalid                                                                                                                                                                   |
| AC14 | InvalidCreditorAccountType                                    | Creditor account type missing or invalid                                                                                                                                                                 |
| AC15 | AccountDetailsChanged                                         | The account details for the counterparty have changed.                                                                                                                                                   |
| AC16 | CardNumberInvalid                                             | Credit or debit card number is invalid.                                                                                                                                                                  |
| AG01 | TransactionForbidden                                          | Transaction forbidden on this type of account (formerly NoAgreement)                                                                                                                                     |
| AG02 | InvalidBankOperationCode                                      | Bank Operation code specified in the message is not valid for receiver                                                                                                                                   |
| AG03 | TransactionNotSupported                                       | Transaction type not supported/authorized on this account.                                                                                                                                               |
| AG04 | InvalidAgentCountry                                           | Agent country code is missing or invalid. Generic usage if cannot specify between group and payment information levels.                                                                                  |
| AG05 | InvalidDebtorAgentCountry                                     | Debtor agent country code is missing or invalid                                                                                                                                                          |
| AG06 | InvalidCreditorAgentCountry                                   | Creditor agent country code is missing or invalid                                                                                                                                                        |
| AG07 | UnsuccesfulDirectDebit                                        | Debtor account cannot be debited for a generic reason. Code value may be used in general purposes and as a replacement for AM04 if debtor bank does not reveal its customer's insufficient funds for ... |
| AG08 | InvalidAccessRights                                           | Transaction failed due to invalid or missing user or access right                                                                                                                                        |
| AG09 | PaymentNotReceived                                            | Original payment never received.                                                                                                                                                                         |
| AG10 | AgentSuspended                                                | Agent of message is suspended from the Real Time Payment system. Generic usage if it cannot be determined who exactly is suspended.                                                                      |
| AG11 | CreditorAgentSuspended                                        | Creditor Agent of message is suspended from the Real Time Payment system.                                                                                                                                |
| AG12 | NotAllowedBookTransfer                                        | Payment orders made by transferring funds from one account to another at the same financial institution (bank or payment institution) are not allowed.                                                   |
| AG13 | ForbiddenReturnPayment                                        | Returned payments derived from previously returned transactions are not allowed.                                                                                                                         |
| AGNT | IncorrectAgent                                                | Agent in the payment workflow is incorrect                                                                                                                                                               |
| AM01 | ZeroAmount                                                    | Specified message amount is equal to zero                                                                                                                                                                |
| AM02 | NotAllowedAmount                                              | Specific transaction/message amount is greater than allowed maximum                                                                                                                                      |
| AM03 | NotAllowedCurrency                                            | Specified message amount is an non processable currency outside of existing agreement                                                                                                                    |
| AM04 | InsufficientFunds                                             | Amount of funds available to cover specified message amount is insufficient.                                                                                                                             |
| AM05 | Duplication                                                   | Duplication                                                                                                                                                                                              |
| AM06 | TooLowAmount                                                  | Specified transaction amount is less than agreed minimum.                                                                                                                                                |
| AM07 | BlockedAmount                                                 | Amount specified in message has been blocked by regulatory authorities.                                                                                                                                  |
| AM09 | WrongAmount                                                   | Amount received is not the amount agreed or expected                                                                                                                                                     |
| AM10 | InvalidControlSum                                             | Sum of instructed amounts does not equal the control sum.                                                                                                                                                |
| AM11 | InvalidTransactionCurrency                                    | Transaction currency is invalid or missing                                                                                                                                                               |
| AM12 | InvalidAmount                                                 | Amount is invalid or missing                                                                                                                                                                             |
| AM13 | AmountExceedsClearingSystemLimit                              | Transaction amount exceeds limits set by clearing system                                                                                                                                                 |
| AM14 | AmountExceedsAgreedLimit                                      | Transaction amount exceeds limits agreed between bank and client                                                                                                                                         |
| AM15 | AmountBelowClearingSystemMinimum                              | Transaction amount below minimum set by clearing system                                                                                                                                                  |
| AM16 | InvalidGroupControlSum                                        | Control Sum at the Group level is invalid                                                                                                                                                                |
| AM17 | InvalidPaymentInfoControlSum                                  | Control Sum at the Payment Information level is invalid                                                                                                                                                  |
| AM18 | InvalidNumberOfTransactions                                   | Number of transactions is invalid or missing. Generic usage if cannot specify between group and payment information levels.                                                                              |
| AM19 | InvalidGroupNumberOfTransactions                              | Number of transactions at the Group level is invalid or missing                                                                                                                                          |
| AM20 | InvalidPaymentInfoNumberOfTransactions                        | Number of transactions at the Payment Information level is invalid                                                                                                                                       |
| AM21 | LimitExceeded                                                 | Transaction amount exceeds limits agreed between bank and client.                                                                                                                                        |
| AM22 | ZeroAmountNotApplied                                          | Unable to apply zero amount to designated account. For example, where the rules of a service allow the use of zero amount payments, however the back-office system is unable to apply the funds to th... |
| AM23 | AmountExceedsSettlementLimit                                  | Transaction amount exceeds settlement limit.                                                                                                                                                             |
| BE01 | InconsistenWithEndCustomer                                    | Identification of end customer is not consistent with associated account number. (formerly CreditorConsistency).                                                                                         |
| BE04 | MissingCreditorAddress                                        | Specification of creditor's address, which is required for payment, is missing/not correct (formerly IncorrectCreditorAddress).                                                                          |
| BE05 | UnrecognisedInitiatingParty                                   | Party who initiated the message is not recognised by the end customer                                                                                                                                    |
| BE06 | UnknownEndCustomer                                            | End customer specified is not known at associated Sort/National Bank Code or does no longer exist in the books                                                                                           |
| BE07 | MissingDebtorAddress                                          | Specification of debtor's address, which is required for payment, is missing/not correct.                                                                                                                |
| BE08 | MissingDebtorName                                             | Debtor name is missing                                                                                                                                                                                   |
| BE09 | InvalidCountry                                                | Country code is missing or Invalid. Generic usage if cannot specifically identify debtor or creditor                                                                                                     |
| BE10 | InvalidDebtorCountry                                          | Debtor country code is missing or invalid                                                                                                                                                                |
| BE11 | InvalidCreditorCountry                                        | Creditor country code is missing or invalid                                                                                                                                                              |
| BE12 | InvalidCountryOfResidence                                     | Country code of residence is missing or Invalid. Generic usage if cannot specifically identify debtor or creditor                                                                                        |
| BE13 | InvalidDebtorCountryOfResidence                               | Country code of debtor's residence is missing or Invalid                                                                                                                                                 |
| BE14 | InvalidCreditorCountryOfResidence                             | Country code of creditor's residence is missing or Invalid                                                                                                                                               |
| BE15 | InvalidIdentificationCode                                     | Identification code missing or invalid. Generic usage if cannot specifically identify debtor or creditor.                                                                                                |
| BE16 | InvalidDebtorIdentificationCode                               | Debtor or Ultimate Debtor identification code missing or invalid                                                                                                                                         |
| BE17 | InvalidCreditorIdentificationCode                             | Creditor or Ultimate Creditor identification code missing or invalid                                                                                                                                     |
| BE18 | InvalidContactDetails                                         | Contact details missing or invalid                                                                                                                                                                       |
| BE19 | InvalidChargeBearerCode                                       | Charge bearer code for transaction type is invalid                                                                                                                                                       |
| BE20 | InvalidNameLength                                             | Name length exceeds local rules for payment type.                                                                                                                                                        |
| BE21 | MissingName                                                   | Name missing or invalid.  Generic usage if cannot specifically identify debtor or creditor.                                                                                                              |
| BE22 | MissingCreditorName                                           | Creditor name is missing                                                                                                                                                                                 |
| BE23 | AccountProxyInvalid                                           | Phone number or email address, or any other proxy, used as the account proxy is unknown or invalid.                                                                                                      |
| CERI | CheckERI                                                      | Credit transfer is not tagged as an Extended Remittance Information (ERI) transaction but contains ERI.                                                                                                  |
| CH03 | RequestedExecutionDateOrRequestedCollectionDateTooFarInFuture | Value in Requested Execution Date or Requested Collection Date is too far in the future                                                                                                                  |
| CH04 | RequestedExecutionDateOrRequestedCollectionDateTooFarInPast   | Value in Requested Execution Date or Requested Collection Date is too far in the past                                                                                                                    |
| CH07 | ElementIsNotToBeUsedAtB-andC-Level                            | Element is not to be used at B- and C-Level                                                                                                                                                              |
| CH09 | MandateChangesNotAllowed                                      | Mandate changes are not allowed                                                                                                                                                                          |
| CH10 | InformationOnMandateChangesMissing                            | Information on mandate changes are missing                                                                                                                                                               |
| CH11 | CreditorIdentifierIncorrect                                   | Value in Creditor Identifier is incorrect                                                                                                                                                                |
| CH12 | CreditorIdentifierNotUnambiguouslyAtTransaction-Level         | Creditor Identifier is ambiguous at Transaction Level                                                                                                                                                    |
| CH13 | OriginalDebtorAccountIsNotToBeUsed                            | Original Debtor Account is not to be used                                                                                                                                                                |
| CH14 | OriginalDebtorAgentIsNotToBeUsed                              | Original Debtor Agent  is not to be used                                                                                                                                                                 |
| CH15 | ElementContentIncludesMoreThan140Characters                   | Content Remittance Information/Structured includes more than 140 characters                                                                                                                              |
| CH16 | ElementContentFormallyIncorrect                               | Content is incorrect                                                                                                                                                                                     |
| CH17 | ElementNotAdmitted                                            | Element is not allowed                                                                                                                                                                                   |
| CH19 | ValuesWillBeSetToNextTARGETday                                | Values in Interbank Settlement Date or Requested Collection Date will be set to the next TARGET day                                                                                                      |
| CH20 | DecimalPointsNotCompatibleWithCurrency                        | Number of decimal points not compatible with the currency                                                                                                                                                |
| CH21 | RequiredCompulsoryElementMissing                              | Mandatory element is missing.                                                                                                                                                                            |
| CH22 | COREandB2BwithinOnemessage                                    | SDD CORE and B2B not permitted within one message.                                                                                                                                                       |
| CHQC | ChequeSettledOnCreditorAccount                                | Cheque has been presented in cheque clearing and settled on the creditor’s account.                                                                                                                      |
| CNOR | CreditorBankIsNotRegistered                                   | Creditor bank is not registered under this BIC in the CSM                                                                                                                                                |
| CURR | IncorrectCurrency                                             | Currency of the payment is incorrect                                                                                                                                                                     |
| CUST | RequestedByCustomer                                           | Cancellation requested by the Debtor                                                                                                                                                                     |
| DNOR | DebtorBankIsNotRegistered                                     | Debtor bank is not registered under this BIC in the CSM                                                                                                                                                  |
| DS01 | ElectronicSignaturesCorrect                                   | The electronic signature(s) is/are correct                                                                                                                                                               |
| DS02 | OrderCancelled                                                | An authorized user has cancelled the order                                                                                                                                                               |
| DS03 | OrderNotCancelled                                             | The user’s attempt to cancel the order was not successful.                                                                                                                                               |
| DS04 | OrderRejected                                                 | The order was rejected by the bank side (for reasons concerning content)                                                                                                                                 |
| DS05 | OrderForwardedForPostprocessing                               | The order was correct and could be forwarded for postprocessing                                                                                                                                          |
| DS06 | TransferOrder                                                 | The order was transferred to VEU                                                                                                                                                                         |
| DS07 | ProcessingOK                                                  | All actions concerning the order could be done by the EBICS bank server                                                                                                                                  |
| DS08 | DecompressionError                                            | The decompression of the file was not successful                                                                                                                                                         |
| DS09 | DecryptionError                                               | The decryption of the file was not successful                                                                                                                                                            |
| DS0A | DataSignRequested                                             | Data signature is required.                                                                                                                                                                              |
| DS0B | UnknownDataSignFormat                                         | Data signature for the format is not available or invalid.                                                                                                                                               |
| DS0C | SignerCertificateRevoked                                      | The signer certificate is revoked.                                                                                                                                                                       |
| DS0D | SignerCertificateNotValid                                     | The signer certificate is not valid (revoked or not active).                                                                                                                                             |
| DS0E | IncorrectSignerCertificate                                    | The signer certificate is not present.                                                                                                                                                                   |
| DS0F | SignerCertificationAuthoritySignerNotValid                    | The authority of the signer certification sending the certificate is unknown.                                                                                                                            |
| DS0G | NotAllowedPayment                                             | Signer is not allowed to sign this operation type.                                                                                                                                                       |
| DS0H | NotAllowedAccount                                             | Signer is not allowed to sign for this account.                                                                                                                                                          |
| DS0K | NotAllowedNumberOfTransaction                                 | The number of transaction is over the number allowed for this signer.                                                                                                                                    |
| DS10 | Signer1CertificateRevoked                                     | The certificate is revoked for the first signer.                                                                                                                                                         |
| DS11 | Signer1CertificateNotValid                                    | The certificate is not valid (revoked or not active) for the first signer.                                                                                                                               |
| DS12 | IncorrectSigner1Certificate                                   | The certificate is not present for the first signer.                                                                                                                                                     |
| DS13 | SignerCertificationAuthoritySigner1NotValid                   | The authority of signer certification sending the certificate is unknown for the first signer.                                                                                                           |
| DS14 | UserDoesNotExist                                              | The user is unknown on the server                                                                                                                                                                        |
| DS15 | IdenticalSignatureFound                                       | The same signature has already been sent to the bank                                                                                                                                                     |
| DS16 | PublicKeyVersionIncorrect                                     | The public key version is not correct. This code is returned when a customer sends signature files to the financial institution after conversion from an older program version (old ES format) to a n... |
| DS17 | DifferentOrderDataInSignatures                                | Order data and signatures don’t match                                                                                                                                                                    |
| DS18 | RepeatOrder                                                   | File cannot be tested, the complete order has to be repeated. This code is returned in the event of a malfunction during the signature check, e.g. not enough storage space.                             |
| DS19 | ElectronicSignatureRightsInsufficient                         | The user’s rights (concerning his signature) are insufficient to execute the order                                                                                                                       |
| DS20 | Signer2CertificateRevoked                                     | The certificate is revoked for the second signer.                                                                                                                                                        |
| DS21 | Signer2CertificateNotValid                                    | The certificate is not valid (revoked or not active) for the second signer.                                                                                                                              |
| DS22 | IncorrectSigner2Certificate                                   | The certificate is not present for the second signer.                                                                                                                                                    |
| DS23 | SignerCertificationAuthoritySigner2NotValid                   | The authority of signer certification sending the certificate is unknown for the second signer.                                                                                                          |
| DS24 | WaitingTimeExpired                                            | Waiting time expired due to incomplete order                                                                                                                                                             |
| DS25 | OrderFileDeleted                                              | The order file was deleted by the bank server  (for multiple reasons)                                                                                                                                    |
| DS26 | UserSignedMultipleTimes                                       | The same user has signed multiple times                                                                                                                                                                  |
| DS27 | UserNotYetActivated                                           | The user is not yet activated (technically)                                                                                                                                                              |
| DT01 | InvalidDate                                                   | Invalid date (eg, wrong or missing settlement date)                                                                                                                                                      |
| DT02 | InvalidCreationDate                                           | Invalid creation date and time in Group Header (eg, historic date)                                                                                                                                       |
| DT03 | InvalidNonProcessingDate                                      | Invalid non bank processing date (eg, weekend or local public holiday)                                                                                                                                   |
| DT04 | FutureDateNotSupported                                        | Future date not supported                                                                                                                                                                                |
| DT05 | InvalidCutOffDate                                             | Associated message, payment information block or transaction was received after agreed processing cut-off date, i.e., date in the past.                                                                  |
| DT06 | ExecutionDateChanged                                          | Execution Date has been modified in order for transaction to be processed                                                                                                                                |
| DU01 | DuplicateMessageID                                            | Message Identification is not unique.                                                                                                                                                                    |
| DU02 | DuplicatePaymentInformationID                                 | Payment Information Block is not unique.                                                                                                                                                                 |
| DU03 | DuplicateTransaction                                          | Transaction is not unique.                                                                                                                                                                               |
| DU04 | DuplicateEndToEndID                                           | End To End ID is not unique.                                                                                                                                                                             |
| DU05 | DuplicateInstructionID                                        | Instruction ID is not unique.                                                                                                                                                                            |
| DUPL | DuplicatePaymentOrCharge                                      | Payment or charge is a duplicate of another payment or charge.                                                                                                                                           |
| ED01 | CorrespondentBankNotPossible                                  | Correspondent bank not possible.                                                                                                                                                                         |
| ED03 | BalanceInfoRequest                                            | Balance of payments complementary info is requested                                                                                                                                                      |
| ED05 | SettlementFailed                                              | Settlement of the transaction has failed.                                                                                                                                                                |
| ED06 | SettlementSystemNotAvailable                                  | Interbank settlement system not available.                                                                                                                                                               |
| ERIN | ERIOptionNotSupported                                         | Extended Remittance Information (ERI) option is not supported.                                                                                                                                           |
| FF01 | InvalidFileFormat                                             | File Format incomplete or invalid                                                                                                                                                                        |
| FF02 | SyntaxError                                                   | Syntax error reason is provided as narrative information in the additional reason information.                                                                                                           |
| FF03 | InvalidPaymentTypeInformation                                 | Payment Type Information is missing or invalid. Generic usage if cannot specify Service Level or Local Instrument code                                                                                   |
| FF04 | InvalidServiceLevelCode                                       | Service Level code is missing or invalid                                                                                                                                                                 |
| FF05 | InvalidLocalInstrumentCode                                    | Local Instrument code is missing or invalid                                                                                                                                                              |
| FF06 | InvalidCategoryPurposeCode                                    | Category Purpose code is missing or invalid                                                                                                                                                              |
| FF07 | InvalidPurpose                                                | Purpose is missing or invalid                                                                                                                                                                            |
| FF08 | InvalidEndToEndId                                             | End to End Id missing or invalid                                                                                                                                                                         |
| FF09 | InvalidChequeNumber                                           | Cheque number missing or invalid                                                                                                                                                                         |
| FF10 | BankSystemProcessingError                                     | File or transaction cannot be processed due to technical issues at the bank side                                                                                                                         |
| FF11 | ClearingRequestAborted                                        | Clearing request rejected due it being subject to an abort operation.                                                                                                                                    |
| G000 | PaymentTransferredAndTracked                                  | In an FI To FI Customer Credit Transfer: The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is tracked. No further updates will foll... |
| G001 | PaymentTransferredAndNotTracked                               | In an FI To FI Customer Credit Transfer: The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is not tracked. No further updates will ... |
| G002 | CreditDebitNotConfirmed                                       | In a FIToFI Customer Credit Transfer: Credit to the creditor’s account may not be confirmed same day. Update will follow from the Status Originator. In a Financial Institution Credit Transfer with ... |
| G003 | CreditPendingDocuments                                        | In a FIToFI Customer Credit Transfer: Credit to creditor’s account is pending receipt of required documents. The Status Originator has requested creditor to provide additional documentation. Update... |
| G004 | CreditPendingFunds                                            | In a FIToFI Customer Credit Transfer: Credit to the creditor’s account is pending, status Originator is waiting for funds provided via a cover. Update will follow from the Status Originator.           |
| G005 | DeliveredWithServiceLevel                                     | Payment has been delivered to creditor agent with service level.                                                                                                                                         |
| G006 | DeliveredWIthoutServiceLevel                                  | Payment has been delivered to creditor agent without service level.                                                                                                                                      |
| ID01 | CorrespondingOriginalFileStillNotSent                         | Signature file was sent to the bank but the corresponding original file has not been sent yet.                                                                                                           |
| MD01 | NoMandate                                                     | No Mandate                                                                                                                                                                                               |
| MD02 | MissingMandatoryInformationInMandate                          | Mandate related information data required by the scheme is missing.                                                                                                                                      |
| MD05 | CollectionNotDue                                              | Creditor or creditor's agent should not have collected the direct debit                                                                                                                                  |
| MD06 | RefundRequestByEndCustomer                                    | Return of funds requested by end customer                                                                                                                                                                |
| MD07 | EndCustomerDeceased                                           | End customer is deceased.                                                                                                                                                                                |
| MS02 | NotSpecifiedReasonCustomerGenerated                           | Reason has not been specified by end customer                                                                                                                                                            |
| MS03 | NotSpecifiedReasonAgentGenerated                              | Reason has not been specified by agent.                                                                                                                                                                  |
| NARR | Narrative                                                     | Reason is provided as narrative information in the additional reason information.                                                                                                                        |
| NERI | NoERI                                                         | Credit transfer is tagged as an Extended Remittance Information (ERI) transaction but does not contain ERI.                                                                                              |
| RC01 | BankIdentifierIncorrect                                       | Bank identifier code specified in the message has an incorrect format (formerly IncorrectFormatForRoutingCode).                                                                                          |
| RC02 | InvalidBankIdentifier                                         | Bank identifier is invalid or missing. Generic usage if cannot specify between debit or credit account                                                                                                   |
| RC03 | InvalidDebtorBankIdentifier                                   | Debtor bank identifier is invalid or missing                                                                                                                                                             |
| RC04 | InvalidCreditorBankIdentifier                                 | Creditor bank identifier is invalid or missing                                                                                                                                                           |
| RC05 | InvalidBICIdentifier                                          | BIC identifier is invalid or missing. Generic usage if cannot specify between debit or credit account.                                                                                                   |
| RC06 | InvalidDebtorBICIdentifier                                    | Debtor BIC identifier is invalid or missing                                                                                                                                                              |
| RC07 | InvalidCreditorBICIdentifier                                  | Creditor BIC identifier is invalid or missing                                                                                                                                                            |
| RC08 | InvalidClearingSystemMemberIdentifier                         | ClearingSystemMemberidentifier is invalid or missing. Generic usage if cannot specify between debit or credit account                                                                                    |
| RC09 | InvalidDebtorClearingSystemMemberIdentifier                   | Debtor ClearingSystemMember identifier is invalid or missing                                                                                                                                             |
| RC10 | InvalidCreditorClearingSystemMemberIdentifier                 | Creditor ClearingSystemMember identifier is invalid or missing                                                                                                                                           |
| RC11 | InvalidIntermediaryAgent                                      | Intermediary Agent is invalid or missing                                                                                                                                                                 |
| RC12 | MissingCreditorSchemeId                                       | Creditor Scheme Id is invalid or  missing                                                                                                                                                                |
| RCON | RMessageConflict                                              | Conflict with R-Message                                                                                                                                                                                  |
| RECI | ReceiverCustomerInformation                                   | Further information regarding the intended recipient.                                                                                                                                                    |
| RF01 | NotUniqueTransactionReference                                 | Transaction reference is not unique within the message.                                                                                                                                                  |
| RR01 | MissingDebtorAccountOrIdentification                          | Specification of the debtor’s account or unique identification needed for reasons of regulatory requirements is insufficient or missing                                                                  |
| RR02 | MissingDebtorNameOrAddress                                    | Specification of the debtor’s name and/or address needed for regulatory requirements is insufficient or missing.                                                                                         |
| RR03 | MissingCreditorNameOrAddress                                  | Specification of the creditor’s name and/or address needed for regulatory requirements is insufficient or missing.                                                                                       |
| RR04 | RegulatoryReason                                              | Regulatory Reason                                                                                                                                                                                        |
| RR05 | RegulatoryInformationInvalid                                  | Regulatory or Central Bank Reporting information missing, incomplete or invalid.                                                                                                                         |
| RR06 | TaxInformationInvalid                                         | Tax information missing, incomplete or invalid.                                                                                                                                                          |
| RR07 | RemittanceInformationInvalid                                  | Remittance information structure does not comply with rules for payment type.                                                                                                                            |
| RR08 | RemittanceInformationTruncated                                | Remittance information truncated to comply with rules for payment type.                                                                                                                                  |
| RR09 | InvalidStructuredCreditorReference                            | Structured creditor reference invalid or missing.                                                                                                                                                        |
| RR10 | InvalidCharacterSet                                           | Character set supplied not valid for the country and payment type.                                                                                                                                       |
| RR11 | InvalidDebtorAgentServiceID                                   | Invalid or missing identification of a bank proprietary service.                                                                                                                                         |
| RR12 | InvalidPartyID                                                | Invalid or missing identification required within a particular country or payment type.                                                                                                                  |
| S000 | ValidRequestForCancellationAcknowledged                       | Request for Cancellation is acknowledged following validation.                                                                                                                                           |
| S001 | UETRFlaggedForCancellation                                    | Unique End-to-end Transaction Reference (UETR) relating to a payment has been identified as being associated with a Request for Cancellation.                                                            |
| S002 | NetworkStopOfUETR                                             | Unique End-to-end Transaction Reference (UETR) relating to a payment has been prevent from traveling across a messaging network.                                                                         |
| S003 | RequestForCancellationForwarded                               | Request for Cancellation has been forwarded to the payment processing/last payment processing agent.                                                                                                     |
| S004 | RequestForCancellationDeliveryAcknowledgement                 | Request for Cancellation has been acknowledged as delivered to payment processing/last payment processing agent.                                                                                         |
| SL01 | SpecificServiceOfferedByDebtorAgent                           | Due to specific service offered by the Debtor Agent.                                                                                                                                                     |
| SL02 | SpecificServiceOfferedByCreditorAgent                         | Due to specific service offered by the Creditor Agent.                                                                                                                                                   |
| SL03 | ServiceofClearingSystem                                       | Due to a specific service offered by the clearing system.                                                                                                                                                |
| SL11 | CreditorNotOnWhitelistOfDebtor                                | Whitelisting service offered by the Debtor Agent; Debtor has not included the Creditor on its “Whitelist” (yet). In the Whitelist the Debtor may list all allowed Creditors to debit Debtor bank acco... |
| SL12 | CreditorOnBlacklistOfDebtor                                   | Blacklisting service offered by the Debtor Agent; Debtor included the Creditor on his “Blacklist”. In the Blacklist the Debtor may list all Creditors not allowed to debit Debtor bank account.          |
| SL13 | MaximumNumberOfDirectDebitTransactionsExceeded                | Due to Maximum allowed Direct Debit Transactions per period service offered by the Debtor Agent.                                                                                                         |
| SL14 | MaximumDirectDebitTransactionAmountExceeded                   | Due to Maximum allowed Direct Debit Transaction amount service offered by the Debtor Agent.                                                                                                              |
| TA01 | TransmissonAborted                                            | The transmission of the file was not successful – it had to be aborted (for technical reasons)                                                                                                           |
| TD01 | NoDataAvailable                                               | There is no data available (for download)                                                                                                                                                                |
| TD02 | FileNonReadable                                               | The file cannot be read (e.g. unknown format)                                                                                                                                                            |
| TD03 | IncorrectFileStructure                                        | The file format is incomplete or invalid                                                                                                                                                                 |
| TK01 | TokenInvalid                                                  | Token is invalid.                                                                                                                                                                                        |
| TK02 | SenderTokenNotFound                                           | Token used for the sender does not exist.                                                                                                                                                                |
| TK03 | ReceiverTokenNotFound                                         | Token used for the receiver does not exist.                                                                                                                                                              |
| TK09 | TokenMissing                                                  | Token required for request is missing.                                                                                                                                                                   |
| TKCM | TokenCounterpartyMismatch                                     | Token found with counterparty mismatch.                                                                                                                                                                  |
| TKSG | TokenSingleUse                                                | Single Use Token already used.                                                                                                                                                                           |
| TKSP | TokenSuspended                                                | Token found with suspended status.                                                                                                                                                                       |
| TKVE | TokenValueLimitExceeded                                       | Token found with value limit rule violation.                                                                                                                                                             |
| TKXP | TokenExpired                                                  | Token expired.                                                                                                                                                                                           |
| TM01 | InvalidCutOffTime                                             | Associated message, payment information block, or transaction was received after agreed processing cut-off time.                                                                                         |
| TS01 | TransmissionSuccessful                                        | The (technical) transmission of the file was successful.                                                                                                                                                 |
| TS04 | TransferToSignByHand                                          | The order was transferred to pass by accompanying note signed by hand                                                                                                                                    |
| CN01 | AuthorisationCancelled                                        | Authorisation is cancelled.                                                                                                                                                                              |
| FOCR | FollowingCancellationRequest                                  | Return following a cancellation request.                                                                                                                                                                 |
| FR01 | Fraud                                                         | Returned as a result of fraud.                                                                                                                                                                           |
| NOAS | NoAnswerFromCustomer                                          | No response from Beneficiary.                                                                                                                                                                            |
| NOCM | NotCompliantGeneric                                           | Customer account is not compliant with regulatory requirements, for example FICA (in South Africa) or any other regulatory requirements which render an account inactive for certain processing.         |
| RUTA | ReturnUponUnableToApply                                       | Return following investigation request and no remediation possible.                                                                                                                                      |
| UPAY | UnduePayment                                                  | Payment is not justified.                                                                                                                                                                                |
| AEXR | AlreadyExpiredRTP                                             | Request-to-pay Expiry Date and Time has already passed.                                                                                                                                                  |
| ALAC | AlreadyAcceptedRTP                                            | Request-to-pay has already been accepted by the Debtor.                                                                                                                                                  |
| ARFR | AlreadyRefusedRTP                                             | Request-to-pay has already been refused by the Debtor.                                                                                                                                                   |
| ARJR | AlreadyRejectedRTP                                            | Request-to-pay has already been rejected.                                                                                                                                                                |
| ATNS | AttachementsNotSupported                                      | Attachments to the request-to-pay are not supported.                                                                                                                                                     |
| EDTL | ExpiryDateTooLong                                             | Expiry date time of the request-to-pay is too far in the future.                                                                                                                                         |
| EDTR | ExpiryDateTimeReached                                         | Expiry date time of the request-to-pay is already reached.                                                                                                                                               |
| FRAD | FraudulentOrigin                                              | Cancellation requested following a transaction that was originated fraudulently. The use of the FraudulentOrigin code should be governed by jurisdictions.                                               |
| IEDT | IncorrectExpiryDateTime                                       | Expiry date time of the request-to-pay is incorrect.                                                                                                                                                     |
| IRNR | InitialRTPNeverReceived                                       | No initial request-to-pay has been received.                                                                                                                                                             |
| NOAR | NonAgreedRTP                                                  | No existing agreement for receiving request-to-pay messages.                                                                                                                                             |
| NOPG | NoPaymentGuarantee                                            | Requested payment guarantee (by Creditor) related to a request-to-pay cannot be provided.                                                                                                                |
| NRCH | PayerOrPayerRTPSPNotReachable                                 | Recipient side of the request-to-pay (payer or its request-to-pay service provider) is not reachable.                                                                                                    |
| PINS | TypeOfPaymentInstrumentNotSupported                           | Type of payment requested in the request-to-pay is not supported by the payer.                                                                                                                           |
| REPR | RTPReceivedCanBeProcessed                                     | Request-to-pay has been received and can be processed further.                                                                                                                                           |
| RTNS | RTPNotSupportedForDebtor                                      | Debtor does not support request-to-pay transactions.                                                                                                                                                     |
| SPII | RTPServiceProviderIdentifierIncorrect                         | Identifier of the request-to-pay service provider is incorrect.                                                                                                                                          |
| UCRD | UnknownCreditor                                               | Unknown Creditor.                                                                                                                                                                                        |
| FF12 | OriginalTransactionNotEligibleForRequestedReturn              | Original payment is not eligible to be returned given its current status.                                                                                                                                |
| FF13 | RequestForCancellationNotFound                                | No record of request for cancellation found.                                                                                                                                                             |
| DC02 | SettlementNotReceived                                         | Rejection of a payment due to covering FI settlement not being received.                                                                                                                                 |
| APAR | AlreadyPaidRTP                                                | Request To Pay has already been paid by the Debtor.                                                                                                                                                      |
| AB26 | InvalidBatchSettlementInstruction                             | Settlement Instruction does not exist.                                                                                                                                                                   |
| AB12 | InvalidConcurrentBatch                                        | Duplicate Concurrent Batch Sequence number– for Settlement Instructions.                                                                                                                                 |
| AB13 | InvalidRoutingCodeUtilised                                    | Wrong Message Routing Type for Return-of-Funds.                                                                                                                                                          |
| AB15 | InvalidAccountNumberForSettlementType                         | Instruction may not be placed on the Continuous Processing Line settlement processor.                                                                                                                    |
| AB21 | InvalidSettlementAgreementNumberSpecified                     | Agreement number not valid (beneficiary).                                                                                                                                                                |
| BDAY | NotBusinessDay                                                | Settlement Cycle Day and Calendar day should be the same.                                                                                                                                                |
| DS28 | ReturnForTechnicalReason                                      | Message routed to the wrong environment.                                                                                                                                                                 |
| INDT | InvalidDetails                                                | Details not valid for this field.                                                                                                                                                                        |
| ISWS | InvalidSettlementWindow                                       | Cannot schedule instruction for Night Window.                                                                                                                                                            |
| MINF | MissingInformation                                            | Information missing for the field or cannot be empty.                                                                                                                                                    |
| NOFR | OutstandingFundingForSettlement                               | Continuous Processing Line on Hold Instruction.                                                                                                                                                          |
| RC13 | ParticipantNotAnActiveMemberofRTGS                            | Originator not active any more.                                                                                                                                                                          |
| RC15 | ParticipantNotActiveMemberSettlementType                      | Settlement agreement required.                                                                                                                                                                           |
| RC16 | ParticipantNotActiveMemberofSADCRTGS                          | Participant blocked from SADC-RTGS.                                                                                                                                                                      |
| SBRN | SettlementBatchRemovalNotification                            | Remove Concurrent Batch Processing Line on hold instruction.                                                                                                                                             |
| RQNR | RequestNotRecognized                                          | Payer did not recognize the request from Payee Participant,                                                                                                                                              |
| SNRD | ServiceNotRendered                                            | Services are not yet rendered by the Payee Participant (Creditor).                                                                                                                                       |
| OSNS | OptionalServiceNotSupported                                   | Requested optional service (for example instalment payments) is not supported.                                                                                                                           |
| AMSE | AttachmentMaximumSize                                         | Size of the attachment exceeds the allowed maximum.                                                                                                                                                      |
| INAR | InvalidActivationReference                                    | Payer’s activation reference is invalid.                                                                                                                                                                 |
| EDNA | ExecutionDateNotAccepted                                      | Requested execution date of the payment is not accepted.                                                                                                                                                 |
| SL15 | MaximumNumberOfCreditTransactionsExceeded                     | Maximum number of credit transactions allowed by the account servicer per service period exceeded.                                                                                                       |
| SL16 | MaximumCreditTransactionsAmountExceeded                       | Maximum total credit amount allowed by the account servicer per service period exceeded.                                                                                                                 |
| SL17 | DebtorNotOnWhitelistOfCreditorSide                            | Whitelisting service offered by payment system operator or financial institution. Debtor is not included on the Creditor side whitelist.                                                                 |
| SL18 | DebtorOnBlacklistOfCreditorSide                               | Blacklisting service offered by payment system operator or financial institution. Debtor included on the Creditor side blacklist.                                                                        |
| CHRG | UnderlyingChargeBearerWasNotDebt                              | Related to a Charge message to convey that the charge bearer code used in the corresponding Payment message was not debt.                                                                                |
| CHCO | UnacceptedChargeCodeType                                      | Related to a Charge message to convey that the code in Charge Breakdown / Type / Code is not accepted by the receiving party.                                                                            |
| IPNS | InstalmentPaymentsNotSupported                                | Payments in instalments are not supported.                                                                                                                                                               |
| CNNS | CreditNotesNotSupported                                       | Credit notes are not supported.                                                                                                                                                                          |
| EOL1 | EndOfLife                                                     | Expiration of the payment authorisation due to no use for too long.                                                                                                                                      |
| PNRT | PaymentNotAlignedWithRTPRequest                               | Error code used for RTP-initiated CTR when the pacs.008 details are not aligned with the pain.013 request.                                                                                               |



## TCH RTP specific error codes

Besides the standard ISO 20022 reason codes, The Clearing House (TCH) Real-Time Payments (RTP) network defines its own set of proprietary error codes. These codes are specific to the RTP infrastructure and are not part of the ISO 20022 standard. You encounter these codes when a transaction is rejected or fails at the network level due to system issues, participant status changes, or RTP-specific validation rules.

| Code | Description                                              |
| ---- | -------------------------------------------------------- |
| 1100 | Any Other Reasons - i.e. not covered by ISO reason codes |
| 9909 | IPS Switch system malfunction                            |
| 9910 | IPS Switch processing error                              |
| 9912 | Rvc Participant not available                            |
| 9914 | Element mandatory if Local Instrument = ZELLE            |
| 9934 | Instructing Agent signed-off                             |
| 9946 | Instructing Agent suspended                              |
| 9947 | Instructed Agent suspended                               |
| 9948 | Service suspended                                        |
| 9952 | Mapping Incompatibility between message versions         |
| 9953 | Missing code 'FULL' (full invoiced amount)               |
| 9954 | Instruction for Creditor Agent missing                   |
| 9956 | Instructing Agent Funding Account Suspended              |
| 9957 | Instructed Agent Funding Account Suspended               |
| 9964 | Invalid Participant Identification                       |
| NOAT | Message Type not supported or accepted                   |

**Usage Note:** TCH RTP error codes are returned in the StatusReasonInformation element of pacs.002 (FIToFIPaymentStatusReport) messages or in admi.002 (AdministrationAdvice) messages for technical rejections.

## FedNow specific error codes

The FedNow® Service, operated by the Federal Reserve, uses its own set of proprietary error codes in addition to the standard ISO 20022 reason codes. These codes are organized into three series:

- E-Series	E3xx – E9xx	Operational and processing errors (e.g., timeouts, profile issues, settlement errors)
- T-Series	T5xx – T7xx	Technical validation errors (e.g., message format, signature, field-level validation)
- F-Series	F0xx – F1xx	Fraud-related codes (e.g., negative list matches, velocity checks)

### E-Series Error Codes (General/System Errors)

| Code | Description                                                                                                                                                                                                            |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| E301 | Report request failed. Review request, update and resubmit as needed.                                                                                                                                                  |
| E400 | ISO message does not exist, can resend with same message ID (or new message ID).                                                                                                                                       |
| E401 | Sender of the payment status request is not authorized to receive transaction status.                                                                                                                                  |
| E402 | Original ISO message referenced was not processed, resend with new unique message ID.                                                                                                                                  |
| E403 | Sender of the request is not authorized to receive message.                                                                                                                                                            |
| E411 | Transaction is still processing; retry after timeout clock has elapsed.                                                                                                                                                |
| E420 | Rejected due to control set by Correspondent.                                                                                                                                                                          |
| E481 | Invalid dates included in the reporting from date and/or to date elements.                                                                                                                                             |
| E500 | Internal processing error; contact the Support Center.                                                                                                                                                                 |
| E600 | Balance inquiry is not allowed for this account or by this Participant.                                                                                                                                                |
| E760 | Invalid response sender and receiver. Response sender and receiver must match original transfer request.                                                                                                               |
| E890 | Pending transaction status is not valid for this message.                                                                                                                                                              |
| E960 | Internal error. Contact the Support Center for details.                                                                                                                                                                |
| E970 | Invalid settlement relationship. Sender FI and Receiver FI must have a valid settlement relationship within the FedNow Service to indicate the appropriate Master Account to which transactions will be settled.       |
| E974 | Internal processing error; contact the Support Center.                                                                                                                                                                 |
| E980 | Invalid FedNow Service profile for the Sender FI RTN. As a result, the RTN is not eligible to send this message type.                                                                                                  |
| E981 | Invalid FedNow Service profile for the Receiver FI RTN. As a result, the Receiver FI RTN is not eligible to receive this message type.                                                                                 |
| E982 | Sender FI or Receiver FI does not have a Participant Profile enabled to send and/or receive instant payments or Receiver FI does not have a Participant Profile enabled to receive Request for Payment (RFP) messages. |
| E983 | Liquidity Management Transfers (LMTs) were sent outside of supported hours. LMTs can be sent only during specified LMT operating hours.                                                                                |
| E984 | Sender FI or Receiver FI does not have a Participant Profile enabled for the indicated RTN to send and/or receive LMTs.                                                                                                |
| E990 | Invalid transaction limit. Transaction exceeds the FedNow Service transaction limit, or a lower limit set by the Sender FI.                                                                                            |
| E996 | Reserved response timeout. Insufficient time remains on the payment timeout clock to accommodate Receiver FI reserved response time.                                                                                   |
| E997 | Timeout clock has expired. Processing of the transaction exceeded the payment timeout clock.                                                                                                                           |
| E998 | Receiver FI is not signed onto the FedNow Service and therefore, cannot receive instant payments. Sender FI and/or Receiver FI is not yet active on the FedNow Service.                                                |
| E999 | ISO message has a creation date or time stamp that is in the future from when it was received by the FedNow Service. This is not allowed.                                                                              |



### T-Series Error Codes (Technical/Message Validation Errors)

| Code | Description                                                                                                                                                                                    |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| T501 | ISO message exceeds the maximum allowable size of 25,000 characters.                                                                                                                           |
| T504 | Invalid clearing system member ID element. The ID in the "to" component should be the FedNow Service member ID (e.g., "021150706").                                                            |
| T505 | ISO message does not meet the FedNow Service ISO 20022 message specifications for one or multiple elements.                                                                                    |
| T506 | Invalid message definition identifier. This identifier should be associated with the underlying message and must be a version that FedNow Service supports.                                    |
| T508 | Business processing date/time element is not allowed in the ISO message. This element is used only by the FedNow Service.                                                                      |
| T509 | Copy duplicate element is not allowed in an ISO message sent by a Participant. This element is used only by the FedNow Service.                                                                |
| T510 | Related element is not allowed in an ISO message sent by a Participant. This element is used only by the FedNow Service.                                                                       |
| T512 | Invalid message ID. A valid message ID must include: Calendar date (CCYYMMDD), Connection Party ID (9 alphanumeric characters), Reference sequence assigned by sender (up to 18 characters).   |
| T514 | Structured remittance information element exceeded the maximum length of 4,000 characters.                                                                                                     |
| T515 | Message contains both structured and unstructured remittance elements. The FedNow Service only allows one or the other within a single message.                                                |
| T516 | Invalid sending party or sending party information. A valid sending party is a Participant or a Service Provider that is authorized to send messages on behalf of the Participant.             |
| T517 | ISO message ID is a duplicate. The message ID must be unique.                                                                                                                                  |
| T518 | ISO message does not contain an original transaction ID or original UETR. The ISO message must contain one or both.                                                                            |
| T519 | ISO message does not contain a phone number in the preferred contact Method (PHON) element. A phone number must be provided when phone is the preferred contact method.                        |
| T520 | ISO message does not contain a mobile number in the preferred contact method (CELL) element. A mobile number must be provided when cell is the preferred contact method.                       |
| T521 | ISO message does not contain an email address in the preferred contact method (MAIL) element. An email address must be provided when mail is the preferred contact method.                     |
| T522 | ISO message does not contain the required status reason code for the rejected transaction.                                                                                                     |
| T523 | Invalid transaction status code. ISO messages must include one of the following eligible codes: ACTC, ACWP, ACCC, BLCK, PDNG or RJCT.                                                          |
| T524 | Invalid original message name identification or the message name referenced is not supported for the message type.                                                                             |
| T525 | Invalid original interbank settlement amount format. Amount must be greater than $0 with maximum of two decimal places.                                                                        |
| T526 | Insufficient information provided. When debtor of the return is a party, the debtor party, account and agent must be provided.                                                                 |
| T527 | Invalid local instrument. The local instrument specifies the FedNow Service product code under which the message is sent. The code should be FDNA.                                             |
| T528 | Invalid returned interbank settlement amount format. Amount must be greater than $0 with maximum of two decimal places.                                                                        |
| T529 | Invalid message signature on ISO 20022 message. Signature must be signed with the key owner's private key that corresponds to an active public key previously validated by the FedNow Service. |
| T530 | Invalid country code. See the officially assigned code list on [www.iso20022.org](http://www.iso20022.org).                                                                                    |
| T531 | Invalid Original Message Name Identification value.                                                                                                                                            |
| T532 | Invalid interbank settlement amount format. Amount must be greater than $0 with maximum of two decimal places.                                                                                 |
| T533 | Invalid compensation amount. Amount must be greater than $0 with maximum of two decimal places.                                                                                                |
| T534 | ISO message does not contain the required transaction identification or UETR.                                                                                                                  |
| T535 | Invalid category purpose field. This field must begin with a C, B or G, followed by 3 alphanumeric characters.                                                                                 |
| T536 | Insufficient information. If the ISO 20022 message used reason code NARR, additional information must be present.                                                                              |
| T537 | Key signature algorithm not supported.                                                                                                                                                         |
| T538 | Account balance request cannot include a reporting period because the balance is as of a particular date and time.                                                                             |
| T539 | Account balance request must include the account type.                                                                                                                                         |
| T540 | For ABAR, AATR, IATR or AADR reports, the member identification element must be the FedNow Service Connection Party identifier of the requestor and must match the "From" element in BAH.      |
| T542 | Invalid Market Practice Identifier.                                                                                                                                                            |
| T543 | Invalid original message date. Original message date must be the current date or previous calendar date.                                                                                       |
| T544 | Message referenced in admi.007 is not found.                                                                                                                                                   |
| T545 | Reporting Period and Account Type are not allowed for an intraday account activity totals report (IATR) or a correspondent intraday account activity totals report (CITR).                     |
| T546 | Invalid Account ID for message type. A correspondent account activity totals report cannot be requested for a single RTN.                                                                      |
| T547 | Invalid status code. The status code must be TS02.                                                                                                                                             |
| T548 | Invalid charges amount format. Amount must be greater than $0 with maximum of two decimal places.                                                                                              |
| T550 | Invalid status confirmation code for the return request response message. Must contain: IPAY, RJCR, PDCR, or PECR.                                                                             |
| T551 | Cancellation Status Reason Information component is incorrect: Reason code is required if status confirmation code is "RJCR." Only one instance allowed.                                       |
| T553 | Proprietary under Reason cannot be populated.                                                                                                                                                  |
| T554 | Invalid status code for the information request response message. Must be: IPAY, IDUP, INFO, NINF, or PDNG.                                                                                    |
| T555 | Incorrect format in fnclockstart element, refer to the Technical Specification document for the correct format.                                                                                |
| T556 | Invalid Correction Transaction component in information request response message. If present, the status must be "IPAY".                                                                       |
| T557 | For AATR, AADR, CATR, or CADR reports, Reporting Period is mandatory, and Account Type is not allowed.                                                                                         |
| T558 | Invalid Requested Message Name Identification in the camt.060 message.                                                                                                                         |
| T559 | The Expiry Date must not be more than 365 days out in the future from the day the RFP is sent.                                                                                                 |
| T560 | Invalid Transaction Status Code. Must be: ACTC, PRES, RJCT, or RCVD.                                                                                                                           |
| T561 | The Status Reason Information component can only occur once.                                                                                                                                   |
| T562 | The Business Service element in the BAH must not be used by participants.                                                                                                                      |
| T563 | Invalid Status Confirmation code. Must be: CNCL, RJCR, or PDCR.                                                                                                                                |
| T565 | If the Resolution Related Information is populated, the status must be IDUP.                                                                                                                   |
| T566 | If the Resolution Related Information is populated, the status must be either IPAY or PECR.                                                                                                    |
| T567 | Invalid original instructed amount format. Maximum of two decimal places when there are trailing zeros.                                                                                        |
| T568 | Invalid instructed amount format. Maximum of two decimal places when there are trailing zeros.                                                                                                 |
| T569 | Invalid accepted amount format. Maximum of two decimal places when there are trailing zeros.                                                                                                   |
| T570 | Invalid key encoding. The encoding algorithm must be one supported by the FedNow Service.                                                                                                      |
| T571 | Invalid key algorithm. The key algorithm must be one supported by the FedNow Service.                                                                                                          |
| T572 | Invalid encoded key. Unable to parse the key using the given encoding and key algorithms.                                                                                                      |
| T573 | Invalid key length.                                                                                                                                                                            |
| T574 | Invalid key fingerprint.                                                                                                                                                                       |
| T575 | Invalid key expiration. Keys with an expiration date greater than 364 days in the future are not accepted.                                                                                     |
| T576 | Duplicate key. All keys added must be unique.                                                                                                                                                  |
| T577 | Key indicated in Revoke Key Message is not found.                                                                                                                                              |
| T578 | Last active key cannot be revoked via MQ Message.                                                                                                                                              |
| T579 | Key indicated in Revoke Key Message is in revoked or expired state.                                                                                                                            |
| T580 | Event Time future dated.                                                                                                                                                                       |
| T581 | Error in event code element. If Event Code-FPON/FPOF then Event Parameter must be 9 digit RTN. If Event Code-FPCD/FPCR then Event Parameter must be 7 digit hexadecimal (Connection Point ID). |
| T582 | Requested Execution Date cannot be in the past.                                                                                                                                                |
| T583 | Expiry Date (Time) cannot be before the Requested Execution Date (Time).                                                                                                                       |
| T584 | At least one Connection Point must be connected per Connection Party.                                                                                                                          |
| T586 | Processing of request timed out. If the problem persists, call Support Center.                                                                                                                 |
| T587 | API Request does not meet the specifications for one or multiple elements.                                                                                                                     |
| T588 | Unable to retrieve Participant List for current cycle date, try again. If the problem persists, call Support Center.                                                                           |
| T589 | Internal error. Contact the Support Center if the issue continues.                                                                                                                             |
| T590 | Invalid FedNow Service profile. As a result, the Connection Party is not eligible to send this request.                                                                                        |
| T591 | Invalid API Request signature.                                                                                                                                                                 |
| T592 | Invalid API Request signature for time elapsed.                                                                                                                                                |
| T594 | Invalid FedNow Endpoint ID.                                                                                                                                                                    |
| T595 | Connecting party not authorized. Please contact the Support Center for further assistance.                                                                                                     |
| T596 | Invalid FedNow Service profile for the requested RTN. As a result, API request is not allowed for this RTN.                                                                                    |
| T600 | Balance inquiry service not available at this time. Or balance inquiry not allowed for this account.                                                                                           |
| T613 | Invalid participant RTN.                                                                                                                                                                       |
| T700 | Message not found.                                                                                                                                                                             |
| T701 | Calendar Date (CCYYMMDD) of original message ID is not within the current FedNow Service calendar day or seven prior calendar days.                                                            |
| T702 | The Proprietary ID (Id) does not match the Connection Party ID in the Business Application Header.                                                                                             |



### F-Series Error Codes (Fraud/Security Errors)

| Code | Description                                                                              |
| ---- | ---------------------------------------------------------------------------------------- |
| F101 | Entry pair matches the Receiver FI's fraud controls.                                     |
| F002 | Entry pair matches an entry on the Sender FI's Negative List with a send restriction.    |
| F004 | Negative list processing did not complete. (Warning Code)                                |
| F008 | Transaction rejected due to Sender FI's cumulative value criteria.                       |
| F009 | Transaction rejected due to Sender FI's velocity criteria.                               |
| F010 | Account Activity Threshold processing did not complete. (Warning Code)                   |
| F011 | Negative List and Account Activity Threshold processing did not complete. (Warning Code) |

**Important Notes:**

- **E983**: Refer to the "Network Limits" section in the FedNow Service Operating Procedures (Version 3.5, February 2026) for more information on LMT hours.
- **T506**: Details on current message versions supported can be found in the FedNow Service ISO 20022 Implementation Guide on the SWIFT MyStandards platform.
- **T512**: Message ID length may not exceed allowable character limits for FedNow Service ISO 20022 messages.

## API Error Codes by category

These errors are returned directly in the API response when your request fails validation or cannot be processed. They indicate an issue on the request level. The payment was not sent to the Rail.

### Payment operations (2001-2068)

Errors related to instant payment processing, status management, and validation.

| Code     | Description                                                                      | Resolution                                                                                      |
| -------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| **2001** | Payment not found                                                                | Verify the payment ID is correct                                                                |
| **2002** | Invalid payment status                                                           | Check current payment status; verify the requested operation is valid for the current status    |
| **2003** | Original payment not found                                                       | Verify the original payment ID is correct; ensure the referenced payment exists                 |
| **2004** | Return request must be inbound and in pending state to be rejected               | Only inbound return requests in pending status can be rejected                                  |
| **2005** | Credit transfers must be outbound in hold status to be rejected                  | Only outbound credit transfers in hold status can be rejected                                   |
| **2006** | Payment type cannot be rejected                                                  | This payment type does not support rejection operations                                         |
| **2007** | Direction not inbound                                                            | Operation requires inbound payment; verify payment direction                                    |
| **2008** | Direction not outbound                                                           | Operation requires outbound payment; verify payment direction                                   |
| **2009** | Payment cannot be canceled                                                       | Payment status does not allow cancellation                                                      |
| **2010** | Payment must be outbound                                                         | Operation requires payment to be outbound; verify payment direction                             |
| **2011** | Payment must be inbound                                                          | Operation requires payment to be inbound; verify payment direction                              |
| **2012** | Payment cannot be completed                                                      | Payment status or conditions do not allow completion                                            |
| **2013** | Routing number isn't valid RTP participant                                       | Verify routing number is an active RTP participant                                              |
| **2014** | Payment doesn't meet criteria to be resent                                       | Payment cannot be resent in its current state; verify payment status                            |
| **2015** | Payment had already been refunded                                                | Payment has already been refunded; cannot refund again                                          |
| **2016** | Ultimate debtor can only be used when account is business account                | Ultimate debtor field requires business account classification                                  |
| **2017** | Payments of $3,000+ require complete debtor address                              | Include complete debtor address for payments of $3,000 or more (travel rule compliance)         |
| **2018** | Invalid debtor                                                                   | Debtor information is invalid or incomplete                                                     |
| **2019** | Return cannot be requested for credit transfer due to payment status             | Credit transfer status does not allow return request                                            |
| **2020** | Return cannot be requested for inbound credit transfer                           | Return requests only apply to outbound credit transfers                                         |
| **2021** | Only credit transfers can be refunded                                            | Refund operations only apply to credit transfer payment types                                   |
| **2022** | Payment already has existing return of funds in process                          | Cannot initiate new return while existing return is processing                                  |
| **2023** | Payment must be return response                                                  | Operation requires payment to be a return response type                                         |
| **2024** | Payment must be awaiting response                                                | Operation requires payment to be in awaiting response status                                    |
| **2025** | Return request was not found                                                     | Verify return request ID is correct; check if return request exists                             |
| **2026** | Credit transfer was not found                                                    | Verify credit transfer ID is correct; check if credit transfer exists                           |
| **2027** | Cannot manually update payment, funds will be returned through RTP network       | System will automatically process return through network; manual update not allowed             |
| **2028** | Simulator credit transfer must be inbound                                        | Simulator operations require inbound credit transfers                                           |
| **2029** | Payment has already been accepted                                                | Payment has been accepted; cannot accept again                                                  |
| **2030** | Credit transfer status must be completed                                         | Operation requires credit transfer to be in completed status                                    |
| **2031** | Payment already has existing payment ack in process                              | Cannot initiate new payment acknowledgment while existing ack is processing                     |
| **2032** | Payment cannot manually be updated with funds received from alternate rail       | Funds received via alternate rail cannot be manually updated                                    |
| **2037** | Invalid amount specified                                                         | Payment amount is invalid; verify amount is positive and within limits                          |
| **2038** | Payment has expired                                                              | Payment has passed expiry date/time; cannot process expired payments                            |
| **2039** | Reason code is missing or invalid                                                | Provide a valid reason code from the allowed list                                               |
| **2040** | Additional info cannot be used with specified reason code                        | Remove additional info field; not applicable to this reason code                                |
| **2041** | Payment must be credit transfer                                                  | Operation requires payment to be a credit transfer type                                         |
| **2042** | Additional info is required for specified reason code                            | Include additional info field for this reason code                                              |
| **2043** | Invalid creditor                                                                 | Creditor information is invalid or incomplete                                                   |
| **2044** | Expiry date exceeds configured max RFP expiry days                               | Reduce expiry date to be within configured maximum days for request for payment                 |
| **2045** | Receiver does not support request for payment                                    | Recipient does not accept request for payment messages                                          |
| **2046** | Payment type must be request for payment                                         | Operation requires payment to be a request for payment type                                     |
| **2047** | Requested execution date cannot be after expiry date                             | Execution date must be before or equal to expiry date                                           |
| **2048** | Requested queued payment expires at date has already passed                      | Expiry date for queued payment has passed; provide future date                                  |
| **2049** | Participant is not active                                                        | Routing number participant is not active in the network                                         |
| **2050** | Debtor does not support return payment                                           | Debtor does not accept return payment messages                                                  |
| **2051** | Unsupported message type on specified network platform                           | Message type not supported on TCH RTP or FedNow; verify platform capabilities                   |
| **2052** | Cannot check status of payment that was never transmitted                        | Payment must be transmitted before status can be checked                                        |
| **2053** | Reason code not valid for network platform                                       | Reason code not supported on TCH RTP or FedNow; use platform-specific codes                     |
| **2054** | Debtor requires additional identifier                                            | Include additional identifier for debtor (required by recipient)                                |
| **2055** | Payments of $3,000+ require complete creditor address                            | Include complete creditor address for payments of $3,000 or more (travel rule compliance)       |
| **2056** | Use case is missing or invalid                                                   | Provide a valid use case identifier for the payment                                             |
| **2057** | Industry category is missing or invalid                                          | Provide a valid industry category code                                                          |
| **2058** | Sender ID is missing or invalid                                                  | Provide a valid sender identifier                                                               |
| **2059** | Return of FedNow payment request from partner must be initiated within threshold | FedNow return requests must be submitted within configured threshold days from original payment |
| **2060** | Partners cannot respond to return requests flagged for fraud investigation       | Return requests under fraud investigation cannot be responded to by partners                    |
| **2061** | Return request of TCH outbound payment must be requested within threshold        | TCH return requests must be submitted within configured threshold days from payment initiation  |
| **2062** | Discount must be less than amount                                                | Discount amount must be less than payment amount                                                |
| **2063** | Reason code UAPA only available for RTP v5.0                                     | Use reason code FRAD for earlier RTP versions; UAPA requires RTP v5.0+                          |
| **2064** | Purpose can only be utilized for RTP v5.0+ payments                              | Purpose field requires RTP v5.0 or later                                                        |
| **2065** | Invalid purpose of payment code                                                  | Provide a valid purpose of payment code                                                         |
| **2066** | Case creator name can only be used for FedNow payments                           | Case creator name field only applicable to FedNow payments                                      |
| **2067** | Originator organization identifiers can only be used for FedNow payments         | Originator organization ID fields only applicable to FedNow payments                            |

### Configuration (2200-2267)

Errors related to product, account, and global configuration management.

| Code     | Description                                                                          | Resolution                                                                                |
| -------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| **2200** | Global profile change not pending                                                    | Operation requires global profile change to be in pending status                          |
| **2201** | Global profile not found or is invalid                                               | Verify global profile ID is correct and profile exists                                    |
| **2202** | Global change not approved                                                           | Global configuration change must be approved before applying                              |
| **2203** | Global config change approval requires dual control                                  | Have a second authorized user approve the global configuration change                     |
| **2212** | Account has not been enabled to send credit transfers for TCH                        | Enable TCH credit transfer send in account configuration                                  |
| **2213** | Account config change approval requires dual control                                 | Have a second authorized user approve the account configuration change                    |
| **2220** | Product config required                                                              | Include product configuration object in the request                                       |
| **2224** | Daily total dollar amount sent limit exceeded                                        | Daily outbound payment dollar limit reached; wait until next day or increase limit        |
| **2225** | Daily total dollar amount received limit exceeded                                    | Daily inbound payment dollar limit reached; wait until next day or increase limit         |
| **2226** | Daily sent transfer count limit exceeded                                             | Daily outbound payment count limit reached; wait until next day or increase limit         |
| **2227** | Daily received transfer count limit exceeded                                         | Daily inbound payment count limit reached; wait until next day or increase limit          |
| **2230** | Enabling payment request receive requires credit transfer send also enabled          | Enable credit transfer send before enabling payment request receive                       |
| **2231** | Enabling payment request send requires credit transfer receive also enabled          | Enable credit transfer receive before enabling payment request send                       |
| **2232** | Account has not been enabled to send payment requests                                | Enable payment request send in account configuration                                      |
| **2234** | Daily sent payment request count limit exceeded                                      | Daily outbound payment request count limit reached; wait until next day or increase limit |
| **2236** | Enabling FedNow payment request receive requires FedNow credit transfer send enabled | Enable FedNow credit transfer send before enabling FedNow payment request receive         |
| **2237** | Enabling FedNow payment request send requires FedNow credit transfer receive enabled | Enable FedNow credit transfer receive before enabling FedNow payment request send         |
| **2238** | Outbound FedNow payments are globally disabled                                       | FedNow outbound payments are disabled at global level; contact administrator              |
| **2239** | FedNow integration globally disabled                                                 | FedNow integration is disabled at global level; contact administrator                     |
| **2241** | Product/account not enabled to send FedNow credit transfers                          | Enable FedNow credit transfer send in product or account configuration                    |
| **2242** | Product/account FedNow max payment amount exceeded                                   | Reduce payment amount to be within FedNow maximum limit for product/account               |
| **2243** | Account has not been enabled to send CRNow credit transfers                          | Enable CRNow credit transfer send in account configuration                                |
| **2244** | Creditor account has not been enabled to receive CRNow credit transfers              | Recipient account must have CRNow credit transfer receive enabled                         |
| **2245** | Product/account CRNow max payment amount exceeded                                    | Reduce payment amount to be within CRNow maximum limit for product/account                |
| **2246** | CRNow creditor is not whitelisted for specified debtor                               | Add creditor to debtor's CRNow whitelist before sending payment                           |
| **2247** | Sender ID is not valid format                                                        | Provide sender ID in correct format                                                       |
| **2248** | Enabling FedNow credit transfer send requires FedNow payment return receive enabled  | Enable FedNow payment return receive before enabling FedNow credit transfer send          |

### Holds (2300-2302)

Errors related to payment hold management.

| Code     | Description                                                             | Resolution                                                       |
| -------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------- |
| **2300** | Hold is not active                                                      | Hold must be in active status for this operation                 |
| **2301** | Hold is not evaluating                                                  | Hold must be in evaluating status for this operation             |
| **2302** | Manual holds can only be placed when payment already has status of hold | Payment must already be on hold before manual hold can be placed |

### Integration management (2352, 2376-2378)

Errors related to network integration configuration.

| Code     | Description                            | Resolution                                                      |
| -------- | -------------------------------------- | --------------------------------------------------------------- |
| **2352** | Integration already in requested state | Integration is already in the requested state; no change needed |
| **2376** | Active/active integration is disabled  | Active/active integration is not enabled; contact administrator |
| **2377** | Cannot disable last active server      | At least one active server must remain enabled                  |
| **2378** | Site already in requested state        | Site is already in the requested state; no change needed        |

### Whitelist management (2401-2410)

Errors related to CRNow whitelist configuration.

| Code     | Description                                               | Resolution                                                                     |
| -------- | --------------------------------------------------------- | ------------------------------------------------------------------------------ |
| **2401** | Sender product not found                                  | Verify sender product ID is correct and product exists                         |
| **2402** | Sender account not found                                  | Verify sender account number is correct and account exists                     |
| **2403** | Sender account does not belong to sender product          | Ensure sender account is associated with specified sender product              |
| **2404** | Receiver product not found                                | Verify receiver product ID is correct and product exists                       |
| **2405** | Receiver account not found                                | Verify receiver account number is correct and account exists                   |
| **2406** | Receiver account does not belong to receiver product      | Ensure receiver account is associated with specified receiver product          |
| **2407** | Wildcard exists for sender product                        | Remove wildcard entry before adding specific whitelist entries                 |
| **2408** | Whitelist entry already exists for requested values       | Whitelist entry already exists; cannot create duplicate                        |
| **2409** | Receiver product required when receiver account specified | Include receiver product when specifying receiver account                      |
| **2410** | Invalid product/account configuration requested           | Product/account whitelist configuration is invalid; verify configuration rules |

## Additional Resources

- **ISO 20022 Standard**: [www.iso20022.org](https://www.iso20022.org)
- **TCH RTP Documentation**: TCH RTP Message Specification Version 5.0
- **Support**: Contact your payment operations team or the respective network support center for assistance with recurring error codes.

[title] Transaction reports
[path] Lending/

## Transaction data

Transaction data enables Cross River to collect interest based on an adjusted loan balance. The table below is the transaction reference information for the files.

## File conventions

- File format: CSV.
- File transport mechanism: SFTP (SSH; supported public key algorithms RSA, sha2 521, sha2 384, sha 256).
- File location: \Prod\MPL\TransactionReports\MplId\_TransactionTape\_yyyymmdd.csv
- Naming convention: MplId\_TransactionTape\_yyyymmdd.csv, where yyyymmdd is the date of file generation.
- Report date: should match the date of the filename.
- Report data: should be from the day prior to the report date.

:::hint{type="info"}
* Make sure to provide a list of possible `TransactionCodes` and `SourceCodes`
* This file should include all borrower payments, payment reversals, cancellations, refunds, charge offs, loan modifications, and fee assessments.
:::

**Transaction code mapping table is below.**

## Dictionary updates

| Attribute                                                                                                                                                     | Action  | Date             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------------- |
| `Amount`<br />`BalanceImpactCode`                                                                                                                             | Added   | October 21, 2021 |
| `TransactionAmount`<br />`BalancePrior`<br />`PrincipalAmount`<br />`InterestAmount`<br />`LateFeeAmount`<br />`BalanceAfter`<br />`NextDueDate`<br />`Notes` | Removed | October 21, 2021 |

| Attribute                                                 | Description                                                                                                                                                                                                                                                                                                                                                               | Sample Record                           |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `TransactionId`<br />alphanumeric                         | Unique loan transaction ID. Use the ID from the servicing system.<br />Note that the TransactionId and TransactionCode must be unique.                                                                                                                                                                                                                                    | <br />123ABC456                         |
| `LoanId`<br />alphanumeric                                | Unique loan number                                                                                                                                                                                                                                                                                                                                                        | 777777-AAAAA                            |
| `TransactionDate`<br />date                               | Date the transaction was processed by the servicing system                                                                                                                                                                                                                                                                                                                | Format: yyyy-mm-dd<br />2014-11-10      |
| `SourceCode`<br />alphanumeric                            | An identifier used to describe the method of the transaction                                                                                                                                                                                                                                                                                                              | AAA                                     |
| `SourceCodeDesc`<br />alphanumeric                        | A description that correlates to the SourceCode identifier such as personal check, money order, AutoPay, etc.<br /><br />                                                                                                                                                                                                                                                 | <br /><br />ACH                         |
| `TransactionCode`<br />alphanumeric<br />                 | An identifier used to describe the type of transaction - use the transaction code from the servicing system.<br />Note that TransactionId and TransactionCode must be unique.<br />Use the ID in your servicing system - please provide mappings as outlined below.<br />Reversed transactions should have a different transaction code from the original transaction.    | <br /><br /><br />BBB                   |
| `TransactionCodeDesc`<br />alphanumeric<br /><br /><br /> | A description that correlates to the TransCode identifier such as boarding, scheduled payment, AutoPay fee payment, refund, cancellation, fee assessment, charged off principal, loan modification, etc.                                                                                                                                                                  | <br /><br />Principal payment           |
| `Amount`<br />numeric<br /><br />                         | Reflects the amount of this portion - TransactionId + TransactionCode.<br />---<br />**Note on operators:** A transaction that increases the balance should be positive (+), and a transaction that decreases the balance should be negative (-).<br />You should be able to **SUM** the transactions with the same balance impact code to arrive at the current balance. | <br /><br /><br /><br />277.85          |
| `BalanceImpactCode`<br />integer                          | Code that indicates the type of balance impacted by this TransactionId + TransactionCode<br />---<br />0 = No balance impact<br />1 = Principal<br />2 = Interest<br />3 = Fee                                                                                                                                                                                            | <br /><br /><br /><br /><br /><br />1   |
| `NonCashFlag`<br />bit                                    | A code that indicates if the transaction was cash or not.<br />---<br />0 - Cash transaction<br />1 - Other non-cash transaction                                                                                                                                                                                                                                          | <br /><br />0                           |
| ReversalIndicator<br />bit                                | A code that indicates the reason for a transaction reversal.<br />---<br />0 - Original transaction<br />1 - Reversal of original transaction                                                                                                                                                                                                                             | <br /><br />0                           |
| `ReversalReason`<br />alphanumeric                        | A description that indicates the reason for reversal such as ACH return, bounced check, etc.                                                                                                                                                                                                                                                                              | <br />ACH                               |
| `EffectiveDate`<br />date                                 | The date the transaction affected the loan                                                                                                                                                                                                                                                                                                                                | Format: yyyy-mm-dd<br />e.g. 2014-11-10 |
| `RemittedDate`<br />date                                  | The date the funds are remitted to CR                                                                                                                                                                                                                                                                                                                                     | Format: yyyy-mm-dd<br />e.g. 2014-11-10 |
| `PaymentOwner`<br />alphanumeric                          | Payment owner                                                                                                                                                                                                                                                                                                                                                             | CR                                      |

| TransactionCode | TransactionCodeDefinition                | PrincipalImpact (y/n) | InterestImpact (y/n) | FeelImpact (y/n) | CashFlag | TransactionAmountSign |
| --------------- | ---------------------------------------- | --------------------- | -------------------- | ---------------- | -------- | --------------------- |
| 123             | Principal paid by borrower               | y                     | n                    | n                | 1        | -                     |
| 456             | Principal adjustment (small $ write off) | y                     | n                    | n                | 0        | -                     |
| 789             | Interest paid by borrower                | n                     | y                    | n                | 1        | -                     |
| 120             | Refund principal                         | y                     | n                    | n                | 1        | -                     |
| 450             | Principal payment reversal               | y                     | n                    | n                | 1        | +                     |
| 111             | Late fee assessed                        | n                     | n                    | n                | 0        | +                     |
| 222             | Late fee paid                            | n                     | n                    | y                | 1        | -                     |


[title] Get external beneficiary
[path] Onchain payments/APIs/

## API reference

Return external beneficiary records (wallet + beneficiary details) created for a specific account. These represent saved payment destinations on supported blockchains.

The call can return multiple external beneficiary records.

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /crypto/v1/external-addresses",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/crypto/v1/external-addresses",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "GvbYb-XxXg8aAAHK3ybHL",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/crypto/v1/external-addresses?AccountNumber=2179128455' \\\n--header 'Accept: text/plain' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "v6GoiVlQrhbrwW3ADKKqs",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/crypto/v1/external-addresses?AccountNumber=2179128455',\n  'headers': {\n    'Accept': 'text/plain'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "V5hrmC3SaOMF1akpZNpi3",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/crypto/v1/external-addresses?AccountNumber=2179128455\"\n\npayload = \"\"\nheaders = {\n  'Accept': 'text/plain'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "P5LPZ4taem7mLL5M_nulH",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/crypto/v1/external-addresses?AccountNumber=2179128455\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"text/plain\"\n\nresponse = https.request(request)\nputs response.read_body",
        "customLabel": ""
      },
      {
        "id": "fVMfyIaLVPdzf5jCVoTHZ",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/crypto/v1/external-addresses?AccountNumber=2179128455\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"text/plain\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "GvbYb-XxXg8aAAHK3ybHL"
  },
  "results": {
    "languages": [
      {
        "id": "VVw-EG1caZm9nSwDN62Ez",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"5d5b9e18-4c83-4788-8bdd-b46400c2b4ff\",\n            \"accountNumber\": \"2179128455\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"title\": \"Jerry Penn onchain\",\n            \"blockchain\": \"solana\",\n            \"address\": \"22222222222222222222222222222222222222222222\",\n            \"tag\": \"test1\",\n            \"beneficiary\": {\n                \"name\": \"Amanda Panda\",\n                \"addressLine1\": \"123 Main street\",\n                \"city\": \"New York\",\n                \"stateProvince\": \"NY\",\n                \"countryCode\": \"US\",\n                \"postalCode\": \"10182\"\n            },\n            \"lastModifiedAt\": \"2026-06-09T11:48:54.399822Z\",\n            \"hasPendingChanges\": false\n        },\n        {\n            \"id\": \"b4cc8ee7-ebff-4b65-875e-b4650074d081\",\n            \"accountNumber\": \"2179128455\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"title\": \"Jerry Penn onchain\",\n            \"blockchain\": \"solana\",\n            \"address\": \"33333333333333333333333333333333333333333333\",\n            \"tag\": \"test_SOL\",\n            \"beneficiary\": {\n                \"name\": \"Jerry Penn\",\n                \"addressLine1\": \"34 Howe Drive\",\n                \"city\": \"Leawood\",\n                \"stateProvince\": \"KS\",\n                \"countryCode\": \"US\",\n                \"postalCode\": \"66206\"\n            },\n            \"lastModifiedAt\": \"2026-06-10T07:05:18.508923Z\",\n            \"hasPendingChanges\": true\n        },\n        {\n            \"id\": \"145c6614-7193-4d65-8c8a-b46b00945acc\",\n            \"accountNumber\": \"2179128455\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"title\": \"Jerry Penn onchain\",\n            \"blockchain\": \"solana\",\n            \"address\": \"44444444444444444444444444444444444444444444\",\n            \"tag\": \"test_SOL2\",\n            \"beneficiary\": {\n                \"name\": \"Jerry Penn\",\n                \"addressLine1\": \"34 Howe Drive\",\n                \"city\": \"Leawood\",\n                \"stateProvince\": \"KS\",\n                \"countryCode\": \"US\",\n                \"postalCode\": \"66206\"\n            },\n            \"lastModifiedAt\": \"2026-06-16T09:00:08.874081Z\",\n            \"hasPendingChanges\": false\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 4,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": false\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "VVw-EG1caZm9nSwDN62Ez"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Unique identifier of the account whose external beneficiaries are retrieved",
        "": "Unique identifier of the account whose external beneficiaries are retrieved"
      },
      {
        "name": "title",
        "kind": "optional",
        "type": "string",
        "description": "External beneficiary title (for example, \"Subscription_ETH\")",
        "": "External beneficiary title (for example, \"Subscription_ETH\")"
      },
      {
        "name": "address",
        "kind": "optional",
        "type": "string",
        "description": "Specific blockchain external beneficiary address",
        "": "Specific blockchain external beneficiary address"
      },
      {
        "name": "tag",
        "kind": "optional",
        "type": "string",
        "description": "Tag/memo/destination tag if the blockchain requires it",
        "": "Tag/memo/destination tag if the blockchain requires it"
      },
      {
        "name": "blockchain",
        "kind": "optional",
        "type": "string",
        "description": "Blockchain network of the external beneficiary",
        "": "Blockchain network of the external beneficiary"
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the external beneficiary record"
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number associated with the beneficiary",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format. Here it indicates what partner created this wallet.",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "Human-readable label for the wallet (e.g., Eth, Sol, ethereum)",
      "children": []
    },
    {
      "name": "blockchain",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain network where payments will be sent (for example, Solana, Ethereum)",
      "children": []
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain wallet address",
      "children": []
    },
    {
      "name": "tag",
      "kind": "optional",
      "type": "string",
      "description": "Tag/memo/destination tag if the blockchain requires it",
      "children": []
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "object",
      "description": "The person or business that receives the payment",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Full legal name of the beneficiary"
        },
        {
          "name": "addressLine1",
          "kind": "optional",
          "type": "string",
          "description": "First line of the beneficiary’s physical address"
        },
        {
          "name": "addressLine2",
          "kind": "optional",
          "type": "string",
          "description": "Second line of the beneficiary’s physical address (nullable)"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Full name of the city where the beneficiary is located"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state or province of the beneficiary"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code for the beneficiary's country"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code of the beneficiary"
        }
      ]
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cryptov1external-addresses",
  "legacyHash": "hWri18PfMpeIMzY9Vh22f"
}
```
:::




[title] RPPS rail
[path] Lending/Loan funding - payment rails/

## Transfer funds direct to billers

You can use the RPPS rail in Arix to electronically transfer funds to pay loan proceeds directly to billers. Borrowers who select to use this rail, can have funds sent directly to billers to pay down their outstanding bills, most typically used to pay down outstanding credit card bills.

The rail uses Mastercard's RPPS rail system. Arix sends an API call to the Cross River RPPS gateway, which in turn sends a request to Mastercard to transfer funds. Mastercard then sends a credit to the biller.

RPPS requests are batched daily by the Cross River RPPS gateway when the system sends the batched requests to Mastercard for processing.

:::hint{type="info"}
The borrower's credit card does not have to be a Mastercard. It can be any card issued by a biller that signed up to receive bill payments via the RPPS service.
:::

```json
{
    "Rails": [
      {
           "RailType": "RPPS",
           "Priority": 1,
           "Amount": 900,
           "RPPSFields": {
             "BillerID": "1234567890",
             "BillerName": "Anita Loan",
             "ConsumerNameAtBiller": "TestNameAtBiller",
             "ConsumerAccountNumberAtBiller": "5454546498195454"
           }
      }        
    ]
}
```

## Request parameters

| Attribute                                         | Description                                                                                                                                                                             |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BillerID`<br />string                            | The 10 character ID number of the credit card issuer (biller).<br />If length(BillerID) \< 10, you can pad with zeroes. Example: 0000012345<br /><font color="#eb144c">Required </font> |
| `ConsumerNameAtBiller`<br />string                | The borrower's cardholder name on the credit card account.<br /><font color="#eb144c">Required </font>                                                                                  |
| `ConsumerAccountNumberAtBiller`<br />string<br /> | The borrower's credit card account number on the biller's credit card.<br /><font color="#eb144c">Required </font>                                                                      |
| `BillerName`<br />string<br />                    | The name of the credit card company that is making the disbursement.<br /><font color="#0F766E">Optional </font>                                                                        |

## Biller directory

There are 2 ways to do directory lookup:

1. Cross River can deliver a daily CSV of the RPPS biller directory into your SFTP folder.
2. MC RPPS biller validator API [https://developer.mastercard.com/product/bill-payment-validator/](https://developer.mastercard.com/product/bill-payment-validator/). Cross River can set up credentials for you.

## RPPS sandbox simulation

You can simulate rails in the sandbox. The table indicates the responses that you should receive for the transaction amounts listed.

| Amount         | Result                                                           |
| -------------- | ---------------------------------------------------------------- |
| Up to $3       | Result is `submitted`                                            |
| Above $3 to $4 | Result is `rejected`                                             |
| Avove $4 to $5 | Result is `approved`<br />After 30 seconds it becomes `returned` |
| Above $5       | Result is `approved`                                             |

## PCI compliance

Payment Card Industry (PCI) standards ensure that sensitive credit card information is protected from fraudulent use. Arix processing complies with PCI standards.

When an RPPS transaction is initiated:&#x20;

1. Arix receives a request that includes the borrower's credit card number.&#x20;
2. This number is sent to a tokenization service that is Level 1 PCI-compliant.&#x20;
3. They send a token back to Arix, which stores the token.

When processing the RPPS batch, Arix calls to detokenize all the credit card numbers, and sends the credit card numbers in a file to Mastercard. Arix logs contain only masked credit card numbers.

## RPPS Returns

RPPS rails are approved immediately after funding and the rail is marked `Success`.

If however, an RPPS is returned, these are the guidelines:

- If, within 5 days of the rail attempt RPPS returns a result of `Rejected` or `Failed`, Arix marks the rail as `Rejected`.
- If, within 5 days of the rail attempt, RPPS returns a result of `Returned`, Arix marks the rail as `Returned`.
- If 5 days pass without a `Rejected`, `Failed` or `Returned` result from RPPS, Arix marks the rail as `Success`.

## RPPS transaction reversal request

When requesting a reversal of an RPPS transaction, follow this process:

1. Check whether the biller allows reversal using the **reqAdndaRevm** tag that you can find in the XML biller directory.
2. If the biller allows reversal, then send an email to [iprops@crossriver.com](mailto\:iprops@crossriver.com) and [mplops@crossriverbank.com](mailto\:mplops@crossriverbank.com) as follows:
   - Subject: RPPS REVERSAL REQUEST
   - Content:
     - Biller ID
     - Account with biller (first 6 digits & last 4 digits)
     - Name on account
     - Reversal amount

## Sending reversals

In accordance with Mastercard RPPS Rules and Obligations, the following rules pertain to sending reversals:&#x20;

- Participant may send a reversal transaction to a Biller that accepts reversals within five Mastercard Remote Payment and Presentment Service® (RPPS) processing days of the payment that was previously sent.&#x20;
- Participant may initiate a reversal only for actual payment transactions previously sent from the Participant to the Biller through the Mastercard Remote Payment and Presentment Service® (RPPS) network.&#x20;
- Participant shall indemnify the affected Participant and Mastercard Remote Payment and Presentment Service® (RPPS) from and against any and all claims, demands, losses, liabilities, or expenses, including attorney fees and costs that result directly or indirectly from the debiting or crediting of the reversal transaction.
- Participant shall notify the Receiver prior to submitting a reversal transaction and advise them of the reason for such reversal prior to submitting reversals.

### RPPS credit and debit cap management

Debit caps limit the daily amount of reversals that a Concentrator/Biller will accept from an Originator. For example, a concentrator/biller may only reverse $2500 per day even if the original payment was $10,000. These caps minimize risk to Mastercard and the RPPS settlement banks by containing exposure with respect to daily settlement positions. Debit caps limit the daily debit amount an Originator may send to a Receiver to reverse payments.

### Good faith request

Good Faith requests are for items that have expired for reversals past the five day time frame or for billers who accept reversals more than the daily debit cap as set by the biller/concentrator.&#x20;

Ops will contact the biller to make a sincere request to repay the transaction's proceeds. When processing reversals, many institutions adhere to their own internal procedure. Reversals may take six months or longer to recover, though this is not always the case. Submitting good faith request returns are not guaranteed as the decision solely lies on the receiving institution. To submit a good faith request – send an email to [IPROps.support@crossriver.com](mailto\:IPROps.support@crossriver.com) with the name, amount and disbursement date.

RPPS requests are batched daily by the Cross River RPPS gateway when the system sends the batched requests to Mastercard for processing. If duplicate transactions are detected at Mastercard, the system automatically rejects the duplications.

[title] Authorize check
[path] Payments/Checks/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Check.Payment.Received](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Check.PositivePay.Created](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;

## API reference

Authorizes a check using [Positive Pay](docId\:qMy-Hnem-DnbIioD8z2jS).&#x20;

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/positive-pay-authorizations",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/checks/v1/positive-pay-authorizations",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "C57PnRkRzpPg0u7vhM1aA",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/positive-pay-authorizations' \\\n--data '{\n  \"accountNumber\": \"2640511503\",\n  \"amount\": 10000,\n  \"checkNumber\": 64958137456,\n  \"payeeName\": \"John Strong\",\n  \"expiresAt\": \"2025-07-19T12:12:27.270Z\"\n}'",
        "customLabel": ""
      },
      {
        "id": "vYz0Jtv8I1mhbtkrI5WDB",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/positive-pay-authorizations',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"accountNumber\\\": \\\"2640511503\\\",\\r\\n  \\\"amount\\\": 10000,\\r\\n  \\\"checkNumber\\\": 64958137456,\\r\\n  \\\"payeeName\\\": \\\"John Strong\\\",\\r\\n  \\\"expiresAt\\\": \\\"2025-07-19T12:12:27.270Z\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "KKmPhrGOQsjsssgRYQSOk",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"accountNumber\\\": \\\"2640511503\\\",\\r\\n  \\\"amount\\\": 10000,\\r\\n  \\\"checkNumber\\\": 64958137456,\\r\\n  \\\"payeeName\\\": \\\"John Strong\\\",\\r\\n  \\\"expiresAt\\\": \\\"2025-07-19T12:12:27.270Z\\\"\\r\\n}\"\nheaders = {}\nconn.request(\"POST\", \"/checks/v1/positive-pay-authorizations\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "DX88Z7gdC-upg6Usiqy5c",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/positive-pay-authorizations\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"accountNumber\\\": \\\"2640511503\\\",\\r\\n  \\\"amount\\\": 10000,\\r\\n  \\\"checkNumber\\\": 64958137456,\\r\\n  \\\"payeeName\\\": \\\"John Strong\\\",\\r\\n  \\\"expiresAt\\\": \\\"2025-07-19T12:12:27.270Z\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "WEXP6FBsmhFBu7kfskjCy",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/positive-pay-authorizations\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"accountNumber\": \"2640511503\",`+\"\n\"+`\n  \"amount\": 10000,`+\"\n\"+`\n  \"checkNumber\": 64958137456,`+\"\n\"+`\n  \"payeeName\": \"John Strong\",`+\"\n\"+`\n  \"expiresAt\": \"2025-07-19T12:12:27.270Z\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "C57PnRkRzpPg0u7vhM1aA"
  },
  "results": {
    "languages": [
      {
        "id": "UMLrTwLcOrwmKN6RHJT6G",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"bf50797f-bdd7-4cc9-8efc-b30d008043d3\",\n    \"status\": \"Authorized\",\n    \"accountNumber\": \"2640511503\",\n    \"payeeName\": \"John Strong\",\n    \"checkNumber\": \"64958137456\",\n    \"amount\": 10000,\n    \"createdAt\": \"2025-07-01T03:46:59.9029464-04:00\",\n    \"expiresAt\": \"2025-07-19T08:12:27.27-04:00\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-07-01T03:46:59.9029464-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "UMLrTwLcOrwmKN6RHJT6G"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the account the check is drawn on",
        "": "Number of the account the check is drawn on"
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "Integer",
        "description": "Money amount that appears on the check",
        "children": []
      },
      {
        "name": "checkNumber",
        "kind": "required",
        "type": "string",
        "description": "The serial number that appears on the check.\n20 characters maximum",
        "": "The serial number that appears on the check.\n20 characters maximum"
      },
      {
        "name": "payeeName",
        "kind": "required",
        "type": "string",
        "description": "Name written on the pay to the order of line of the check.\n255 characters maximum.",
        "": "Name written on the pay to the order of line of the check.\n255 characters maximum."
      },
      {
        "name": "expiresAt",
        "kind": "optional",
        "type": "string",
        "description": "The date and time the authorization expires. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
        "": "The date and time the authorization expires. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Positive pay authorization ID.\n\nSave this GUID format ID as proof that the check was authorized using Positive Pay, and for use if you revoke authorization.Positive pay authorization ID.\n\nSave this GUID format ID as proof that the check was authorized using Positive Pay, and for use if you revoke authorization."
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the positive pay record:\n\n- Authorized\n- Paid\n- Revoked",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account the check is drawn on",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "relatedPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the check payment",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "expiresAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time the authorization expires. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "revokedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time authorization was revoked. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1positive-pay-authorizations",
  "legacyHash": "JnTPNq1tlamzRTXbo4Q1b"
}
```
:::


[title] Purchase reports
[path] Lending/Untitled/

## Introduction

After the loan is funded, it is either sold back to the MPL, sold to an investor (directly), sold to the MPL on behalf of an investor (indirectly), or retained by Cross River.

When the loan completes the seasoning period it is **Ready to Sell** to the MPL or an investor. Cross River produces a pre-purchase report, which is an invoice.

## Pre-purchase report (invoice)

The pre-purchase reports are sent to the MPL or investors before the sale.
The invoice reports:

- The list of the loans ready to be purchased
- The loans retained by the bank
- Accrued interest
- The volume fee (if relevant)
- The sum total of funds to be paid to Cross River

The purchaser sends the funds to Cross River on loan origination day, or in the case of an ACH transfer, the day before.

The sum of the funds equals the total amount of the loans + the accrued interest + any bank fees (if relevant).

:::hint{type="info"}
The pre-purchase reports are available at 0600 Eastern on the SFTP location provisioned by Cross River at the following location: \Prod\MPL\DailyReports\PreLoanSaleReports\PreSale\_LoanSales\_PlatformName\_yyyy-mm-dd.csv (comma delimiter)
:::

## Post-purchase report (receipt)

*After* the MPL or the investor funds Cross River for the purchase, a post-purchase report, a receipt, is sent. The report confirms receipt of the funds and that the account has been reconciled.

The post-purchase reports contains:

- A list of the loans sold to them
- Fees and Interest paid to the bank

:::hint{type="info"}
The post-purchase reports are made available immediately post sell on the SFTP location provisioned by CR at the following location: \Prod\MPL\DailyReports\PostLoanSaleReports\PostSale\_LoanSales\_PlatformName\_yyyy-mm-dd.csv (comma delimiter)
:::

## Accrued interest

Accrued interest is the interest that accumulated on the loan since the loan was funded. The approach to accrued interest and how to calculate it is negotiated with all partners.

## Volume fee

The volume fee (or origination fee), is calculated based on the cost charged for loan origination and the volume of loans made over a specified amount of time. The volume fee is negotiated with all partners.

Cross River collects volume fee at the time of funding.

## Definitions

- At funding - estimated volume fee is collected
- Purchase = Par + accrued Interest
- Day - Calendar day. Purchases take place on the 1st business day following a 3-day seasoning period.
- If ACH is used for purchases, settlement is T+1. Wires settle the same day.
- Purchase account – A CR account to be provided, post board approval. The Routing # is 021214891.
- For MPLs - File name format: LoanSales\_PlatformName\_yyyymmdd.xlsx
- For Investors - File name format: LoanSales\_InvestorName\_yyyymmdd.xlsx


[title] RTP/FedNow rail
[path] Lending/Loan funding - payment rails/

:::hint{type="warning"}
**IMPORTANT**
The RTP rail in Cross River is now called Instant Payments.

In Arix, the `RailType` Enum is still called RTP.
Instant Payments uses one of the 2 network platforms to send a payment directly to the account of a borrower, vendor, or creditor.
:::

## Immediate fund transfers

**Instant Payments** is a way for MPLs to send immediate fund transfers at any time of the day, including weekends and holidays.

Cross River uses two different Instant Payments network platforms: RTP via The Clearing House (TCH), and the Federal Reserve's FedNow platform.

- [RTP® via The Clearing House](https://www.theclearinghouse.org/payment-systems/rtp). The Clearing House (TCH) provides Instant Payments using its RTP® system. All federally insured US depository institutions that participate in the RTP network can send payments from and receive payments to their accounts 24/7.
- [FedNow®](http://frbservices.org/financial-services/fednow). The Federal Reserve's instant payment infrastructure allows financial institutions of every size across the U.S. to provide safe and efficient 24/7 instant payment services.

Arix uses [network interoperability](docId:7HeOa4-BINjvx0kSdLKD3) to deliver the payment to the creditor as efficiently and effectively as possible. The network used for sending the payment depends on the routing number specified, and on availability. The payment response includes the network platform the payment has been processed through.

:::hint{type="info"}
All transactions occur in real-time and the payments are irrevocable.
:::

## Request body example

```json
{
   "FundingInfoUpdate":{
      "Rails":[
         {
            "RailType":"RTP",
            "Priority":1,
            "Amount":900,
            "RTPFields":{
               "SubjectRouting":"021214891",
               "SubjectAccount":"9999999999",
               "SubjectName":"Test"
            }
         }
      ]
   }
}
```

## Request parameters

| Attribute                          | Description                                                                                                                                                                 |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SubjectRouting`<br />string       | Receiving bank's routing number<br />The value entered for this field is validated up front and it must be 9 digits long<br /><font color="#eb144c">Required </font><br />  |
| `SubjectName`<br />string          | Name on the `SubjectAccount`<br />Limited to 22 characters<br /><font color="#eb144c">Required </font><br />                                                                |
| `SubjectAccount`<br />string<br /> | Account number of the `SubjectAccount`<br />Limited to 17 digits<br /><font color="#eb144c">Required </font><br />                                                          |
| `AdditionalDescription`            | A description of the payment<br />Limited to 140 characters<br /><font color="#0c121d">Optional </font>                                                                     |

## RTP payment queuing for offline participants

Although RTP participating banks have an SLA of 99.9% uptime, from time to time, a receiving bank will be unavailable to transact. This can be due to routine maintenance or unknown technical issues that are resolvable with time.

CR will queue the payment until the receiving bank becomes responsive or for up to 3 days. The RTP rail will be rejected if the payment hasn't been completed within 3 days.

If you'd like to cancel the rail before that, our operations team can cancel the payment for you.

## Reject simulation on sandbox

You can simulate receiving a reject response on the RTP rail.

Add the **reject\:prefix** to the `SubjectName` as seen on line 11.

```json
{
   "FundingInfoUpdate":{
      "Rails":[
         {
            "RailType":"RTP",
            "Priority":1,
            "Amount":900,
            "RTPFields":{
               "SubjectRouting":"021214891",
               "SubjectAccount":"9999999999",
               "SubjectName":"reject:Penny Pinchington"
          }
       }
    ]
 }
}

```


[title] Pav2 to Arix integration: Draws or line-of-credit
[path] Lending/Application decisioning/

# Draws or line-of-credit

The Pav2 to Arix integration gives partners a single API entry point for the full loan lifecycle. Application data submitted through Pav2 is automatically translated and forwarded to Arix for loan creation; eliminating duplicate integrations, reducing onboarding timelines, and getting you to your first funded loan faster.

To operate Line of Credit (LOC) loans or loans with Multiple Draws, or to enable you to buy **draws**, you need to implement the process of submitting a master application + loan, and then subline "loan" directly to Arix.&#x20;

:::hint{type="warning"}
Sublines do not require another application submission, unless there is a new decision on the application. The application submission creates the master line in this flow.
:::

# Line of credit flow:  Step-by-step

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/Ce8YYNm-B9UoG7gTtXF1j_container.png)

## Phase 1: Master loan creation (one-time)

- **Partner → Pav2:** `POST /`[Application](docId\:PTX0F232EfVCVLbsYzT6I) (submit LOC application)
  - **Pav2 validates** and calls Arix `POST /Loan` (system-to-system) when an application is **approved and ready for funding&#x20;**&#x61;ccording to application details.
- **Pav2 → Partner:** Returns 200 with **Master LoanID. Save this ID for calling Arix.**
- **Partner → Pav2:** `POST /v2/applications/by-app-id/{applicationid}/attachments` (app docs stored in Pav2 only, not sent to Arix)
- **Arix → Partner:** Webhook `LoanStatusUpdated` Status = 1 (Received)
- **Partner → Arix:** `POST /Loan/{MasterLoanId}/Attachments` (compliance docs)
- **Arix** runs compliance checks → ✅ Passes
- **Arix → Partner:** Webhook `LoanStatusUpdated` Status = 11 (`AwaitingFunding`) or 104 (`NotFullyFunded`)&#x20;
  - ⛔ **Master Loan** should not include funding. If you need status to be Funded, you can call [Loan funding - payment rails](docId\:GMP-Bavby6sAgCbQlLsJM) with an empty array \[] of rails.&#x20;

:::BlockQuote
✅ Master Loan approved and ready for draws
:::

## Phase 2: Subline draw (repeat per draw)

- **Partner → Arix (direct):** `POST /Loan` includes draw amount, Master LoanID reference, and rails\[] (funding info)
  - Pav2 is **not** involved in draws
- **Arix** creates Subline linked to Master → **skips compliance** (Master already passed) → processes funding using rails\[]
- **Arix → Partner:** Webhook `LoanStatusUpdated` InFunding → Funded (Subline LoanID)
- **Partner** submits daily servicing data for the subline until paid off/closed

:::BlockQuote
🔄 Repeat Steps 17–24 from the step-by-step flow for each additional draw
:::

# Details and format of subline draws

::::WorkflowBlock
:::WorkflowBlockItem
**Unique loan number**

- When calling Pav2 to open the LOC:
  The field **Loannumber** = `<loan-number>`
- On Draws:
  The field **Loannumber** = `<loanNumber>`-yyyymmdd (add mmss if needed to make more than one draw per day).
:::

:::WorkflowBlockItem
**Oversight**

We perform oversight checks when the LOC is opened, and Pav2 calls Arix the first time for the partner. 
For subsequent draws, the JSON in `field5` should contain the following:

```json
{
  "Loan": {
    "LoanNumber": {{loanNumber}}, // in form <loanNumber>-yyyymmdd (add mmss if needed to make more than one draw per day).
    "IssuingBankId": "CRB", // hardcode this
    "Platform": "PartnerPlatform", // hardcode this
    "LoanType": 1, // same as master line
    "NoteDate": "2025-12-18", // same as master line
    "BorrowerLastName": "a LOC draw", //hardcode this
    "BorrowerFirstName": "This is",//, hardcode this
    "BorrowerDOB": "1970-01-01", // hardcode this
    "BorrowerSSN": "999999999", // hardcode this
    "BorrowerAddress": "2115 Linwood Avenue" , // hardcode this
    "BorrowerCity": "Fort Lee", // hardcode this
    "BorrowerState": "NJ", // hardcode this
    "BorrowerZip": "07024", // hardcode this
    "Rate": 10.0, // hardcode this
    "APR": 10.0, // hardcode this
    "Program": "Draw", // hardcode this
    "Investor": "CompanyPurchasingLoan", // Investor that will purchase the loan - String(300)
    "LoanAmount":5000000.00, // this amount needs to match the amount of the draw
    "NetFunding":5000000.00, // this amount needs to match the amount of the draw
    "Field5": "[{\"RevolvingLineFirstAppearance\":\"no\",\"RevolvingLineBalanceAsOfWhenCallingCRB\":4602199.98,\"RevolvingLineGUID\":\"This is the GUID that you receive on the response from PAV2\",\"CreditPolicyVersion\":\"v1.1\"}]",   
	"Rails": [
         {    // this example is using an XPAY rail. you shoud use for your draw the rail that is needed
        "XPayFields": {
                    "ToAccountName": "TETArixStgChecking", // sandbox
                    "ToAccountNumber": "2122225523", // sandbox
                    "Description": "test draw"
                },
                "RailType": "COSXPay",  // this should be the rail that you need to use
                "Priority": 1,
                "Amount": 5000000.00    // this amount needs to match the amount of the draw      
         }  
    ]
  }
}
```

The information in field5 of the above JSON, will allow the system to connect to the Master Loan. Here is a closer look:

```json
{
   "RevolvingLineFirstAppearance":"no",
   "RevolvingLineGUID":"GUID from Origination/First Appearance,
   "RevolvingLineBalanceAsOfWhenCallingCRB":"$123",
   "CreditPolicyVersion":"v1.1"
}
```

Field `Rails` should contain the payment rails to be funded.
:::

:::WorkflowBlockItem
**NetFunding rule**

| **Loan Tape:**<br />* NetFunding
* OriginationsFee
* Field5MerchantFee<br />**Loan Agreement:**<br />* AmountFinanced | 1. NetFunding = AmountFinanced
2. NetFunding = Loan Amount-Origination Fee-Field5.MerchantFee<br />    **Or**<br />     3. For draws, NetFunding = sum of the rails being funded |
| --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
:::

:::WorkflowBlockItem
**Draw rule**

| **Loan Tape**<br />* `Field5RevolvingLineFirstAppearance`
* `Field5RevolvingLineGUID` | 1. If `RevolvingLineFirstAppearance` = ‘**No**’, you can skip all Arix rules if `RevolvingLineGUID` is a valid GUID and it's status is not in (1,101,102,100)
2. If `RevolvingLineGUID` = ‘First Appearance’, pass this rule
3. Room for additional rules inline with what any checks that you make during draws |
| ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
:::
::::


[title] Create and update a loan
[path] Lending/

## POST /Loan and PUT /Loan/\{Id}

Use these calls to create and update a loan request in Arix.

:::hint{type="info"}
Request URL https\:// ... Post/Loan

Request URL https\:// ... Put/Loan/\{Id}

When you update a loan with `PUT/Loan`, use a `LoanUpdate` object. The attributes for a `LoanUpdate`object are the same as those used in the Loan object, when you call `POST/Loan`
:::

The API block below is the reference information for the API attributes you can use when you create a loan. They are the same attributes shown when you receive a response.&#x20;

:::hint{type="success"}
The same attributes are used for the update a loan request: `PUT /Loan/{Id}`
:::

## POST /Loan&#x20;

Use this call to create a loan request in Arix.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /Loan",
  "method": "POST",
  "url": "https://arixapisandbox.crbnj.net/Loan",
  "description": "Allows you to create a new loan by making an HTTP POST request to the specified URL. The request should include various details such as loan number, borrower information, loan amount, net funding, interest rate, and other relevant loan parameters. Additionally, the request can include information about different payment fields for rails.",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "UO5lPxxAa6xBk3bcveBmm",
        "language": "curl",
        "code": "{\n  \"Loan\": {\n    \"LoanNumber\": {{loanNumber}},\n    \"IssuingBankId\": \"CRB\",\n    \"Platform\": \"string\",\n    \"LoanType\": 1,\n    \"NoteDate\": \"2019-12-31\",\n    \"BorrowerLastName\": Waters,\n    \"BorrowerFirstName\": Therese,\n    \"BorrowerDOB\": \"1986-12-31\",\n    \"BorrowerSSN\": {{borrowerSSN}},\n    \"BorrowerAddress\": {{borrowerAddress}},\n    \"BorrowerCity\": Davisshire,\n    \"BorrowerState\": {{borrowerState}},\n    \"BorrowerZip\": {{borrowerZip}},\n    \"LoanAmount\": 1500,\n    \"NetFunding\": 1300,\n    \"Rate\": 0.2,\n    \"APR\": \"10\",\n    \"BatchId\": \"string\",\n    \"BorrowerPhone\": 959-390-4893,\n    \"BorrowerEmail\": Mara.Howell@hotmail.com,\n    \"Amortization\": 0,\n    \"Term\": 36,\n    \"RateType\": 0,\n    \"PriorLoanFlag\": \"string\",\n    \"FICO\": 10,\n    \"FICODate\": \"2017-12-31\",\n    \"CreditGrade\": \"string\",\n    \"AssetClass\": 0,\n    \"LoanPurpose\": \"string\",\n    \"Investor\": \"string\",\n    \"Servicer\": \"string\",\n    \"ApplicationDate\": {{ApplicationDate}},\n    \"RegBDecisionDate\": {{RegBDecisionDate}},\n    \"PurchaseDate\": {{PurchaseDate}},\n    \"PaymentDueDate\": {{PaymentDueDate}},\n    \"ApprovedLoanAmount\": 0,\n    \"PeriodicPayment\": 0,\n    \"OriginationFee\": 100,\n    \"HomeownerFlag\": \"string\",\n    \"OpenCreditLines\": 0,\n    \"AnnualIncome\": 0,\n    \"CreditInquiries12months\": 0,\n    \"DQPast24months\": 0,\n    \"PublicRecordsOnFile\": 0,\n    \"EmploymentLength\": 0,\n    \"DebtUtilization\": 0,\n    \"TotalRevolvingDebt\": 0,\n    \"AccountsOpenedPast24months\": 0,\n    \"CollectionsExcludingMedical\": 0,\n    \"MonthsSinceLastRecord\": 0,\n    \"Employer\": \"string\",\n    \"DTI\": 0,\n    \"MLAFLAG\": \"string\",\n    \"MAPR\": \"string\",\n    \"ReceiverName\": \"string\",\n    \"SameDayFlag\": 0,\n    \"AddendaRecord\": \"string\",\n    \"CoBorrowerFirstName\": \"string\",\n    \"CoBorrowerLastName\": \"string\",\n    \"CoBorrowerDOB\": \"1986-12-31\",\n    \"CoBorrowerSSN\": \"string\",\n    \"CoBorrowerAddress\": \"string\",\n    \"CoBorrowerCity\": \"string\",\n    \"CoBorrowerState\": \"string\",\n    \"CoBorrowerZip\": \"string\",\n    \"CoBorrowerPhone\": \"string\",\n    \"CoBorrowerEmail\": \"string\",\n    \"CoBorrowerFICO\": 0,\n    \"MerchantName\": \"string\",\n    \"MerchantFee\": 0,\n    \"RefundAmount\": 0,\n    \"AdjustedLoanAmount\": 0,\n    \"AdjustedNetFunding\": 0,\n    \"AdjustedOriginationFee\": 0,\n    \"AdjustedCurrentMonthlyPayment\": 0,\n    \"RefundDate\": \"2017-12-31\",\n    \"AdjustedMerchantFee\": 0,\n    \"FinalPaymentDate\": {{FinalPaymentDate}},\n    \"FinalPayment\": 0,\n    \"FinanceCharge\": 0,\n    \"TotalPayments\": 0,\n    \"PPY\": 0,\n    \"PaymentFrequency\": 0,\n    \"StandardEntryTypeCode\": \"string\",\n    \"InterestAccrualMethodDays\": 0,\n    \"SubpoolId\": \"Moe83\",\n    \"Program\": \"DTM\",\n    \"Field1\": \"string\",\n    \"Field2\": \"string\",\n    \"Field3\": \"string\",\n    \"Field4\": \"string\",\n    \"Field5\": \"string\",\n    \"Field6\": \"string\",\n    \"Field7\": \"string\",\n    \"Field8\": \"string\",\n    \"Field9\": \"string\",\n    \"Field10\": \"string\",\n    \"Field11\": \"string\",\n    \"Field12\": \"string\",\n    \"Field13\": \"string\",\n    \"Field14\": \"string\",\n    \"Field15\": \"string\",\n    \"Field16\": \"string\",\n    \"Field17\": \"string\",\n    \"Field18\": \"string\",\n    \"Field19\": \"string\",\n    \"Field20\": \"string\",\n\t\"Rails\": [\n      {\n        \"ACHFields\": {\n          \"StandardEntryClassCode\": \"PPD\",\n          \"TransactionType\": \"push\",\n          \"ToRoutingNumber\": \"021214891\",\n          \"ToAccountType\": \"Checking\",\n          \"ToAccountName\": \"Anita Loan\",\n          \"ToAccountNumber\": \"9999999999\",\n          \"Description\": \"LoanFunds\"\n        },\n        \"RailType\": \"COSACH\",\n        \"Priority\": 1,\n        \"Amount\": 100\n        }\n    ]\n  }\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "UO5lPxxAa6xBk3bcveBmm"
  },
  "results": {
    "languages": [
      {
        "id": "g8CAxfjudx1EbndJOF8QN",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"Id\": \"bd054ec9-8598-497e-ac2d-ac5400bbbf3e\",\n    \"MPLId\": \"TST\",\n    \"Date\": \"/Date(1602674613963-0400)/\",\n    \"LoanNumber\": \"MZ-1afc220c66ed4ad\",\n    \"IssuingBankId\": \"CRB\",\n    \"Platform\": \"string\",\n    \"LoanType\": \"HFS\",\n    \"NoteDate\": \"/Date(1577768400000-0500)/\",\n    \"BorrowerLastName\": \"Emard\",\n    \"BorrowerFirstName\": \"Darrion\",\n    \"BorrowerDOB\": \"/Date(536389200000-0500)/\",\n    \"BorrowerSSN\": \"640517072\",\n    \"BorrowerAddress\": \"8652_VonRueden_Walks\",\n    \"BorrowerCity\": \"East\",\n    \"BorrowerState\": \"LV\",\n    \"BorrowerZip\": \"30878\",\n    \"LoanAmount\": 500,\n    \"NetFunding\": 1300,\n    \"Rate\": 0.05,\n    \"APR\": 10,\n    \"BatchId\": \"string\",\n    \"BorrowerPhone\": \"323-514-0396\",\n    \"BorrowerEmail\": \"Helga_Hoeger14@gmail.com\",\n    \"Amortization\": 0,\n    \"Term\": 36,\n    \"RateType\": 0,\n    \"PriorLoanFlag\": \"string\",\n    \"FICO\": 10,\n    \"FICODate\": \"/Date(1514696400000-0500)/\",\n    \"CreditGrade\": \"string\",\n    \"AssetClass\": 0,\n    \"LoanPurpose\": \"string\",\n    \"Investor\": \"string\",\n    \"Servicer\": \"string\",\n    \"ApplicationDate\": \"/Date(1602674613934-0400)/\",\n    \"RegBDecisionDate\": \"/Date(1602674613934-0400)/\",\n    \"PurchaseDate\": \"/Date(1602907200000-0400)/\",\n    \"PaymentDueDate\": \"/Date(1607922000000-0500)/\",\n    \"ApprovedLoanAmount\": 0,\n    \"PeriodicPayment\": 0,\n    \"OriginationFee\": 100,\n    \"HomeownerFlag\": \"string\",\n    \"OpenCreditLines\": 0,\n    \"AnnualIncome\": 0,\n    \"CreditInquiries12months\": 0,\n    \"DQPast24months\": 0,\n    \"PublicRecordsOnFile\": 0,\n    \"EmploymentLength\": 0,\n    \"DebtUtilization\": 0,\n    \"TotalRevolvingDebt\": 0,\n    \"AccountsOpenedPast24months\": 0,\n    \"CollectionsExcludingMedical\": 0,\n    \"MonthsSinceLastRecord\": 0,\n    \"Employer\": \"string\",\n    \"DTI\": 0,\n    \"MLAFLAG\": \"string\",\n    \"MAPR\": \"string\",\n    \"ReceiverName\": \"string\",\n    \"SameDayFlag\": 0,\n    \"AddendaRecord\": \"string\",\n    \"CoBorrowerFirstName\": \"string\",\n    \"CoBorrowerLastName\": \"string\",\n    \"CoBorrowerDOB\": \"/Date(536389200000-0500)/\",\n    \"CoBorrowerSSN\": \"string\",\n    \"CoBorrowerAddress\": \"string\",\n    \"CoBorrowerCity\": \"string\",\n    \"CoBorrowerState\": \"string\",\n    \"CoBorrowerZip\": \"string\",\n    \"CoBorrowerPhone\": \"string\",\n    \"CoBorrowerEmail\": \"string\",\n    \"CoBorrowerFICO\": 0,\n    \"MerchantName\": \"string\",\n    \"MerchantFee\": 0,\n    \"RefundAmount\": 0,\n    \"AdjustedLoanAmount\": 0,\n    \"AdjustedNetFunding\": 0,\n    \"AdjustedOriginationFee\": 0,\n    \"AdjustedCurrentMonthlyPayment\": 0,\n    \"RefundDate\": \"/Date(1514696400000-0500)/\",\n    \"AdjustedMerchantFee\": 0,\n    \"FinalPaymentDate\": \"/Date(1618372800000-0400)/\",\n    \"FinalPayment\": 0,\n    \"FinanceCharge\": 0,\n    \"TotalPayments\": 0,\n    \"PPY\": 0,\n    \"PaymentFrequency\": 0,\n    \"StandardEntryTypeCode\": \"string\",\n    \"InterestAccrualMethodDays\": 0,\n    \"SubpoolId\": \"Moe83\",\n    \"Program\": \"DTM\",\n    \"Field1\": \"string\",\n    \"Field2\": \"string\",\n    \"Field3\": \"string\",\n    \"Field4\": \"string\",\n    \"Field5\": \"string\",\n    \"Field6\": \"string\",\n    \"Field7\": \"string\",\n    \"Field8\": \"string\",\n    \"Field9\": \"string\",\n    \"Field10\": \"string\",\n    \"Field11\": \"string\",\n    \"Field12\": \"string\",\n    \"Field13\": \"string\",\n    \"Field14\": \"string\",\n    \"Field15\": \"string\",\n    \"Field16\": \"string\",\n    \"Field17\": \"string\",\n    \"Field18\": \"string\",\n    \"Field19\": \"string\",\n    \"Field20\": \"string\",\n    \"Rails\": [\n        {\n            \"ACHFields\": {\n                \"StandardEntryClassCode\": \"PPD\",\n                \"TransactionType\": \"push\",\n                \"ToRoutingNumber\": \"021214891\",\n                \"ToAccountType\": \"GL\",\n                \"ToAccountName\": \"Test\",\n                \"ToAccountNumber\": \"9999999999\",\n                \"Description\": \"Test\"\n            },\n            \"Id\": \"c208ac03-803a-4b94-96c2-ac5400bbbf3e\",\n            \"RailType\": \"COSACH\",\n            \"Priority\": 1,\n            \"Amount\": 300,\n            \"LoanId\": \"bd054ec9-8598-497e-ac2d-ac5400bbbf3e\",\n            \"MPLId\": \"TST\",\n            \"IssuingBankId\": \"CRB\",\n            \"IsFailed\": false,\n            \"LoanType\": \"Undefined\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "g8CAxfjudx1EbndJOF8QN"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "LoanNumber",
        "kind": "required",
        "type": "string",
        "description": "A customer generated loan number. Up to 100 characters.",
        "": "A customer generated loan number. Up to 100 characters."
      },
      {
        "name": "IssuingBankId",
        "kind": "required",
        "type": "string",
        "description": "The ID of the issuing bank. CRB, NHB or BRB.",
        "": "required"
      },
      {
        "name": "Platform",
        "kind": "required",
        "type": "string",
        "description": "The entity that is the intermediary between the customer and Cross River. 100 characters.",
        "": "Platform"
      },
      {
        "name": "LoanType",
        "kind": "required",
        "type": "string",
        "description": "Select from:\n1 - HFS (Hold For Sale)\n2 - LTHFS (Long Term Hold For Sale)\n4 - CRBRetained (Retained)\n",
        "": "required"
      },
      {
        "name": "NoteDate",
        "kind": "required",
        "type": "string",
        "description": "Date the borrower becomes obligated to pay the loan. Date can be the signing date or the funding date (dependent on the loan documents).\nThe format must be: yyyy-mm-dd.",
        "": "Date the borrower becomes obligated to pay the loan. Date can be the signing date or the funding date (dependent on the loan documents).\nThe format must be: yyyy-mm-dd."
      },
      {
        "name": "BorrowerLastName",
        "kind": "required",
        "type": "string",
        "description": "Borrower's last name. 80 characters.",
        "": "Borrower's last name. 80 characters."
      },
      {
        "name": "BorrowerFirstName",
        "kind": "required",
        "type": "string",
        "description": "Borrower's first name. 80 characters.",
        "": "Borrower's first name. 80 characters."
      },
      {
        "name": "BorrowerDOB",
        "kind": "required",
        "type": "string",
        "description": "Borrower's date of birth.\nThe format must be: yyyy-mm-dd.",
        "": "Borrower's date of birth.\nThe format must be: yyyy-mm-dd."
      },
      {
        "name": "BorrowerSSN",
        "kind": "required",
        "type": "string",
        "description": "Borrower's Social Security Number.",
        "": "Borrower's Social Security Number."
      },
      {
        "name": "BorrowerAddress",
        "kind": "required",
        "type": "string",
        "description": "Borrower's address. 160 characters.",
        "": "Borrower's address. 160 characters."
      },
      {
        "name": "BorrowerCity",
        "kind": "required",
        "type": "string",
        "description": "Borrower's city of residence. 80 characters.",
        "": "Borrower's city of residence. 80 characters."
      },
      {
        "name": "BorrowerState",
        "kind": "required",
        "type": "string",
        "description": "Borrower's state of residence. 40 characters. Letter code.",
        "": "required"
      },
      {
        "name": "BorrowerZip",
        "kind": "required",
        "type": "string",
        "description": "Borrower's zip code. 20 digits.",
        "": "Borrower's zip code. 20 digits."
      },
      {
        "name": "LoanAmount",
        "kind": "required",
        "type": "number",
        "description": "Gross dollar amount requested.\nThis amount represents the sum of the origination fee plus (+) net funding amount.",
        "": "number"
      },
      {
        "name": "NetFunding",
        "kind": "required",
        "type": "number",
        "description": "Net dollar amount to be funded.",
        "": "Net dollar amount to be funded."
      },
      {
        "name": "Rate",
        "kind": "required",
        "type": "number",
        "description": "Interest rate, as a percent.",
        "": "Interest rate, as a percent."
      },
      {
        "name": "APR",
        "kind": "required",
        "type": "number",
        "description": "Annual percentage interest rate, as a percent.",
        "": "Annual percentage interest rate, as a percent."
      },
      {
        "name": "ServicingBankId",
        "kind": "optional",
        "type": "string",
        "description": "ID of the servicing bank.",
        "": "ID of the servicing bank."
      },
      {
        "name": "BorrowerPhone",
        "kind": "optional",
        "type": "string",
        "description": "Borrower's phone number.",
        "": "Borrower's phone number."
      },
      {
        "name": "BorrowerEmail",
        "kind": "optional",
        "type": "string",
        "description": "Borrower's email address. 100 characters.",
        "": "Borrower's email address. 100 characters."
      },
      {
        "name": "Amortization",
        "kind": "optional",
        "type": "integer",
        "description": "Number of payments at loan origination to pay off the loan.",
        "": "Number of payments at loan origination to pay off the loan."
      },
      {
        "name": "Term",
        "kind": "optional",
        "type": "integer",
        "description": "Number of months from loan origination to pay off the loan.",
        "": "integer"
      },
      {
        "name": "RateType",
        "kind": "optional",
        "type": "integer",
        "description": "1 - fixed\n2- floating\nOptional",
        "": "1 - fixed\n2- floating\nOptional"
      },
      {
        "name": "PriorLoanFlag",
        "kind": "optional",
        "type": "string",
        "description": "Whether the borrower took a loan with the platform in the past. 20 characters.\nY - yes\nN - no",
        "": "Whether the borrower took a loan with the platform in the past. 20 characters.\nY - yes\nN - no"
      },
      {
        "name": "FICO",
        "kind": "optional",
        "type": "integer",
        "description": "Borrower's 3-digit FICO score used for risk assessment.",
        "": "Borrower's 3-digit FICO score used for risk assessment."
      },
      {
        "name": "FICODate",
        "kind": "optional",
        "type": "string",
        "description": "Date FICO score was obtained.\nThe format must be: yyyy-mm-dd.",
        "": "Date FICO score was obtained.\nThe format must be: yyyy-mm-dd."
      },
      {
        "name": "CreditGrade",
        "kind": "optional",
        "type": "string",
        "description": "Internal grade for loan or from credit policy. 20 characters.",
        "": "Internal grade for loan or from credit policy. 20 characters."
      },
      {
        "name": "AssetClass",
        "kind": "optional",
        "type": "integer",
        "description": "Reason for loan:\n1 - student\n2 - solar\n3 - debt consolidation\n4 - home improvement\n5 - POS (point of service)\n6 - medical\n7 - auto\n99 - other\nOptional",
        "": "Reason for loan:\n1 - student\n2 - solar\n3 - debt consolidation\n4 - home improvement\n5 - POS (point of service)\n6 - medical\n7 - auto\n99 - other\nOptional"
      },
      {
        "name": "LoanPurpose",
        "kind": "optional",
        "type": "string",
        "description": "Borrower's stated purpose for the loan. 500 characters.",
        "": "Borrower's stated purpose for the loan. 500 characters."
      },
      {
        "name": "Investor",
        "kind": "optional",
        "type": "string",
        "description": "Name of investor who will be purchasing the loan.\nLeave blank for loans retained by Cross River.\n300 characters.",
        "": "Name of investor who will be purchasing the loan.\nLeave blank for loans retained by Cross River.\n300 characters."
      },
      {
        "name": "Servicer",
        "kind": "optional",
        "type": "string",
        "description": "The entity that handles the servicing of your account, such as billing statements, notices. 100 characters.",
        "": "The entity that handles the servicing of your account, such as billing statements, notices. 100 characters."
      },
      {
        "name": "ApplicationDate",
        "kind": "optional",
        "type": "string",
        "description": "Date the borrower applied for the loan.\nThe format must be: yyyy-mm-dd.",
        "": "Date the borrower applied for the loan.\nThe format must be: yyyy-mm-dd."
      },
      {
        "name": "RegBDecisionDate",
        "kind": "optional",
        "type": "string",
        "description": "Date the loan was approved.\nThe format must be: yyyy-mm-dd.\n",
        "": "Date the loan was approved.\nThe format must be: yyyy-mm-dd.\n"
      },
      {
        "name": "PurchaseDate",
        "kind": "optional",
        "type": "string",
        "description": "Date the lender or investor will purchase the loan from Cross River.\nThe format must be: yyyy-mm-dd.",
        "": "Date the lender or investor will purchase the loan from Cross River.\nThe format must be: yyyy-mm-dd."
      },
      {
        "name": "PaymentDueDate",
        "kind": "optional",
        "type": "string",
        "description": "Date the first payment is due.\nThe format must be: yyyy-mm-dd.",
        "": "Date the first payment is due.\nThe format must be: yyyy-mm-dd."
      },
      {
        "name": "ApprovedLoanAmount",
        "kind": "optional",
        "type": "number",
        "description": "Dollar amount the borrower was approved to borrow at the time of application. The amount can change before the final loan amount for reasons related to the borrower or lender.",
        "": "number"
      },
      {
        "name": "PeriodicPayment",
        "kind": "optional",
        "type": "number",
        "description": "Dollar amount of monthly payments.",
        "": "Dollar amount of monthly payments."
      },
      {
        "name": "OriginationFee",
        "kind": "optional",
        "type": "number",
        "description": "Charge to the borrower for the loan.",
        "": "Charge to the borrower for the loan."
      },
      {
        "name": "HomeownerFlag",
        "kind": "optional",
        "type": "string",
        "description": "Confirm if the borrower is a homeowner. 20 characters.\nYes or No.",
        "": "Confirm if the borrower is a homeowner. 20 characters.\nYes or No."
      },
      {
        "name": "OpenCreditLines",
        "kind": "optional",
        "type": "integer",
        "description": "Number of open credit lines.",
        "": "Number of open credit lines."
      },
      {
        "name": "AnnualIncome",
        "kind": "optional",
        "type": "integer",
        "description": "Borrower's annual income.",
        "": "integer"
      },
      {
        "name": "CreditInquiries12months",
        "kind": "optional",
        "type": "integer",
        "description": "Number of credit inquiries made on the borrower in the last 12 months.",
        "": "Number of credit inquiries made on the borrower in the last 12 months."
      },
      {
        "name": "DQPast24months",
        "kind": "optional",
        "type": "integer",
        "description": "Number of times the borrower has paid their loan late in the last 24 months on all accounts.",
        "": "integer"
      },
      {
        "name": "PublicRecordsOnFile",
        "kind": "optional",
        "type": "integer",
        "description": "Number of open public records, such as bankruptcy, tax liens or judgments.",
        "": "integer"
      },
      {
        "name": "EmploymentLength",
        "kind": "optional",
        "type": "integer",
        "description": "Number of years the borrower has been employed at their current job.",
        "": "integer"
      },
      {
        "name": "DebtUtilization",
        "kind": "optional",
        "type": "number",
        "description": "Percent of available credit used by borrower.",
        "": "number"
      },
      {
        "name": "TotalRevolvingDebt",
        "kind": "optional",
        "type": "number",
        "description": "Dollar amount of all revolving debt on the credit report.",
        "": "Dollar amount of all revolving debt on the credit report."
      },
      {
        "name": "AccountsOpenedPast24months",
        "kind": "optional",
        "type": "integer",
        "description": "Number of accounts the borrower opened in the last 24 months.",
        "": "Number of accounts the borrower opened in the last 24 months."
      },
      {
        "name": "CollectionsExcludingMedical",
        "kind": "optional",
        "type": "integer",
        "description": "Number of open collection accounts, not including collections for medical procedures.",
        "": "integer"
      },
      {
        "name": "MonthsSinceLastRecord",
        "kind": "optional",
        "type": "integer",
        "description": "This field indicates the number of months since the last active public record was on their credit report.\nA public record may indicate that a borrower stopped paying bills.",
        "": "integer"
      },
      {
        "name": "Employer",
        "kind": "optional",
        "type": "string",
        "description": "Name of empower. 500 characters.",
        "": "Employer"
      },
      {
        "name": "DTI",
        "kind": "optional",
        "type": "number",
        "description": "Debt to Income Ratio.\nRatio of total monthly payment obligations divided by the monthly income as a decimal, not as a percent. It is calculated differently for each credit policy.\nIt must be submitted as a decimal. The decimal value should be between 0-300.\n",
        "": "Debt to Income Ratio.\nRatio of total monthly payment obligations divided by the monthly income as a decimal, not as a percent. It is calculated differently for each credit policy.\nIt must be submitted as a decimal. The decimal value should be between 0-300.\n"
      },
      {
        "name": "MLAFLAG",
        "kind": "optional",
        "type": "string",
        "description": "If the loan is being made to a covered borrower. 20 characters.\nYes or No.",
        "": "If the loan is being made to a covered borrower. 20 characters.\nYes or No."
      },
      {
        "name": "MAPR",
        "kind": "optional",
        "type": "string",
        "description": "20 characters.\nA standard calculation used by lenders for loans covered by the Department of Defense's Military Lending Act & Regulation Z.\nMAPR is required if MLAFLAG = Yes\nFor more information, see: https://www.fdic.gov/regulations/compliance/manual/5/V-13.1.pdf",
        "": "20 characters.\nA standard calculation used by lenders for loans covered by the Department of Defense's Military Lending Act & Regulation Z.\nMAPR is required if MLAFLAG = Yes\nFor more information, see: https://www.fdic.gov/regulations/compliance/manual/5/V-13.1.pdf"
      },
      {
        "name": "ReceiverName",
        "kind": "optional",
        "type": "string",
        "description": "Name of party receiving funds via ACH. 200 characters.",
        "": "Name of party receiving funds via ACH. 200 characters."
      },
      {
        "name": "SameDayFlag",
        "kind": "optional",
        "type": "integer",
        "description": "If the loan being funded via ACH or same-day ACH. (Same-day ACH requires set up by Cross River).",
        "": "If the loan being funded via ACH or same-day ACH. (Same-day ACH requires set up by Cross River)."
      },
      {
        "name": "AddendaRecord",
        "kind": "optional",
        "type": "string",
        "description": "Additional record used for information purposes. 80 characters.",
        "": "Additional record used for information purposes. 80 characters."
      },
      {
        "name": "CoBorrowerFirstName",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's first name. 80 characters.",
        "": "Coborrower's first name. 80 characters."
      },
      {
        "name": "CoBorrowerLastName",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's last name.  80 characters.",
        "": "CoBorrowerLastName"
      },
      {
        "name": "CoBorrowerDOB",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's date of birth.\nThe format must be: yyyy-mm-dd",
        "": "CoBorrowerDOB"
      },
      {
        "name": "CoBorrowerSSN",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's Social Security Number.",
        "": "Coborrower's Social Security Number."
      },
      {
        "name": "CoBorrowerAddress",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's address.  160 characters.",
        "": "Coborrower's address.  160 characters."
      },
      {
        "name": "CoBorrowerCity",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's city of residence.  80 characters.",
        "": "CoBorrowerCity"
      },
      {
        "name": "CoBorrowerState",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's State of residence.  40 characters.",
        "": "CoBorrowerState"
      },
      {
        "name": "CoBorrowerZip",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's zip code.  20 digits.",
        "": "CoBorrowerZip"
      },
      {
        "name": "CoBorrowerPhone ",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's phone number.  20 digits.",
        "": "CoBorrowerPhone "
      },
      {
        "name": "CoBorrowerEmail",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's email address.  100 characters.",
        "": "CoBorrowerEmail"
      },
      {
        "name": "CoBorrowerFICO",
        "kind": "optional",
        "type": "string",
        "description": "Coborrower's FICO score.",
        "": "Coborrower's FICO score."
      },
      {
        "name": "MerchantName",
        "kind": "optional",
        "type": "string",
        "description": "Merchant's name.  200 characters.",
        "": "MerchantName"
      },
      {
        "name": "MerchantFee",
        "kind": "optional",
        "type": "number",
        "description": "Dollar amount paid to merchant.",
        "": "Dollar amount paid to merchant."
      },
      {
        "name": "RefundAmount",
        "kind": "optional",
        "type": "string",
        "description": "Refund amount.",
        "": "Refund amount."
      },
      {
        "name": "RefundDate",
        "kind": "optional",
        "type": "string",
        "description": "Refund date.\nThe format must be: yyyy-mm-dd.",
        "": "Refund date.\nThe format must be: yyyy-mm-dd."
      },
      {
        "name": "FinalPaymentDate",
        "kind": "optional",
        "type": "string",
        "description": "Date due for final loan payment.\nThe format must be: yyyy-mm-dd.",
        "": "Date due for final loan payment.\nThe format must be: yyyy-mm-dd."
      },
      {
        "name": "FinalPayment",
        "kind": "optional",
        "type": "number",
        "description": "Dollar amount of final payment.",
        "": "Dollar amount of final payment."
      },
      {
        "name": "FinanceCharge",
        "kind": "optional",
        "type": "number",
        "description": "Finance charge paid by the borrower.",
        "": "Finance charge paid by the borrower."
      },
      {
        "name": "TotalPayments",
        "kind": "optional",
        "type": "number",
        "description": "Total paid by the borrower after all the payments were made.",
        "": "Total paid by the borrower after all the payments were made."
      },
      {
        "name": "PPY",
        "kind": "optional",
        "type": "number",
        "description": "Number of payments per year.",
        "": "Number of payments per year."
      },
      {
        "name": "PaymentFrequency",
        "kind": "optional",
        "type": "integer",
        "description": "Frequency of payments:\n1 - weekly\n2 - semi-monthly\n3 - monthly\n4 - bi-monthly\n5 - other\n6 - bi-weekly",
        "": "PaymentFrequency"
      },
      {
        "name": "StandardEntryTypeCode",
        "kind": "optional",
        "type": "string",
        "description": "PPD - consumer accounts.\nCCD - corporate accounts.\n20 characters.",
        "": "PPD - consumer accounts.\nCCD - corporate accounts.\n20 characters."
      },
      {
        "name": "InterestAccrualMethodDays",
        "kind": "optional",
        "type": "integer",
        "description": "365 (days).",
        "": "365 (days)."
      },
      {
        "name": "SubpoolId",
        "kind": "optional",
        "type": "string",
        "description": "ID of the subpool that the loan belongs to. 100 characters.",
        "": "ID of the subpool that the loan belongs to. 100 characters."
      },
      {
        "name": "Program",
        "kind": "optional",
        "type": "string",
        "description": "MPL defined program that the loan belongs to. 100 characters.",
        "": "Program"
      },
      {
        "name": "Field1",
        "kind": "required",
        "type": "string",
        "description": "Reserved for submitter's IP address\nUp to 5000 characters.\n",
        "": "Reserved for submitter's IP address\nUp to 5000 characters.\n"
      },
      {
        "name": "Field2 ",
        "kind": "required",
        "type": "string",
        "description": "Reserved for JSON. Up to 5000 characters.\n\"{  \n   \"\"OFAC decision\"\":\"\"True|False\"\",  \n   \"\"OFAC decision source\"\":\"\"\"\"  \n}\"\n",
        "": "required"
      },
      {
        "name": "Field3",
        "kind": "required",
        "type": "string",
        "description": "Reserved for . Up to 5000 characters.\nSee standard JSON format below.   ",
        "": "Reserved for . Up to 5000 characters.\nSee standard JSON format below.   "
      },
      {
        "name": "Field4",
        "kind": "required",
        "type": "string",
        "description": "Reserved for loan agreement version.\nUp to 5,000 characters.\n",
        "": "Reserved for loan agreement version.\nUp to 5,000 characters.\n"
      },
      {
        "name": "Field5",
        "kind": "optional",
        "type": "string",
        "description": "Reserved for credit decisioning parameters.\nUp to 5,000 characters.\nRequired for any credit information requested by Cross River.\nSee standard JSON format below. \n",
        "": "Reserved for credit decisioning parameters.\nUp to 5,000 characters.\nRequired for any credit information requested by Cross River.\nSee standard JSON format below. \n"
      },
      {
        "name": "Field6",
        "kind": "optional",
        "type": "string",
        "description": "Required for business information.\nUp to 5,000 characters.\nSee standard JSON format below.\n",
        "": "Required for business information.\nUp to 5,000 characters.\nSee standard JSON format below.\n"
      },
      {
        "name": "Field7",
        "kind": "optional",
        "type": "string",
        "description": "Required for business owner Information.\nCollect information on controlling person and business owners who own 25% or more.\nFor SBA loans the threshold is 20%.\nUp to 5,000 characters.\nSee standard JSON format below.",
        "": "Required for business owner Information.\nCollect information on controlling person and business owners who own 25% or more.\nFor SBA loans the threshold is 20%.\nUp to 5,000 characters.\nSee standard JSON format below."
      },
      {
        "name": "Field8",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Open field for text.\nUp to 5,000 characters."
      },
      {
        "name": "Field9",
        "kind": "optional",
        "type": "string",
        "description": "Reserved for fraud vendor raw response.\nUp to 5,000 characters.",
        "": "Reserved for fraud vendor raw response.\nUp to 5,000 characters."
      },
      {
        "name": "Field10",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Field10"
      },
      {
        "name": "Field11",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Field11"
      },
      {
        "name": "Field12",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Open field for text.\nUp to 5,000 characters."
      },
      {
        "name": "Field13",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Field13"
      },
      {
        "name": "Field14",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Open field for text.\nUp to 5,000 characters."
      },
      {
        "name": "Field15",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Open field for text.\nUp to 5,000 characters."
      },
      {
        "name": "Field16",
        "kind": "optional",
        "type": "string",
        "description": "Reserved for second look investors raw response.\nUp to 5,000 characters.",
        "": "Reserved for second look investors raw response.\nUp to 5,000 characters."
      },
      {
        "name": "Field17",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Open field for text.\nUp to 5,000 characters."
      },
      {
        "name": "Field18",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Open field for text.\nUp to 5,000 characters."
      },
      {
        "name": "Field19",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Open field for text.\nUp to 5,000 characters."
      },
      {
        "name": "Field20",
        "kind": "optional",
        "type": "string",
        "description": "Open field for text.\nUp to 5,000 characters.",
        "": "Open field for text.\nUp to 5,000 characters."
      },
      {
        "name": "Field21",
        "kind": "optional",
        "type": "array",
        "description": "Optional addition of loan information.\nByte array in Base 64. byte [ ]. Up to 8,000 characters.\n",
        "": "Optional addition of loan information.\nByte array in Base 64. byte [ ]. Up to 8,000 characters.\n"
      },
      {
        "name": "Rails",
        "kind": "required",
        "type": "array",
        "description": "List {RailTransaction}.\nFor more details about rails: https://docs.crossriver.com/apis/lending/loan-funding-payment-rails",
        "": "List {RailTransaction}.\nFor more details about rails: https://docs.crossriver.com/apis/lending/loan-funding-payment-rails"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "Status",
      "kind": "optional",
      "type": "string",
      "description": "The status of a loan.  \nFor more details about rails: https://docs.crossriver.com/apis/lending/enums"
    },
    {
      "name": "TimeStamp",
      "kind": "optional",
      "type": "string",
      "description": "Timestamp of the update",
      "children": []
    },
    {
      "name": "Id",
      "kind": "optional",
      "type": "number",
      "description": "Unique identifier for the loan. GUID",
      "children": []
    },
    {
      "name": "MPLId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the MPL.",
      "children": []
    },
    {
      "name": "Date",
      "kind": "optional",
      "type": "string",
      "description": "Date of the transaction",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-loan",
  "legacyHash": "kpARf4czZn_W2EdKLgt-n"
}
```
:::

## Field 3 CIP

```json
"{    
    "CIP Decision": "NonDocumentary, Documentary,Other",  
    "CIP Vendors used": {  
      "CIP KYC vendor": "Socure",  
      "CIP bank account vendor": "Plaid"  
    },  
    "CIP Documents used": {  
      "CIP Document": "Driving license",  
      "CIP Seconday Document": "Utility Bill"  
    },  
    "CIP Verification used": {  
      "OCR": "Mitek",  
      "Fraud": "Experian Fraud",  
      "Phone number": "White pages"  
    }  
  },  
  "CIPCollectionMethod": {  
    "Name": "FromCustomerviaApplication|FromCustomerviaLeadGenerator|FromExternalSource",  
    "Address": "FromCustomerviaApplication|FromCustomerviaLeadGenerator|FromExternalSource",  
    "DOB": "FromCustomerviaApplication|FromCustomerviaLeadGenerator|FromExternalSource",  
    "SSN": "FromCustomerviaApplication|FromCustomerviaLeadGenerator|FromExternalSource",  
    "CIPCollectionMethodExternalSource": "CreditReport - this field is required if the method of collection is from an external source; CreditReport is an example"  
  }, "TaxNumber":"SSN|ITIN"  
}"  
```

## Field 5 Credit Decisioning

```json
{
   "ApplicationId":"Unique applicationId, generated by the partner",
   "RevolvingLineFirstAppearance":"yes/no",
   "RevolvingLineGUID":"ID From Origination/First Appearance",
   "RevolvingLineBalanceAsOfWhenCallingCRB":"",
   "FloridaStampTaxCollectedFromCustomer":"Y/N",
   "FloridaStampTaxAmount":"0.00",
   "FloridaStampTaxRateUsed":"0.0035",
   "DMVFeeAmount":"0.00",
   "DiscountedLoan":"Y|N",
   "Purchase discount":"N%",
   "PurchaseDiscountAmount":"0.00",
   "PremiumFee":"0.00",
   "CreditBureau":"TU|Experian|Equifax|Innovis|Other",
   "CreditPolicyVersion":"v1.0",
   "CreditModelVersion":"v1.0",
   "CreditModelVersion_2ndmodel":"v1.0",
   "CreditModelVersion_3rdmodel":"v1.0",
   "CreditUnderwritingRulesVersion":"v1.0",
   "CreditModelVersion_Score":"100",
   "CreditModelVersion_2ndmodel_Score":"100",
   "CreditModelVersion_3rdmodel_Score":"100",
   "PricingPolicyVersion":"v1.0",
   "BypassRuleChecking":"True|False",
   "CRBIssuingBranch":"NJ|DE"
}
```

## Field 6 Standard Format (Business)

```json
{
    "name": "business name",
    "tin": "EIN/SSN",
    "incDate": "2008-01-01",
    "stateIncorp": "AZ",
    "countryDomicile": "US",
    "phone": "4805477526",
    "email": "business email",
    "address": "business address",
        "city": "business city",
    "state": "business state",
    "zipCode": "business zip",
    "physicalAddress": "the complete physical address of the business if different to the business address. Cannot be PO Box or TBD",
         "payroll": "Average monthly payroll",
    "businessType": "Business Entity Type - Sole proprietor,Partnership, C-Corp, S-Corp, LLC, Independent contractor, Eligible self-employed individual,501(c)(3) nonprofit, 501(c)(19) veterans organization, Tribal business (sec. 31(b)(2)(C) of Small Business Act), Other",
    "businessPurpose": "Business purpose / description",
    "industry": "xxx",
    "naicsCode": "xxx",
    "franchise": "Yes/No",
    "RegisteredTradingNames": "",
    "ProductServicesOffered": "",
    "InsuranceType": "",
    "AuthorisedSignatory": "",
    "AuthorisedSignatoryVerificationMethod": "",
    "BusinessLicenseInformation": "",
    "BusinessWebSiteVerification": "Yes|No",
    "BusinessAnnualTurnOver": "Gross Annual Revenue, cannot be null",
    "BusinessPricingDetails": {
        "pricingTier2": "",
    "pricingTier3": ""
    },
    "BusinessCreditLimit": {
        "ConsumerCreditLimit": "",
        "DailyCreditLimit": "",
        "BusinessApprovalException": "Y|N"
    }
}
```

## Field 7 Standard Format (Business Owners/Principals)

```json
[
    {
        "name": "owner Name",
        "ownershipPer": 24,
        "tin": "SSN|EIN|TIN",
        "address": "owner address",
        "city": "owner city",
        "state": "ownerstate",
        "zipCode": "owner zip",
        "dob": "YYYY-MM-dd",
        "phone": "owner phone",
                "OwnerFico": 700,
        "CIP Decision": "NonDocumentary, Documentary,Other",
        "CIP Vendors used": {
            "CIP KYC vendor": "eg Socure",
            "CIP bank account vendor": "eg Plaid"
        },
        "CIP Documents used": {
            "CIP Document": "eg for a person a Driving license",
            "CIP Secondary Document": "eg for a person Utility Bill"
        },
        "OFAC decision":"True|False",
        "OFAC decision source":"",  
        "CIP Verification used": {
            "OCR": "eg Mitek",
            "Fraud": "eg Experian Fraud",
            "Phone number": "eg White pages",
            "type": "Owner | Control person",
            "citizenship": "US",
            "residencyType": "Permanent Resident Alien | Non-Immigrant Alien | Illegal Alien"
        }
    },
    {}
]
```

Any vendors noted above are provided for illustration only.

:::hint{type="warning"}
**IMPORTANT**
When you add a date field in a request, the format must be: yyyy-mm-dd.
These fields include BorrowerDOB and FICODate and must be in this format: 1970-12-05
:::




[title] Webhook events: onchain payments
[path] Onchain payments/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific  [webhooks](docId\:qF6bTOPBPNcpLPp9SAtWI) which have a specific [event format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents common `crypto`webhook events that are described in detail below.

| Event Name                                                                 | Description                                                  | Related Endpoint                                        |
| -------------------------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------- |
| [Crypto.Payment.Sent](docId\:l2nT0ZP-yk-ZWesb7d-pt)                        | Outbound crypto payment successfully sent/broadcast to chain | [Send stablecoin payment](docId:97ecBPkLpcwxVCxKeo_la)  |
| [Crypto.Payment.Canceled](docId\:l2nT0ZP-yk-ZWesb7d-pt)                    | Outbound payment canceled before blockchain initiation       | [Send stablecoin payment](docId:97ecBPkLpcwxVCxKeo_la)  |
| [Crypto.Payment.Rejected](docId\:l2nT0ZP-yk-ZWesb7d-pt)                    | Outbound payment rejected during validation/compliance       | [Send stablecoin payment](docId:97ecBPkLpcwxVCxKeo_la)  |
| [Crypto.Payment.Received](docId\:l2nT0ZP-yk-ZWesb7d-pt)                    | Inbound crypto payment credited to the specified account     |                                                         |
| [Crypto.Payment.OnchainTransactionDetected](docId\:l2nT0ZP-yk-ZWesb7d-pt)  | Onchain transaction detected for a payment                   | [Send PII](docId\:A9MDJ5F6zIXzYX4IskuCv)                |

## Event examples

### Crypto.Payment.Sent

Triggered when a payment has been successfully broadcast to the blockchain and confirmed as sent. Indicates that funds have left Cross River’s on-chain wallet and the transaction hash is available.

:::CodeblockTabs
Sample event

```curl
{
  "event": {
    "id": "f367af94-3b70-47a7-a83e-b39d012735e2",
    "eventName": "Crypto.Payment.Sent",
    "status": "Pending",
    "partnerId": "7712a77c-60a7-49c5-9f08-b1a1012d253f",
    "createdAt": "2025-11-22T12:54:49.703-05:00",
    "resources": [
      "crypto/v1/payments/9b420f90-b10c-427e-aa3a-b39d01247829"
    ],
    "details": [
      {
        "paymentId": "9b420f90-b10c-427e-aa3a-b39d01247829",
        "productId": "37d97c35-1fcd-49e7-a0cd-b1a1012eb05d",
        "referenceId": "CRP326LT2T2840",
        "accountNumber": "2564791479",
        "amountNative": "100.0",
        "amount": "100000000",
        "currency": "usdc",
        "unit": "Mwei",
        "networkFeeNative": "0.000045059",
        "networkFee": "45059",
        "serviceFeeNative": "0.0",
        "serviceFee": "0",
        "feeCurrency": "eth",
        "feeUnit": "Gwei",
        "coreTransactionId": "fd0f368e-afe4-4a5d-bc9c-b39d01271a99",
        "blockchain": "ethereum",
        "sourceAddress": "0x1E40695142E086a8F8c62545d199f8E81333242B",
        "destinationAddress": "0x0e6f76783822826ED173fEE6265bDbbdfEd4a0F5",
        "transactionHash": "0x6712d9d6074c39a4557c26ccce5d1d7d09a5f9486b41084fb4d439240bfca7c8",
        "completedAt": "11/22/2025 12:54:29 PM",
        "status": "Completed",
        "clientIdentifier": "QUOTE-2025-001",
        "direction": "Outbound",
        "memoPostId": "9b420f90-b10c-427e-aa3a-b39d01247829"
      }
    ]
  }
}

```
:::

### Crypto.Payment.Canceled

Triggered when a previously originated payment is canceled before blockchain submission. Typically occurs due to partner-initiated cancellation or insufficient liquidity before minting.

:::CodeblockTabs
Sample event

```curl
{
  "event": {
    "id": "e6c23b82-5d0f-4163-8176-b39d01285061",
    "eventName": "Crypto.Payment.Canceled",
    "status": "Pending",
    "partnerId": "7712a77c-60a7-49c5-9f08-b1a1012d253f",
    "createdAt": "2025-11-22T12:58:50.773-05:00",
    "resources": [
      "crypto/v1/payments/b57c8712-c93c-45fc-9d31-b39d0128214a"
    ],
    "details": [
      {
        "paymentId": "b57c8712-c93c-45fc-9d31-b39d0128214a",
        "productId": "37d97c35-1fcd-49e7-a0cd-b1a1012eb05d",
        "referenceId": "CRP32665C4QBX6",
        "accountNumber": "2564791479",
        "amountNative": "100.0",
        "amount": "100000000",
        "currency": "usdc",
        "unit": "Mwei",
        "networkFeeNative": null,
        "networkFee": null,
        "serviceFeeNative": null,
        "serviceFee": null,
        "feeCurrency": "eth",
        "feeUnit": "Gwei",
        "coreTransactionId": null,
        "blockchain": "ethereum",
        "sourceAddress": "0x1E40695142E086a8F8c62545d199f8E81333242B",
        "destinationAddress": "0x0e6f76783822826ED173fEE6265bDbbdfEd4a0F5",
        "transactionHash": null,
        "completedAt": null,
        "status": "Canceled",
        "clientIdentifier": "QUOTE-2025-001",
        "direction": "Outbound",
        "memoPostId": null
      }
    ]
  }
}

```
:::

### Crypto.Payment.Rejected

Triggered when a payment is rejected during validation, compliance screening, or blockchain broadcast failure. No funds are debited from the source wallet.

:::CodeblockTabs
Sample event

```curl
{
  "event": {
    "id": "9140c805-ffc7-498c-a3a9-b39d0128b9ea",
    "eventName": "Crypto.Payment.Rejected",
    "status": "Pending",
    "partnerId": "7712a77c-60a7-49c5-9f08-b1a1012d253f",
    "createdAt": "2025-11-22T13:00:20.823-05:00",
    "resources": [
      "crypto/v1/payments/a04f6ff1-078e-4e22-9528-b39d01287e87"
    ],
    "details": [
      {
        "paymentId": "a04f6ff1-078e-4e22-9528-b1a1012eb05d8b",
        "productId": "37d97c35-1fcd-49e7-a0cd-b1a1012eb05d",
        "referenceId": "CRP3266U3I146Q",
        "accountNumber": "2564791479",
        "amountNative": "101.0",
        "amount": "101000000",
        "currency": "usdc",
        "unit": "Mwei",
        "networkFeeNative": null,
        "networkFee": null,
        "serviceFeeNative": null,
        "serviceFee": null,
        "feeCurrency": "eth",
        "feeUnit": "Gwei",
        "coreTransactionId": null,
        "blockchain": "ethereum",
        "sourceAddress": "0x1E40695142E086a8F8c62545d199f8E81333242B",
        "destinationAddress": "0x0e6f76783822826ED173fEE6265bDbbdfEd4a0F5",
        "transactionHash": null,
        "completedAt": null,
        "status": "Rejected",
        "clientIdentifier": "QUOTE-2025-001",
        "direction": "Outbound",
        "memoPostId": null
      }
    ]
  }
}

```
:::

### Crypto.Payment.Received

Triggered when an inbound blockchain transfer to a Cross River wallet is detected and reconciled to an account. Indicates the funds have been credited on-chain and will appear in account balance.

:::CodeblockTabs
Sample event

```curl
{
  "event": {
    "id": "9dff134c-93fe-4b97-b056-b39d012b8053",
    "eventName": "Crypto.Payment.Received",
    "status": "Pending",
    "partnerId": "7712a77c-60a7-49c5-9f08-b1a1012d253f",
    "createdAt": "2025-11-22T13:10:27.057-05:00",
    "resources": [
      "crypto/v1/payments/180cc43f-76fb-4a52-9d9c-b39d012b007d"
    ],
    "details": [
      {
        "paymentId": "180cc43f-76fb-4a52-9d9c-b39d012b007d",
        "productId": "37d97c35-1fcd-49e7-a0cd-b1a1012eb05d",
        "referenceId": "CRP326G7811Y89",
        "accountNumber": "2564791479",
        "amountNative": "17.0",
        "amount": "17000000",
        "currency": "usdc",
        "unit": "Mwei",
        "networkFeeNative": "0.000000062",
        "networkFee": "62",
        "serviceFeeNative": null,
        "serviceFee": null,
        "feeCurrency": "eth",
        "feeUnit": "Gwei",
        "coreTransactionId": "03c03ed3-e737-4486-b4df-b39d012b72b7",
        "blockchain": "ethereum",
        "sourceAddress": "0x0e6f76783822826ED173fEE6265bDbbdfEd4a0F5",
        "destinationAddress": "0x719d2Ce9E9bD2807a1e8e7a8f6370cE845F2485E",
        "transactionHash": "0x76757a8bad37569f70ee53bd74e967a399668ef4f0ebcd977c2b0992fecbfd8b",
        "completedAt": "11/22/2025 1:10:16 PM",
        "status": "Completed",
        "direction": "Inbound"
      }
    ]
  }
}

```
:::

### Crypto.Payment.OnchainTransactionDetected

Triggered when an onchain transaction is detected for a payment. This event notifies the partner that Cross River has received the onchain transaction details and created or updated the related payment record. In the example below, the payment is inbound and remains on hold until PII is provided (if required).

:::CodeblockTabs
Sample event

```curl
{
  "id": "88e943d0-aedb-45bd-b70f-b45701320cbf",
  "eventName": "Crypto.Payment.OnchainTransactionDetected",
  "status": "Pending",
  "partnerId": "aa554e0a-910c-435f-89ba-b06c01305d57",
  "createdAt": "2026-05-27T14:34:17.593-04:00",
  "resources": [
    "crypto/v1/payments/f87ee6d5-7775-46cd-a6de-b4570131ee00"
  ],
  "details": [
    {
      "paymentId": "f87ee6d5-7775-46cd-a6de-b4570131ee00",
      "productId": "ac6686be-005f-4b05-bb4a-b42f013bba12",
      "referenceId": "CRP147BW063MN5",
      "accountNumber": "123989446893",
      "amountNative": "1.0",
      "amount": "1000000",
      "currency": "usdc",
      "unit": "Mwei",
      "networkFeeNative": "0.00008",
      "networkFee": "80000",
      "serviceFeeNative": null,
      "serviceFee": null,
      "feeCurrency": "sol",
      "feeUnit": "Lamport",
      "coreTransactionId": null,
      "blockchain": "solana",
      "sourceAddress": "FVfZayznELJYdghc3pwe3WumFgxgkDh6hWjrEhgMZw84",
      "destinationAddress": "EULmgJikmjL7RVWY77udr16Ji1Zb69bLqJoc6xMGf6rW",
      "transactionHash": "2k38gpiAx9hFeVNQXcQpmovQtYetxQQS3VrR9Z2nwVwJRY9P9F75P6CrhDSb6G1zsyoZzgmEpVGcLjmuAxD8LbYD",
      "completedAt": null,
      "status": "Hold",
      "clientIdentifier": null,
      "direction": "Inbound",
      "memoPostId": null
    }
  ]
}

```
:::


[title] Get payment details
[path] Payments/Checks/APIs/

## API reference

Returns details about a specific check payment, by payment ID.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments/{id}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/checks/v1/payments/{id}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "flw3I6YAlYAch_R3p6UGW",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments/b150ebbf-72bd-478a-ae2e-b48c008909ce' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "CYgeJvWZTSkXfwN-zcMWw",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  'url': 'https://sandbox.crbcos.com/checks/v1/payments/b150ebbf-72bd-478a-ae2e-b48c008909ce',\n  'headers': {\n  }\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "xaYu_cGuXJWdlnlKFafTe",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/checks/v1/payments/b150ebbf-72bd-478a-ae2e-b48c008909ce\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "xf_QW7WMg_SLYQn8g9GUD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments/b150ebbf-72bd-478a-ae2e-b48c008909ce\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "09kqCFa4VeWcg6MviC2d2",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments/b150ebbf-72bd-478a-ae2e-b48c008909ce\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "flw3I6YAlYAch_R3p6UGW"
  },
  "results": {
    "languages": [
      {
        "id": "uv43Jrbeg_9MgyANe5ty4",
        "language": "200",
        "code": "{\n    \"id\": \"b150ebbf-72bd-478a-ae2e-b48c008909ce\",\n    \"accountNumber\": \"2846220461\",\n    \"referenceId\": \"C2002C520504\",\n    \"paymentType\": \"Forward\",\n    \"checkType\": \"Unknown\",\n    \"direction\": \"Inbound\",\n    \"status\": \"Processing\",\n    \"source\": \"Api\",\n    \"posting\": \"Failed\",\n    \"postingCode\": \"NSF\",\n    \"fedBatchId\": \"95af5b77-ff7c-4a13-b8c3-b48c008909ce\",\n    \"fedBatchSequence\": 0,\n    \"coreTransactionId\": \"a1940dd4-ec14-47b2-8c4e-b48c008909ce\",\n    \"originalPaymentId\": \"b150ebbf-72bd-478a-ae2e-b48c008909ce\",\n    \"customerId\": \"05106466-9144-4f3f-8fb1-b345005d18ba\",\n    \"payerRoutingNumber\": \"021214891\",\n    \"payerAccountNumber\": \"2846220461\",\n    \"payeeName\": \"string\",\n    \"checkNumber\": \"1032357\",\n    \"bofdRoutingNumber\": \"061000146\",\n    \"sequenceNumber\": \"4536586199\",\n    \"amount\": 44000,\n    \"currency\": \"usd\",\n    \"recognizedAmount\": 0,\n    \"iqaPassed\": false,\n    \"hasFrontImage\": true,\n    \"hasBackImage\": true,\n    \"isRedeposit\": false,\n    \"policy\": \"Standard\",\n    \"schedule\": [],\n    \"createdAt\": \"2026-07-19T04:18:56.473-04:00\",\n    \"processedAt\": \"2026-07-19T04:18:56.69-04:00\",\n    \"wasReturned\": false,\n    \"purpose\": \"TESTING\",\n    \"depositBusinessDate\": \"260720\",\n    \"decisionRequired\": false,\n    \"wasDecisioned\": false,\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2026-07-19T04:18:56.9721824-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "uv43Jrbeg_9MgyANe5ty4"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "optional",
        "type": "string",
        "description": "Payment ID of the specific payment. Find this ID in the response to a deposit check call, or in the Check.Payment.Received webhook.",
        "": "id"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Check payment ID. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account the check is posting to",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
      "children": []
    },
    {
      "name": "checkType",
      "kind": "optional",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
      "children": []
    },
    {
      "name": "direction ",
      "kind": "optional",
      "type": "string",
      "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank. See Deposit.)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank. See Withdrawal.)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified",
      "children": []
    },
    {
      "name": "positivePayResult",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled",
      "children": []
    },
    {
      "name": "positivePayMatchId",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the distribution that the check was included in",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "payerRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)",
      "children": []
    },
    {
      "name": "payerAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s account number (printed on the check)",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the bank where the check was first deposited",
      "children": []
    },
    {
      "name": "sequenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "The check sequence number",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)",
      "children": []
    },
    {
      "name": "micr",
      "kind": "optional",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number",
      "children": []
    },
    {
      "name": "recognizedAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The check amount recognized from the check image via OCR",
      "children": []
    },
    {
      "name": "iqaPassed",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false",
      "children": []
    },
    {
      "name": "returnCode",
      "kind": "optional",
      "type": "string",
      "description": "The return code indicates why the check was returned. There are several return codes.",
      "children": []
    },
    {
      "name": "hasFrontImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "hasBackImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "isRedeposit",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false.",
      "children": []
    },
    {
      "name": "policy ",
      "kind": "optional",
      "type": "string",
      "description": "The current availability policy type assigned to the deposit, defining the schedule for making funds available:\n- Standard\n- NewAccount\n- LargeDeposits\n- RedepositedCheck\n- RepeatedOverdrafts\n- OnUs\n- RCNoticeOfUnpaidReturn\n- RCSuspectFraud\n- RCFundingAccountOverdrafts\n- RCUnverifiedEndorsement\n- RCInconsistentInformation\n- RCErasuresOrAlterations\n- RCOutOfDateRoutingNumber\n- RCPostDatedOrStaleDate\n- RCPayingBankNotPaidIndication\n- RCLostOrDamaged\n- FiveDay\n- EmergencyConditions",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose of the deposited check",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "depositBusinessDate",
      "kind": "optional",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
      "children": []
    },
    {
      "name": "lockboxVendorId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1paymentsid",
  "legacyHash": "PaXT0GhXBW5TjvkJ0YtSB"
}
```
:::


[title] Image analysis
[path] Payments/Checks/APIs/

## API reference

Returns an analysis of the check's image quality assurance (IQA) status based on the [Fed's metrics](https://www.frbservices.org/binaries/content/assets/crsocms/financial-services/check/setup/iqa-settings.pdf).

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments/{id}/analysis",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/checks/v1/payments/{id}/analysis",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "chvhXNl1aaln_KJZnM9M7",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/analysis'",
        "customLabel": ""
      },
      {
        "id": "jqY_E4wYPBjJJpSCTr9nl",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/analysis',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "fePMbNYPf_6fDq-HvPJ0z",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"GET\", \"/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/analysis\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "4CYxxP4subprnK3WcRRsX",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/analysis\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "v6tOIvD7w1viOeBTWy5OK",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/analysis\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "chvhXNl1aaln_KJZnM9M7"
  },
  "results": {
    "languages": [
      {
        "id": "trpG5eLjyDe9nII7DO7QJ",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"analysis\": {\n        \"data\": {\n            \"accepted\": true,\n            \"processingStatus\": \"Passed\",\n            \"requestStatus\": \"Succeeded\",\n            \"processingId\": \"7014d18e-dce3-478d-9078-c35e3800815e\",\n            \"iqaMessage\": \"IQAGOOD\",\n            \"transactionStatusCode\": 0,\n            \"transactionId\": 1667429,\n            \"groupName\": \"Cross River Group\",\n            \"organizationName\": \"Cross River\",\n            \"submissionDate\": \"2025-06-30T04:42:26.942507-04:00\",\n            \"flexibleFields\": {},\n            \"readFields\": [\n                {\n                    \"name\": \"MICR\",\n                    \"value\": \"d314074269dc28293886c1237\",\n                    \"confidence\": 1000\n                },\n                {\n                    \"name\": \"CheckRoutingNumber\",\n                    \"value\": \"314074269\"\n                },\n                {\n                    \"name\": \"CheckAccountNumber\",\n                    \"value\": \"28293886\"\n                },\n                {\n                    \"name\": \"CheckNumber\",\n                    \"value\": \"1237\"\n                },\n                {\n                    \"name\": \"RecognizedAmount\",\n                    \"value\": \"1.00\",\n                    \"confidence\": 199\n                }\n            ],\n            \"testResults\": [\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"MICR Confidence\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 500,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Amounts Match\",\n                    \"value\": \"ManualReview\",\n                    \"threshold\": 500,\n                    \"confidence\": 199\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Front Focus\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 350,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Back Focus\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 100,\n                    \"confidence\": 595\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Shadow on Image\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 851,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Shadow on Image\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 851,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Contrast of Image\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 401,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Contrast of Image\",\n                    \"value\": \"ManualReview\",\n                    \"threshold\": 401,\n                    \"confidence\": 340\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Cut Corners\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 751,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Cut Corners\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 751,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Image Too Small\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 501,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Image Too Small\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 501,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Darkness\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 401,\n                    \"confidence\": 863\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Darkness\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 401,\n                    \"confidence\": 839\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"View Angle\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 701,\n                    \"confidence\": 970\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"View Angle\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 701,\n                    \"confidence\": 967\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Rotation Angle\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 701,\n                    \"confidence\": 991\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Rotation Angle\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 701,\n                    \"confidence\": 998\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Folded Or Torn Corner\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Folded Or Torn Corner\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Folded Or Torn Edge\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Folded Or Torn Edge\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Excessive Skew\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Excessive Skew\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Piggyback Document\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Piggyback Document\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Too Light\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Too Light\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Too Dark\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Too Dark\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Undersize Image\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Undersize Image\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Oversize Image\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Oversize Image\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Excessive Spot Noise\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Excessive Spot Noise\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Endorsement Presence\",\n                    \"value\": \"ManualReview\",\n                    \"threshold\": 750,\n                    \"confidence\": 2\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Aspect Ratio Validation\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 900,\n                    \"confidence\": 998\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"MICR Intrusion Detection\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 100,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Check Length\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Check Height\",\n                    \"value\": \"Unknown\",\n                    \"threshold\": 0,\n                    \"confidence\": 0\n                },\n                {\n                    \"checkSide\": \"Front\",\n                    \"name\": \"Bitonal Image Size\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 500,\n                    \"confidence\": 1000\n                },\n                {\n                    \"checkSide\": \"Back\",\n                    \"name\": \"Bitonal Image Size\",\n                    \"value\": \"Passed\",\n                    \"threshold\": 500,\n                    \"confidence\": 1000\n                }\n            ]\n        }\n    },\n    \"id\": \"18619219-ccbb-45a6-a068-b30c008f7b47\",\n    \"accountNumber\": \"2640511503\",\n    \"referenceId\": \"C181DC3259D7\",\n    \"paymentType\": \"Forward\",\n    \"checkType\": \"Standard\",\n    \"direction\": \"Outbound\",\n    \"status\": \"Canceled\",\n    \"source\": \"Api\",\n    \"posting\": \"Canceled\",\n    \"postingCode\": \"OK\",\n    \"coreTransactionId\": \"31746634-977b-461f-9899-b30c008f7b47\",\n    \"memoPostId\": \"51b24aa9-1cdc-4d82-9ddb-b30c008f7b47\",\n    \"originalPaymentId\": \"18619219-ccbb-45a6-a068-b30c008f7b47\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"payerRoutingNumber\": \"314074269\",\n    \"payerAccountNumber\": \"28293886\",\n    \"payeeName\": \"\",\n    \"checkNumber\": \"1237\",\n    \"bofdRoutingNumber\": \"021214891\",\n    \"sequenceNumber\": \"2203615981\",\n    \"amount\": 10000,\n    \"currency\": \"usd\",\n    \"micr\": \"d314074269dc28293886c1237\",\n    \"recognizedAmount\": 100,\n    \"iqaPassed\": true,\n    \"hasFrontImage\": true,\n    \"hasBackImage\": true,\n    \"isRedeposit\": false,\n    \"policy\": \"Standard\",\n    \"schedule\": [\n        0,\n        10000\n    ],\n    \"createdAt\": \"2025-06-30T04:42:24.02-04:00\",\n    \"canceledAt\": \"2025-06-30T05:02:14.083-04:00\",\n    \"wasReturned\": false,\n    \"purpose\": \"SKIP_IQA\",\n    \"depositBusinessDate\": \"250701\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-06-30T05:02:14.1158174-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "trpG5eLjyDe9nII7DO7QJ"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "Check payment ID, in GUID format",
        "children": []
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "analysis",
      "kind": "optional",
      "type": "Object",
      "description": "Specific data analysis results",
      "children": [
        {
          "name": "accepted",
          "kind": "optional",
          "type": "Boolean",
          "description": "If true, the check was accepted . Otherwise, false."
        },
        {
          "name": "processingStatus",
          "kind": "optional",
          "type": "string",
          "description": "The status of the image quality analysis. This correlates with the iqaMessage field."
        },
        {
          "name": "requestStatus",
          "kind": "optional",
          "type": "string",
          "description": "The status of the request to the image processing service (submission of check data). Either Succeeded or Failed."
        },
        {
          "name": "processingId",
          "kind": "optional",
          "type": "string",
          "description": "Unique identifier for the processing record"
        },
        {
          "name": "iqaMessage",
          "kind": "optional",
          "type": "string",
          "description": "If the deposit failed because of the image quality analysis, provides the reason. For example, \"image too small\" or \"MICR confidence.\" If the the IQA passes, shows the value IQAGOOD."
        },
        {
          "name": "transactionStatusCode",
          "kind": "optional",
          "type": "Integer",
          "description": "Image processor code referring to the IQA status. If IQA is successful the value will be 0."
        },
        {
          "name": "transactionId",
          "kind": "optional",
          "type": "Integer",
          "description": "Image processor mobile deposit transaction ID"
        },
        {
          "name": "groupName",
          "kind": "optional",
          "type": "string",
          "description": "Image processor group name the user/transaction is part of"
        },
        {
          "name": "organizationName",
          "kind": "optional",
          "type": "string",
          "description": "Image processor organization name the user/transaction is part of"
        },
        {
          "name": "submissionDate",
          "kind": "optional",
          "type": "string",
          "description": "Image processor transaction submission date (yyyy-mm-ddThh:mm:ss[.mmm])"
        },
        {
          "name": "flexibleFields",
          "kind": "optional",
          "type": "string",
          "description": "Internal field relating to image quality analysis"
        },
        {
          "name": "readFields",
          "kind": "optional",
          "type": "Object",
          "description": "The fields on the check read by the analysis and their values.\n\nThere can be multiple fields.",
          "children": [
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of the field being read, for example, CheckNumber"
            },
            {
              "name": "value",
              "kind": "optional",
              "type": "string",
              "description": "he characters and/or numbers that appear in that field"
            },
            {
              "name": "confidence",
              "kind": "optional",
              "type": "string",
              "description": "The percentage of confidence that the value was read correctly (does not always appear)"
            }
          ]
        },
        {
          "name": "testResults",
          "kind": "optional",
          "type": "Object",
          "description": "Results of analysis of various fields and parameters on each side of the check.\n\nThe response displays multiple results.",
          "children": [
            {
              "name": "checkSide",
              "kind": "optional",
              "type": "string",
              "description": "Side of the check being analyzed"
            },
            {
              "name": "name",
              "kind": "optional",
              "type": "string",
              "description": "Name of the field or parameter being analyzed, for example, Cut Corners"
            },
            {
              "name": "value",
              "kind": "optional",
              "type": "string",
              "description": "Result of the analysis, for example, Passed or ManualReview"
            },
            {
              "name": "threshold",
              "kind": "optional",
              "type": "Integer",
              "description": "The actual score of the tested field"
            },
            {
              "name": "confidence",
              "kind": "optional",
              "type": "string",
              "description": "The percentage of confidence that the value was read correctly"
            }
          ]
        }
      ]
    },
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Check payment ID. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account receiving the check",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
      "children": []
    },
    {
      "name": "checkType",
      "kind": "optional",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
      "children": []
    },
    {
      "name": "direction ",
      "kind": "optional",
      "type": "string",
      "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank. See Deposit.)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank. See Withdrawal.)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified",
      "children": []
    },
    {
      "name": "positivePayResult",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled",
      "children": []
    },
    {
      "name": "positivePayMatchId",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the distribution that the check was included in",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "payerRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)",
      "children": []
    },
    {
      "name": "payerAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s account number (printed on the check)",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the bank where the check was first deposited",
      "children": []
    },
    {
      "name": "sequenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "The check sequence number",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)",
      "children": []
    },
    {
      "name": "micr",
      "kind": "optional",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number",
      "children": []
    },
    {
      "name": "recognizedAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The check amount recognized from the check image via OCR",
      "children": []
    },
    {
      "name": "iqaPassed",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false",
      "children": []
    },
    {
      "name": "returnCode",
      "kind": "optional",
      "type": "string",
      "description": "The return code indicates why the check was returned. There are several return codes.",
      "children": []
    },
    {
      "name": "hasFrontImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "hasBackImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "isRedeposit",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false.",
      "children": []
    },
    {
      "name": "policy ",
      "kind": "optional",
      "type": "string",
      "description": "The current availability policy type assigned to the deposit, defining the schedule for making funds available:\n- Standard\n- NewAccount\n- LargeDeposits\n- RedepositedCheck\n- RepeatedOverdrafts\n- OnUs\n- RCNoticeOfUnpaidReturn\n- RCSuspectFraud\n- RCFundingAccountOverdrafts\n- RCUnverifiedEndorsement\n- RCInconsistentInformation\n- RCErasuresOrAlterations\n- RCOutOfDateRoutingNumber\n- RCPostDatedOrStaleDate\n- RCPayingBankNotPaidIndication\n- RCLostOrDamaged\n- FiveDay\n- EmergencyConditions",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose of the deposited check",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "depositBusinessDate",
      "kind": "optional",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
      "children": []
    },
    {
      "name": "lockboxVendorId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1paymentsidanalysis",
  "legacyHash": "MJDN7YWYmGJLEPTgRi1Qc"
}
```
:::

#


[title] Request and response codes: Checks
[path] Payments/Checks/

## Check Types

The `checkType` attribute in the response to `POST /Checks/v1/payments` describes the type of check the call is dealing with.

| Type           | Description                                                                                                                   |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| Standard       | A check drawn from a business or personal account at another bank                                                             |
| OnUs           | A check drawn from a CR account                                                                                               |
| Treasury       | A check drawn on the US Treasury and issued by the US Department of the Treasury                                              |
| MoneyOrder     | A pre-paid traceable certificate used to transfer funds in amounts of up to 1000 USD                                          |
| FedReserveBank | A check drawn on the Federal Reserve Bank                                                                                     |
| FedHomeLoan    | A check issued by a member Federal Home Loan bank                                                                             |
| StateLocalGovt | A check issued by a state or local government                                                                                 |
| Certified      | A check guaranteed by the issuing FI to be valid and that the account it is drawn on has sufficient funds to cover the amount |
| Unknown        | Check type cannot be determined                                                                                               |

## Direction

The `direction` attribute in the response to `POST /Checks/v1/payments` describes the direction the check takes between Cross River and the Fed.

| Direction | Description                                                                                                               |
| --------- | ------------------------------------------------------------------------------------------------------------------------- |
| Inbound   | A check drawn from a COS account, deposited at another bank. The check is sent by the Fed to Cross River.                 |
| Outbound  | A check deposited into a COS account, drawn from an account at another bank. The check is sent to the Fed by Cross River. |

## Payment Status

The status of the payment is returned in the response to several check calls in the `status `field.

| Status     | Description                                                                                                                                                                            |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Created    | We have received the payment, but have not started processing it yet. This status should only appear briefly under normal circumstances.                                               |
| Pending    | The payment is waiting to be batched and sent to the Federal Reserve                                                                                                                   |
| Hold       | Payment is being held at the moment and reviewed by our Operations Team                                                                                                                |
| Batched    | The payment has been batched and a final review is being done before we send it out in a file to the Federal Reserve                                                                   |
| Processing | For inbound payments, we are attempting to post the payment to the receiving account. For outbound payments, the payment has been sent to the Federal Reserve, but has not posted yet. |
| Completed  | The payment has been posted and accepted by the Federal Reserve (in the case of outbound payments). This is a final status.                                                            |
| Rejected   | Your check has been rejected for compliance reasons. Applies to Outbound payments only. This is a final status.                                                                        |
| Canceled   | An outbound payment has been canceled at the request of the partner. A payment may only be canceled while either pending or on hold. This is a final status.                           |

## Positive Pay Status

If [Positive Pay](docId:8MxnUqiHsMPE6vHWQex5u) is enabled, the positive pay status of the check:

| Status     | Description                                                                        |
| ---------- | ---------------------------------------------------------------------------------- |
| Authorized | The check has been authorized for positive pay                                     |
| Paid       | An authorized check has been presented by the Federal Reserve and paid by the Bank |
| Revoked    | The check's positive pay authorization has been revoked                            |

## Payment Types

The check `paymentType` field, found in responses to checks calls, indicates whether the check has been presented for deposit or has been returned for some reason. The payment type combines with the direction to explicitly explain what is happening.

Payment types include:

| Type    | Description                                                                   |
| ------- | ----------------------------------------------------------------------------- |
| Forward | A forward item is a check presented for deposit, to be sent to the payer bank |
| Return  | A previous forward item that the payer bank returned                          |

## Availability Policy/Reg CC Policy Types

The policy type supplied in checks responses in the `policy` field, tells you how within how many days funds from a check deposit will be available in the customer's account.

| Standard                      | $275 or less of the aggregate amount deposited daily to be available next business day.<br />Remainder amount available on the 2nd business day after the deposit date                                                                                                                  |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| NewAccount                    | $5,525.00 or less of the aggregate amount deposited daily to be available 2nd business day<br />Excess of $5,525 available on the 7th business day after the deposit date                                                                                                               |
| LargeDeposits                 | $275 or less of the aggregate amount deposited daily to be available next business day<br />$5,300 or less of the aggregate amount deposited daily to be available on the 2nd business day<br />Remainder of the deposit to be available on the 7th business day after the deposit date |
| RedepositedCheck              | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RepeatedOverdrafts            | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| OnUs                          | Total amount of the deposit to be available on the 2nd business day after the deposit date                                                                                                                                                                                              |
| RCNoticeOfUnpaidReturn        | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCSuspectFraud                | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCFundingAccountOverdrafts    | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCUnverifiedEndorsement       | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCInconsistentInformation     | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCErasuresOrAlterations       | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCOutOfDateRoutingNumber      | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCPostDatedOrStaleDate        | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCPayingBankNotPaidIndication | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| RCLostOrDamaged               | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |
| EmergencyConditions           | Total amount of the deposit to be available on the 7th business day after the deposit date                                                                                                                                                                                              |

## Rejection Reasons

There are many reasons why a check payment might be rejected. These values appear in the `rejectionReason` field of checks responses.

| Reason                    | Description                                                                |
| ------------------------- | -------------------------------------------------------------------------- |
| ImageAnalysisFailure      | The software was not able to read the check image                          |
| PostingException          | The deposit is unable to post (for example, because of NSF or restriction) |
| AmountMismatch            | The written and numeric check amount numbers do not match                  |
| MaxItemAmountExceeded     | The limit of number of checks deposited has been reached                   |
| MaxDepositAmountExceeded  | The limit of dollar volume for check deposits has been reached             |
| MaxItemsPerDayExceeded    | The limit of amount of checks deposited has been reached for the day       |
| Duplicate                 | The check has already been deposited                                       |
| PayerRoutingNumberInvalid | The routing number on the check is invalid                                 |
| PayerAccountNumberInvalid | The account number on the check is invalid                                 |
| CheckNumberInvalid        | The check number on the check is invalid                                   |
| NotSpecified              |                                                                            |

## Return Codes

A returned check response contains many details, including a `returnCode` that tells you why the check was returned.

| Code | Description                      |
| ---- | -------------------------------- |
| A    | Not Sufficient Funds             |
| B    | Uncollected Funds Hold           |
| C    | Stop Payment                     |
| D    | Closed Account                   |
| E    | Unable to Locate Account         |
| F    | Frozen/Blocked Account           |
| G    | Stale Dated                      |
| H    | Post Dated                       |
| I    | Endorsement Missing              |
| J    | Endorsement Irregular            |
| K    | Signature(s) Missing             |
| L    | Signature(s) Irregular           |
| M    | Non-Cash Item (Non-Negotiable)   |
| N    | Altered/Fictitious Item          |
| P    | Item Exceeds Dollar Limit        |
| Q    | Not Authorized                   |
| R    | Branch/Account Sold (Wrong Bank) |
| S    | Refer to Maker                   |
| T    | Stop Payment Suspect             |
| W    | Cannot Determine Amount          |
| X    | Refer to Image                   |

## postageCode enum values

| Code                     | Description                              |
| ------------------------ | ---------------------------------------- |
| UspsFirstClass           | USPS First Class Mail (standard)         |
| UspsPriority             | USPS Priority Mail                       |
| UspsPriorityConfirmation | USPS Priority with Delivery Confirmation |
| UspsPrioritySignature    | USPS Priority with Signature Required    |
| FedExExpress2Day         | FedEx 2-Day Express                      |
| FedExExpressOvernight    | FedEx Overnight Express                  |
| UspsOvernight            | USPS Overnight (code 7 skipped)          |
| UspsCertifiedMail        | USPS Certified Mail                      |
| FedExPriorityOvernight   | FedEx Priority Overnight                 |

## printedCheckStatus lifecycle

| Status    | Value | Description                                 |
| --------- | ----- | ------------------------------------------- |
| Requested | 0     | Initial state - check printing requested    |
| Posting   | 1     | Funds are being posted/reserved             |
| Posted    | 2     | Funds have been posted/debited from account |
| Submitted | 3     | Check order submitted to printing vendor    |
| Confirmed | 4     | Printing vendor confirmed the order         |
| Mailed    | 5     | Check has been physically mailed            |
| Received  | 6     | Delivery confirmed/check received by payee  |
| Failed    | 7     | Processing failed at some stage             |
| Returned  | 8     | Check was returned (undeliverable)          |
| Canceled  | 9     | Check payment was canceled                  |


[title] Purchase accounts and balances
[path] Lending/Purchasing a loan/

## Get purchase accounts and balances

:::BlockQuote
**POST** /selling/api/loans/purchase/accounts-balances
:::

Get the purchase accounts and their balances for loans matching the given purchase parameters. Returns all accounts that would be used, useful when purchases span multiple accounts.

### Request body

:::BlockQuote
\{
&#x20; "date": "2026-08-05",
&#x20; "loanType": 1,
&#x20; "issuingBank": "CRB",
&#x20; "mplId": "ABC",
&#x20; "investorId": "Investor Name"
}
:::

| Field         | Type    | Required | Description                                            |
| ------------- | ------- | -------- | ------------------------------------------------------ |
| `date`        | String  | Yes      | Purchase date in YYYY-MM-DD format. Must be a fed day. |
| `loanType`    | Integer | Yes      | Loan type: 1 = HFS, 2 = LTHFS                          |
| `issuingBank` | String  | Yes      | Issuing bank identifier                                |
| `mplId`       | String  | Yes      | MPL identifier                                         |
| `investorId`  | String  | No       | Investor identifier (optional)                         |

### Response

**200 OK** - Returns an array of account objects with balances

:::BlockQuote
\[
&#x20; \{
&#x20;   "accountNumber": "1234567890",
&#x20;   "balance": 2500000.00
&#x20; },
&#x20; \{
&#x20;   "accountNumber": "0987654321",
&#x20;   "balance": 1750000.00
&#x20; }
]
:::

### Example request

:::BlockQuote
**POST** /selling/api/loans/purchase/accounts-balances
Content-Type: application/json
:::

:::BlockQuote
\{
&#x20; "date": "2026-08-05",
&#x20; "loanType": 1,
&#x20; "issuingBank": "CRB",
&#x20; "mplId": "ABC"
}
:::

### Use cases

- Multi-account monitoring: View all accounts involved in a purchase
- Balance distribution: See how funds are spread across accounts
- Pre-purchase verification: Confirm total available funds across all accounts


[title] Lending
[path] /

:::CtaButton{label="Lending concepts" docId="_wM-MYSb5fOcETpU-miNT" openInNewTab="true"}

:::

:::hint{type="info"}
- [Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
- [Register](docId\:jXGfRbtNHOshrZJYHYKTo) for hooks.
:::

## Loan APIs

The Lending platform includes a robust set of API calls to allow you to create, update, and manage your loans. The platform consists of a set of interconnected micro services that communicates internally using messages. The platform is designed with high fidelity, high  performance and eventual consistency in mind.&#x20;

- **Oversight** UI for policies and rules
- **preApproval** UI and API for Applications
- **Arix-Origination** API for issuing loans
- **Manual Review** UI for working the exception queue detected by **MPLLifeCycle**
- **Arix-funding** API for making payments&#x20;
- **Selling** UI and API for purchasing loans
- **Contracts** UI for viewing configuration&#x20;
- **Hooks** UI and API for listening to events

**IMPORTANT**
You must have the following IP addresses allowlisted:

:::hint{type="warning"}
Sandbox - 66.206.202.39 , 66.206.202.12

Production -66.206.202.62 , 66.206.202.15
:::

## Lending status page

Sign up for maintenance updates and see the current status of the Arix system at [https://crossriverarix.statuspage.io](https://crossriverarix.statuspage.io)

### Where to start

Reach out to your RM for your sandbox API Client Credentials and the Lending Postman collection to get you started.

## Lending web application

The Cross River Lending UI provides a visual interface for managing your lending operations. The UI allows for self-service and offers a no-code alternative for viewing loans, taking actions, setting up hook registrations, purchasing loans, and more.

![](https://api.archbee.com/api/optimize/4hvUOg5mU1sCngl0n0Has/m7JyD88mtLH5iaYDOztmM_image.png "Homepage of the Lending UI")

| Environment | URL                                    |
| ----------- | -------------------------------------- |
| Sandbox     | https\://lendingappsandbox.crbcos.com/ |
| Production  | https\://lendingapp.crbcos.com/        |

### Access & Prerequisites

- **VPN:** You must connect through an allow-listed VPN to access the Lending UI.
- **User Creation & Permissions:** User accounts and permissions are provisioned through [Org management portal](docId\:C90JfVUQ2MwiRVdsAwxgr) by your **Organization Admin**.
- **Setup Assistance:** Contact lending.support (at) crossriver, to ensure your organization's setup is complete, and all access requirements are in place.

## API reference documentation

Click each of the links for API reference documentation. These calls create loans and update loan information.

- [Application decisioning](docId\:VwjhFeFwgjKJ9lggqLVW9)  POST /Applications/\{partner\_schema\_id}
- [Create and update a loan](docId\:v8cArTCqMmQrYCIYHUf7f) POST /Loan
- [Add loan documents](docId\:uRkNIHuM7qYLQdCEE7tU-) POST /Loan/\{Id}/Attachments
- [Request new payment rails](docId\:GMP-Bavby6sAgCbQlLsJM)  PUT /Loan/\{Id}/FundingInfo
- [Get loan details by ID](docId:6ZfJGj39xq4RWRWzmXJCD) GET /LoanDetail/\{Id}
- [Cancel a loan](docId\:qaSYJf2BFuTsvqo0pD_Ae) PUT /Loan/\{\{loanId}}/Cancel


[title] Initiate check return
[path] Payments/Checks/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Check.Payment.Received](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Core.Transaction.Completed](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Check.Payment.Sent](docId\:cWUBvaS0BDIfokyxu5LhQ)

## API reference

Initiates return of an inbound forward check. An inbound check payment can only be returned after it successfully posts to the Cross River account it was drawn on.

Return of an *inbound forward* payment is known as an *outbound return* payment, so the response includes a payment ID.

:::hint{type="info"}
A Cross River  is associated with an *inbound* payment only after it has successfully posted to the receiver’s Cross River account. Therefore, you will not see inbound payments that fail to post for reasons such as an invalid routing number or an active account restriction.
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments/{id}/returns",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/checks/v1/payments/{id}/returns",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "flw3I6YAlYAch_R3p6UGW",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments/d147462c-64c4-480a-b80a-b449006b04ff/returns' \\\n--data '{\n  \"returnCode\": \"I\"\n}'",
        "customLabel": ""
      },
      {
        "id": "CYgeJvWZTSkXfwN-zcMWw",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments/d147462c-64c4-480a-b80a-b449006b04ff/returns',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"returnCode\\\": \\\"I\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "xaYu_cGuXJWdlnlKFafTe",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"returnCode\\\": \\\"I\\\"\\r\\n}\"\nheaders = {}\nconn.request(\"POST\", \"/checks/v1/payments/d147462c-64c4-480a-b80a-b449006b04ff/returns\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "xf_QW7WMg_SLYQn8g9GUD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments/d147462c-64c4-480a-b80a-b449006b04ff/returns\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"returnCode\\\": \\\"I\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "09kqCFa4VeWcg6MviC2d2",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments/d147462c-64c4-480a-b80a-b449006b04ff/returns\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"returnCode\": \"I\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "flw3I6YAlYAch_R3p6UGW"
  },
  "results": {
    "languages": [
      {
        "id": "uv43Jrbeg_9MgyANe5ty4",
        "language": "200",
        "code": "{\n    \"id\": \"f5a8f301-6508-4345-a570-b449006bb824\",\n    \"accountNumber\": \"2846220461\",\n    \"referenceId\": \"C133QA018017\",\n    \"paymentType\": \"Return\",\n    \"checkType\": \"Unknown\",\n    \"direction\": \"Outbound\",\n    \"status\": \"Created\",\n    \"source\": \"Api\",\n    \"posting\": \"Pending\",\n    \"postingCode\": \"OK\",\n    \"coreTransactionId\": \"70259003-10c1-4ae4-9cec-b449006bb824\",\n    \"memoPostId\": \"e12d64be-9052-4145-b2a0-b449006bb824\",\n    \"originalPaymentId\": \"d147462c-64c4-480a-b80a-b449006b04ff\",\n    \"customerId\": \"05106466-9144-4f3f-8fb1-b345005d18ba\",\n    \"payerRoutingNumber\": \"021214891\",\n    \"payerAccountNumber\": \"2846220461\",\n    \"payeeName\": \"string\",\n    \"checkNumber\": \"2846220461\",\n    \"bofdRoutingNumber\": \"021214891\",\n    \"sequenceNumber\": \"5599498374\",\n    \"amount\": 5556,\n    \"currency\": \"usd\",\n    \"recognizedAmount\": 0,\n    \"iqaPassed\": false,\n    \"returnCode\": \"I\",\n    \"hasFrontImage\": true,\n    \"hasBackImage\": true,\n    \"isRedeposit\": false,\n    \"policy\": \"Standard\",\n    \"schedule\": [],\n    \"createdAt\": \"2026-05-13T02:32:11.6396438-04:00\",\n    \"wasReturned\": false,\n    \"decisionRequired\": false,\n    \"wasDecisioned\": false,\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2026-05-13T02:32:11.6396701-04:00\"\n}",
        "customLabel": ""
      },
      {
        "id": "yqjDZqIq-LRz8rLaDYtPX",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2012,\n            \"message\": \"Payment must be status completed or rejected to be returned\"\n        }\n    ]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "uv43Jrbeg_9MgyANe5ty4"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "ID of the inbound check transaction, in GUID format. Find this ID in the Check.Payment.Received webhook paymentId field, raised after the inbound payment posts to the account.",
        "": "ID of the inbound check transaction, in GUID format. Find this ID in the Check.Payment.Received webhook paymentId field, raised after the inbound payment posts to the account."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "returnCode",
        "kind": "required",
        "type": "string",
        "description": "The 1-character code indicating the reason for the check return. See the checks request and response codes page for a complete list of values.",
        "": "The 1-character code indicating the reason for the check return. See the checks request and response codes page for a complete list of values."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Check payment ID. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account receiving the check",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
      "children": []
    },
    {
      "name": "checkType",
      "kind": "optional",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
      "children": []
    },
    {
      "name": "direction ",
      "kind": "optional",
      "type": "string",
      "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank. See Deposit.)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank. See Withdrawal.)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified",
      "children": []
    },
    {
      "name": "positivePayResult",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled",
      "children": []
    },
    {
      "name": "positivePayMatchId",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the distribution that the check was included in",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "payerRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)",
      "children": []
    },
    {
      "name": "payerAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s account number (printed on the check)",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the bank where the check was first deposited",
      "children": []
    },
    {
      "name": "sequenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "The check sequence number",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)",
      "children": []
    },
    {
      "name": "micr",
      "kind": "optional",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number",
      "children": []
    },
    {
      "name": "recognizedAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The check amount recognized from the check image via OCR",
      "children": []
    },
    {
      "name": "iqaPassed",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false",
      "children": []
    },
    {
      "name": "returnCode",
      "kind": "optional",
      "type": "string",
      "description": "The 1-character code indicating the reason for the check return. See the checks request and response codes page for a complete list of values.",
      "children": []
    },
    {
      "name": "hasFrontImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "hasBackImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "isRedeposit",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false.",
      "children": []
    },
    {
      "name": "policy ",
      "kind": "optional",
      "type": "string",
      "description": "The current availability policy type assigned to the deposit, defining the schedule for making funds available:\n- Standard\n- NewAccount\n- LargeDeposits\n- RedepositedCheck\n- RepeatedOverdrafts\n- OnUs\n- RCNoticeOfUnpaidReturn\n- RCSuspectFraud\n- RCFundingAccountOverdrafts\n- RCUnverifiedEndorsement\n- RCInconsistentInformation\n- RCErasuresOrAlterations\n- RCOutOfDateRoutingNumber\n- RCPostDatedOrStaleDate\n- RCPayingBankNotPaidIndication\n- RCLostOrDamaged\n- FiveDay\n- EmergencyConditions",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose of the deposited check",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "depositBusinessDate",
      "kind": "optional",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
      "children": []
    },
    {
      "name": "lockboxVendorId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1paymentsidreturns",
  "legacyHash": "bQN43kp8d-2n-ZpPt-wuo"
}
```
:::


[title] 
[path] Onchain payments/


[title] Onchain payments
[path] /

## Onchain payment APIs

Onchain payments enable partners to send and receive supported stablecoins on supported blockchains through Cross River’s regulated banking infrastructure. Cross River facilitates onchain payments using account-bound receiving addresses, external beneficiary management, required compliance checks, and event webhooks for payment status updates.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

## Requirements for stablecoin transfers

To use Cross River’s onchain payments API, your account must be configured for both sending and receiving USDC.

### Outbound (send)

To originate a transfer, you must have:

- The account number funding the transfer
- The beneficiary address (externalAddressId or inline externalAddress block)
- An amount in either USD or blockchain base units (amount). Provide one or the other, not both.
- The currency (for example, USDC) and blockchain (for example, Ethereum or Solana)
- Proper account and product configuration with outbound crypto permissions

### Inbound (receive)

To receive a transfer, you must have:

- A registered account wallet address created through `POST /v1/accounts/{accountNumber}/account-addresses`&#x20;
- The currency and blockchain matching the sender’s transfer&#x20;
- Active inbound payment permissions&#x20;
- A valid [webhook registration](docId\:BN5XtgkJogBe-CtwomCbS)  to receive onchain payment events&#x20;
- Required sender PII submitted through `POST /v1/payments/{id}/pii`, unless sender PII is reused from a previous transfer&#x20;

For inbound payments, Cross River detects the onchain transfer and issues a `Crypto.Payment.OnchainPaymentDetected` webhook once the transaction is identified and matched to the account and asset configuration. After required PII is submitted and the payment is completed, Cross River issues a `Crypto.Payment.Received` webhook.

### Monetary amounts

- `amount` - Either in fiat currency (for example, USD) or blockchain base units for the token (for example, smallest USDC unit)

## API calls

This table provides an overview of the onchain APIs described on this site.

| Action                                                       | API Call                                                                   | Description                                                                        |
| ------------------------------------------------------------ | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [Create account wallet](docId\:hoEGjxYsVLnf17Bebvxym)        | `POST /v1/accounts/{accountNumber}/account-addresses`                      | Generate a receiving wallet address for an account                                 |
| [Create external beneficiary](docId\:EtIVqZeNyJqD-Tres4Pwi)  | `POST /v1/accounts/{accountNumber}/external-addresses`                     | Register a payout destination wallet                                               |
| [Send stablecoin payment](docId:97ecBPkLpcwxVCxKeo_la)       | `POST /v1/payments`                                                        | Initiate an outbound transfer                                                      |
| [Get account wallet](docId:28f-_LH3atAq88tJCqNTw)            | `GET /v1/accounts/{accountNumber}/account-addresses`                       | Retrieve existing account wallet addresses                                         |
| [Get external beneficiary](docId\:Xzmm6d5K5_abP62vZs7ne)     | `GET /v1/accounts/{accountNumber}/external-addresses`                      | Retrieve registered beneficiary wallets                                            |
| [Send PII](docId\:A9MDJ5F6zIXzYX4IskuCv)                     | `POST /v1/payments/{id}/pii`                                               | Adds originator/sender personally identifiable information to an incoming payment  |
| [Delete wallet](docId\:F7rpN0GO__a-8fWjDSbDA)                | `DELETE /v1/accounts/{accountNumber}/account-addresses/{accountAddressId}` | Deletes or disables a blockchain receiving address associated with an account      |

## &#x20;Related topics&#x20;

- [Webhook events: onchain payments](docId\:l2nT0ZP-yk-ZWesb7d-pt)&#x20;
- [Error codes: onchain payments](docId\:YqQzjx9miO-HHxlYlV9AG)&#x20;






[title] Error codes: checks
[path] Payments/Checks/

## Overview

This page provides comprehensive error code information for the Checks API, including error codes, descriptions, and resolution guidance based on actual codebase analysis.

## Error response format

```json
{
    "errors": [
        {
            "code": 2301,
            "message": "Deposits not allowed for account type"
        }
    ]
}
```

***

## Error codes by category

### Payment processing errors (2000-2034)

Errors related to check payment processing, status management, and validation.

| Code     | Description                                                        | Resolution                                                                                    |
| -------- | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
| **2000** | General exception                                                  | Review error details. Contact support if the issue persists.                                  |
| **2001** | Invalid payment status                                             | Check current payment status. Verify the requested operation is valid for the current status. |
| **2002** | Invalid posting status                                             | Payment posting status does not allow the requested operation. Verify posting status.         |
| **2003** | Payment cannot be canceled                                         | Payment status does not allow cancellation. Verify payment is in cancellable status.          |
| **2004** | Account not found                                                  | Verify the account number is correct. Check if account exists in the system.                  |
| **2005** | Payment must be outbound                                           | Operation requires payment to be outbound. Verify payment direction.                          |
| **2006** | Payment must be inbound                                            | Operation requires payment to be inbound. Verify payment direction.                           |
| **2007** | Payment must be an inbound origination                             | Operation requires an inbound origination payment type                                        |
| **2008** | Payment must be status completed or rejected to be corrected       | Payment correction requires completed or rejected status. Verify payment status.              |
| **2009** | Invalid change code                                                | Change code is not valid. Provide a valid change code.                                        |
| **2010** | Payment must be an inbound return                                  | Operation requires an inbound return payment type                                             |
| **2011** | Payment must be an origination                                     | Operation requires an origination payment type                                                |
| **2012** | Payment must be status completed or rejected to be returned        | Payment return requires completed or rejected status. Verify payment status.                  |
| **2013** | Payment must be status completed or rejected to be dishonored      | Payment dishonor requires completed or rejected status. Verify payment status.                |
| **2014** | Invalid return code                                                | Return code is not valid; provide a valid check return code                                   |
| **2015** | Invalid dishonored return code                                     | Dishonored return code is not valid. Provide a valid dishonored return code.                  |
| **2016** | Original payment not found                                         | Verify original payment ID is correct. Check if original payment exists.                      |
| **2017** | Cannot link to same payment ID                                     | Linked payment ID must be different from current payment ID                                   |
| **2018** | Payment type must be return or notification of change              | Operation requires payment to be a return or NOC type                                         |
| **2019** | Original payment must be completed                                 | Linked original payment must be in completed status                                           |
| **2020** | Payment must be on hold to request a rescan                        | Payment must be in hold status before requesting a rescan                                     |
| **2021** | No scan lists are configured for account                           | Configure scan lists for the account before requesting scans                                  |
| **2022** | Scan already pending                                               | A scan is already in progress. Wait for current scan to complete.                             |
| **2023** | Previous payment not found                                         | Verify previous payment ID is correct. Check if previous payment exists.                      |
| **2024** | Previous payment must be a completed outbound origination          | Previous payment must be an outbound origination in completed status                          |
| **2025** | Receiver account not found                                         | Verify receiver account number is correct. Check if account exists.                           |
| **2026** | Active holds found                                                 | Payment has active holds. Resolve or release holds before processing.                         |
| **2027** | Posting account cannot be changed due to current payment status    | Payment status does not allow posting account changes                                         |
| **2028** | Posting status must be pending or failed to change posting account | Posting account can only be changed when posting is pending or failed                         |
| **2029** | Posting status must be failed to attempt a retry                   | Only failed postings can be retried. Verify posting status.                                   |
| **2030** | Originator profile address missing or invalid                      | Provide complete originator address information. Verify address format.                       |
| **2031** | Payment image data not available                                   | Check image data is not available. Verify image upload was successful.                        |
| **2032** | Invalid front image format                                         | Front check image format is invalid. Provide image in base64-encoded format.                  |
| **2033** | Invalid back image format                                          | Back check image format is invalid. Provide image in base64-encoded format.                   |
| **2034** | Payment amount cannot be changed                                   | Payment amount is locked and cannot be modified                                               |

### Batch errors (2200-2202)

Errors related to check batch processing and authorization.

| Code     | Description                          | Resolution                                                                   |
| -------- | ------------------------------------ | ---------------------------------------------------------------------------- |
| **2200** | Batch not authorizing                | Batch must be in authorizing status for this operation. Verify batch status. |
| **2201** | Batch requires one or more payments  | Batch must contain at least one payment. Add payments to batch.              |
| **2202** | No filters were found on the request | Include filter parameters in the request. Specify search criteria.           |

### Configuration errors (2300-2331)

Errors related to account, product, and global configuration management.

| Code     | Description                                          | Resolution                                                                           |
| -------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------ |
| **2300** | No active configuration found for account            | Account must have an active configuration. Create or activate account configuration. |
| **2301** | Deposits not allowed for account type                | Account type does not support check deposits. Verify account configuration.          |
| **2306** | Max payment amount exceeded                          | Payment amount exceeds maximum limit. Reduce amount or increase limit.               |
| **2309** | Origination not allowed from a restricted account    | Account has restrictions that prevent check origination                              |
| **2310** | Account config change not approved                   | Account configuration change must be approved before applying                        |
| **2311** | Account config change not pending                    | Operation requires account change to be in pending status                            |
| **2312** | Account config change approval requires dual control | Have a second authorized user approve the account configuration change               |
| **2313** | Account configuration not found or is invalid        | Verify account configuration ID is correct and configuration exists                  |
| **2314** | Global profile not found or is invalid               | Verify global profile ID is correct and profile exists                               |
| **2315** | Global profile change not approved                   | Global configuration change must be approved before applying                         |
| **2316** | Global profile change not pending                    | Operation requires global profile change to be in pending status                     |
| **2317** | Product change not pending                           | Operation requires product change to be in pending status                            |
| **2318** | Product change not approved                          | Product configuration change must be approved before applying                        |
| **2319** | Global config change approval requires dual control  | Have a second authorized user approve the global configuration change                |
| **2320** | Global config required                               | Include global configuration object in the request                                   |
| **2321** | Global config accounts must be unique                | Use different account numbers for each global configuration field                    |
| **2323** | Inbound Suspense Account not found                   | Configure a valid inbound suspense account                                           |
| **2324** | Outbound Suspense Account not found                  | Configure a valid outbound suspense account                                          |
| **2325** | Return Account not found                             | Configure a valid return account                                                     |
| **2326** | Operator Account not found                           | Configure a valid operator account                                                   |
| **2327** | Unposted Account not found                           | Configure a valid unposted account                                                   |
| **2328** | Product config change approval requires dual control | Have a second authorized user approve the product configuration change               |
| **2329** | Account config required                              | Include account configuration object in the request                                  |
| **2330** | Product config required                              | Include product configuration object in the request                                  |
| **2331** | Printing Account not found                           | Configure a valid printing account                                                   |

### Distribution errors (2400-2418)

Errors related to check distribution lifecycle management.

| Code     | Description                                                            | Resolution                                                                        |
| -------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| **2400** | Distribution must be generating                                        | Operation requires distribution to be in generating status                        |
| **2401** | Distribution already canceled                                          | Distribution has already been canceled; cannot cancel again                       |
| **2402** | Distribution must be pending                                           | Operation requires distribution to be in pending status                           |
| **2403** | Distribution must be on hold                                           | Operation requires distribution to be in hold status                              |
| **2404** | Distribution must be verified                                          | Operation requires distribution to be in verified status                          |
| **2405** | Distribution must be released                                          | Operation requires distribution to be in released status                          |
| **2406** | Distribution must not be released                                      | Operation requires distribution to not be released yet                            |
| **2407** | Distribution must be transmitted                                       | Operation requires distribution to be in transmitted status                       |
| **2408** | Distribution must be acknowledged                                      | Operation requires distribution to be in acknowledged status                      |
| **2409** | Distribution must be processing                                        | Operation requires distribution to be in processing status                        |
| **2410** | Distribution must have been previously transmitted                     | Distribution must have been transmitted at least once                             |
| **2411** | Distribution release requires dual control                             | Have a second authorized user approve the distribution release                    |
| **2412** | A distribution is currently generating                                 | Another distribution is currently generating. Wait for completion.                |
| **2413** | No payments to distribute                                              | Distribution must contain at least one payment                                    |
| **2414** | Distribution is currently processing and can no longer be acknowledged | Distribution is processing. Acknowledgment window has closed.                     |
| **2415** | Distribution is currently complete and can no longer be acknowledged   | Distribution is complete. Acknowledgment is no longer available.                  |
| **2416** | Cannot verify distribution with exceeded limits                        | Distribution exceeds configured limits. Review and adjust limits or distribution. |
| **2417** | No filters were found on the request                                   | Include filter parameters in the request. Specify search criteria.                |
| **2418** | Only one distribution per minute is allowed                            | Wait at least one minute before creating another distribution                     |

### Submission errors (2500-2501)

Errors related to check submission processing.

| Code     | Description                                                | Resolution                                                               |
| -------- | ---------------------------------------------------------- | ------------------------------------------------------------------------ |
| **2500** | Submission import count cannot exceed total payment count  | Import count is invalid. Ensure it does not exceed total payment count.  |
| **2501** | Submission process count cannot exceed total payment count | Process count is invalid. Ensure it does not exceed total payment count. |

### Hold errors (2600-2603)

Errors related to check payment hold management.

| Code     | Description                          | Resolution                                                            |
| -------- | ------------------------------------ | --------------------------------------------------------------------- |
| **2600** | Hold is not active                   | Hold must be in active status for this operation. Verify hold status. |
| **2601** | Hold payment not found               | Verify hold payment ID is correct. Check if hold payment exists.      |
| **2602** | No filters were found on the request | Include filter parameters in the request. Specify search criteria.    |
| **2603** | This action requires dual control    | Have a second authorized user approve the hold operation              |

### Security errors (3000-3002)

Security-related errors including permissions and access control.

| Code     | Description                                               | Resolution                                                                                         |
| -------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| **3000** | General exception                                         | Review error details. Contact support if the issue persists.                                       |
| **3001** | Flags not allowed                                         | User does not have permission to set flags. Contact administrator.                                 |
| **3002** | Clearing hold exceeds user permissions for payment amount | Payment amount exceeds user's hold clearance dollar limit. Request approval from higher authority. |

### Configuration access errors (3200)

Configuration-specific access control errors.

| Code     | Description   | Resolution                                                                                       |
| -------- | ------------- | ------------------------------------------------------------------------------------------------ |
| **3200** | Access denied | User lacks permission to access configuration. Verify user has appropriate role and permissions. |


[title] Get extended check data
[path] Payments/Checks/APIs/

## API reference

Returns a specific payment by its unique identifier

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/payments/{id}/extended",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/checks/v1/payments/{id}/extended",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments/3d70fc63-672e-4c3b-9e66-b48700b5db14/extended' \\\n--data ''"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments/3d70fc63-672e-4c3b-9e66-b48700b5db14/extended',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/checks/v1/payments/3d70fc63-672e-4c3b-9e66-b48700b5db14/extended\"\n\npayload = \"\"\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments/3d70fc63-672e-4c3b-9e66-b48700b5db14/extended\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments/3d70fc63-672e-4c3b-9e66-b48700b5db14/extended\"\n  method := \"GET\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "curl-example"
  },
  "results": {
    "languages": [
      {
        "id": "200",
        "language": "200",
        "code": "{\n    \"extended\": {\n        \"cashLetter\": {\n            \"recordType\": \"10\",\n            \"collectionTypeIndicator\": \"01\",\n            \"destinationRoutingNumber\": \"061000146\",\n            \"eceInstitutionRoutingNumber\": \"021214891\",\n            \"businessDate\": \"20260714\",\n            \"creationDate\": \"20260714\",\n            \"creationTime\": \"0702\",\n            \"recordTypeIndicator\": \"I\",\n            \"documentationTypeIndicator\": \"G\",\n            \"cashLetterId\": \"03743251\",\n            \"originatorContactName\": \"\",\n            \"originatorContactPhone\": \"\",\n            \"fedWorkType\": \"C\"\n        },\n        \"bundle\": {\n            \"recordType\": \"20\",\n            \"collectionTypeIndicator\": \"01\",\n            \"destinationRoutingNumber\": \"061000146\",\n            \"eceRoutingNumber\": \"021214891\",\n            \"businessDate\": \"20260714\",\n            \"creationDate\": \"20260714\",\n            \"bundleId\": \"69236621\",\n            \"sequenceNumber\": \"1\",\n            \"cycleNumber\": \"0\",\n            \"returnLocationRoutingNumber\": \"021214891\"\n        },\n        \"item\": {\n            \"checkDetail\": {\n                \"recordType\": \"25\",\n                \"auxiliaryOnUs\": \"1237\",\n                \"externalProcessingCode\": \"\",\n                \"payorRoutingNumber\": \"31407426\",\n                \"payorCheckDigit\": \"9\",\n                \"onUs\": \"/28293886\",\n                \"amount\": \"10000\",\n                \"sequenceNumber\": \"3918624417\",\n                \"documentationTypeIndicator\": \"G\",\n                \"electronicReturnIndicator\": \"\",\n                \"micrValidIndicator\": \" \",\n                \"bofdIndicator\": \"Y\",\n                \"addendumCount\": \"01\",\n                \"correctionIndicator\": \"\",\n                \"archiveTypeIndicator\": \"\"\n            },\n            \"checkAddendumA\": [\n                {\n                    \"recordType\": \"26\",\n                    \"recordNumber\": \"1\",\n                    \"bofdRoutingNumber\": \"021214891\",\n                    \"bofdBusinessDate\": \"20260714\",\n                    \"bofdSequenceNumber\": \"3918624417\",\n                    \"bofdDepositAccountNumber\": \"2203250853\",\n                    \"bofdDepositBranch\": \"01\",\n                    \"payeeName\": \"\",\n                    \"truncationIndicator\": \"Y\",\n                    \"bofdConversionIndicator\": \"\",\n                    \"bofdCorrectionIndicator\": \"\",\n                    \"userField\": \"\",\n                    \"reserved\": \"\"\n                }\n            ],\n            \"checkAddendumB\": [],\n            \"checkAddendumC\": [],\n            \"returnAddendumA\": [],\n            \"returnAddendumD\": [],\n            \"images\": [\n                {\n                    \"detail\": {\n                        \"recordType\": \"50\",\n                        \"imageIndicator\": \"1\",\n                        \"creatorRoutingNumber\": \"021214891\",\n                        \"creatorDate\": \"20260714\",\n                        \"imageViewFormatIndicator\": \"00\",\n                        \"imageViewCompression\": \"00\",\n                        \"imageViewDataSize\": \"5652\",\n                        \"viewSideIndicator\": \"0\",\n                        \"viewDescriptor\": \"00\",\n                        \"digitalSignatureIndicator\": \"0\",\n                        \"digitalSignatureMethod\": \"\",\n                        \"securityKeySize\": \"\",\n                        \"startOfProtectedData\": \"\",\n                        \"lengthOfProtectedData\": \"\",\n                        \"imageRecreateIndicator\": \"\",\n                        \"userField\": \"\",\n                        \"reserved\": \"\"\n                    },\n                    \"data\": {\n                        \"recordType\": \"52\",\n                        \"institutionRoutingNumber\": \"021214891\",\n                        \"bundleBusinessDate\": \"20260714\",\n                        \"cycleNumber\": \"0\",\n                        \"eceSequenceNumber\": \"3918624417\",\n                        \"securityOriginatorName\": \"\",\n                        \"securityAuthenticatorName\": \"\",\n                        \"securityKeyName\": \"\",\n                        \"clippingOrigin\": \"0\",\n                        \"clippingCoordinateH1\": \"\",\n                        \"clippingCoordinateH2\": \"\",\n                        \"clippingCoordinateV1\": \"\",\n                        \"clippingCoordinateV2\": \"\",\n                        \"lengthOfReferenceKey\": \"19\",\n                        \"imageReferenceKey\": \"2026071439186244170\",\n                        \"lengthOfSignature\": \"0000\",\n                        \"digitalSignature\": \"\",\n                        \"lengthOfImageData\": \"5652\",\n                        \"imageData\": \"payment_3366874c-b887-4532-aec7-b48c006d4d1f_0.tif\"\n                    },\n                    \"analysis\": {\n                        \"recordType\": \"54\",\n                        \"globalImageQuality\": \"0\",\n                        \"globalImageUsability\": \"0\",\n                        \"imagingBankSpecficTest\": \"0\",\n                        \"partialImage\": \"0\",\n                        \"excessiveImageSkew\": \"0\",\n                        \"piggybackImage\": \"0\",\n                        \"tooLightOrTooDark\": \"0\",\n                        \"streaksAndBands\": \"0\",\n                        \"belowMinimumImageSize\": \"0\",\n                        \"exceedsMaximumImageSize\": \"0\",\n                        \"reserved1\": \"\",\n                        \"reserved2\": \"\",\n                        \"reserved3\": \"\",\n                        \"reserved4\": \"\",\n                        \"reserved5\": \"\",\n                        \"reserved6\": \"\",\n                        \"reserved7\": \"\",\n                        \"reserved8\": \"\",\n                        \"reserved9\": \"\",\n                        \"reserved10\": \"\",\n                        \"reserved11\": \"\",\n                        \"reserved12\": \"\",\n                        \"reserved13\": \"\",\n                        \"imageEnabledPod\": \"0\",\n                        \"sourceDocumentBad\": \"0\",\n                        \"dateUsability\": \"0\",\n                        \"payeeUsability\": \"0\",\n                        \"convenienceAmountUsability\": \"0\",\n                        \"wordsAmountUsability\": \"0\",\n                        \"signatureUsability\": \"0\",\n                        \"payorNameUsability\": \"0\",\n                        \"micrLineUsability\": \"0\",\n                        \"memoLineUsability\": \"0\",\n                        \"payorBankNameUsability\": \"0\",\n                        \"payeeEndorsementUsability\": \"0\",\n                        \"bofdEndorsementUsability\": \"0\",\n                        \"transitEndorsementUsability\": \"0\",\n                        \"reserved14\": \"\",\n                        \"reserved15\": \"\",\n                        \"reserved16\": \"\",\n                        \"reserved17\": \"\",\n                        \"reserved18\": \"\",\n                        \"reserved19\": \"\",\n                        \"userField\": \"00000000000000000000\",\n                        \"reserved20\": \"\"\n                    },\n                    \"recordCount\": 3\n                },\n                {\n                    \"detail\": {\n                        \"recordType\": \"50\",\n                        \"imageIndicator\": \"1\",\n                        \"creatorRoutingNumber\": \"021214891\",\n                        \"creatorDate\": \"20260714\",\n                        \"imageViewFormatIndicator\": \"00\",\n                        \"imageViewCompression\": \"00\",\n                        \"imageViewDataSize\": \"3132\",\n                        \"viewSideIndicator\": \"1\",\n                        \"viewDescriptor\": \"00\",\n                        \"digitalSignatureIndicator\": \"0\",\n                        \"digitalSignatureMethod\": \"\",\n                        \"securityKeySize\": \"\",\n                        \"startOfProtectedData\": \"\",\n                        \"lengthOfProtectedData\": \"\",\n                        \"imageRecreateIndicator\": \"\",\n                        \"userField\": \"\",\n                        \"reserved\": \"\"\n                    },\n                    \"data\": {\n                        \"recordType\": \"52\",\n                        \"institutionRoutingNumber\": \"021214891\",\n                        \"bundleBusinessDate\": \"20260714\",\n                        \"cycleNumber\": \"0\",\n                        \"eceSequenceNumber\": \"3918624417\",\n                        \"securityOriginatorName\": \"\",\n                        \"securityAuthenticatorName\": \"\",\n                        \"securityKeyName\": \"\",\n                        \"clippingOrigin\": \"0\",\n                        \"clippingCoordinateH1\": \"\",\n                        \"clippingCoordinateH2\": \"\",\n                        \"clippingCoordinateV1\": \"\",\n                        \"clippingCoordinateV2\": \"\",\n                        \"lengthOfReferenceKey\": \"19\",\n                        \"imageReferenceKey\": \"2026071439186244171\",\n                        \"lengthOfSignature\": \"0000\",\n                        \"digitalSignature\": \"\",\n                        \"lengthOfImageData\": \"3132\",\n                        \"imageData\": \"payment_3366874c-b887-4532-aec7-b48c006d4d1f_1.tif\"\n                    },\n                    \"analysis\": {\n                        \"recordType\": \"54\",\n                        \"globalImageQuality\": \"0\",\n                        \"globalImageUsability\": \"0\",\n                        \"imagingBankSpecficTest\": \"0\",\n                        \"partialImage\": \"0\",\n                        \"excessiveImageSkew\": \"0\",\n                        \"piggybackImage\": \"0\",\n                        \"tooLightOrTooDark\": \"0\",\n                        \"streaksAndBands\": \"0\",\n                        \"belowMinimumImageSize\": \"0\",\n                        \"exceedsMaximumImageSize\": \"0\",\n                        \"reserved1\": \"\",\n                        \"reserved2\": \"\",\n                        \"reserved3\": \"\",\n                        \"reserved4\": \"\",\n                        \"reserved5\": \"\",\n                        \"reserved6\": \"\",\n                        \"reserved7\": \"\",\n                        \"reserved8\": \"\",\n                        \"reserved9\": \"\",\n                        \"reserved10\": \"\",\n                        \"reserved11\": \"\",\n                        \"reserved12\": \"\",\n                        \"reserved13\": \"\",\n                        \"imageEnabledPod\": \"0\",\n                        \"sourceDocumentBad\": \"0\",\n                        \"dateUsability\": \"0\",\n                        \"payeeUsability\": \"0\",\n                        \"convenienceAmountUsability\": \"0\",\n                        \"wordsAmountUsability\": \"0\",\n                        \"signatureUsability\": \"0\",\n                        \"payorNameUsability\": \"0\",\n                        \"micrLineUsability\": \"0\",\n                        \"memoLineUsability\": \"0\",\n                        \"payorBankNameUsability\": \"0\",\n                        \"payeeEndorsementUsability\": \"0\",\n                        \"bofdEndorsementUsability\": \"0\",\n                        \"transitEndorsementUsability\": \"0\",\n                        \"reserved14\": \"\",\n                        \"reserved15\": \"\",\n                        \"reserved16\": \"\",\n                        \"reserved17\": \"\",\n                        \"reserved18\": \"\",\n                        \"reserved19\": \"\",\n                        \"userField\": \"00000000000000000000\",\n                        \"reserved20\": \"\"\n                    },\n                    \"recordCount\": 3\n                }\n            ],\n            \"recordCount\": 8\n        }\n    },\n    \"id\": \"3d70fc63-672e-4c3b-9e66-b48700b5db14\",\n    \"accountNumber\": \"2203250853\",\n    \"referenceId\": \"C195BV23Y5FM\",\n    \"paymentType\": \"Forward\",\n    \"checkType\": \"Standard\",\n    \"direction\": \"Outbound\",\n    \"status\": \"Completed\",\n    \"source\": \"Api\",\n    \"posting\": \"Posted\",\n    \"postingCode\": \"OK\",\n    \"fedBatchId\": \"b27a0427-1434-4372-ae16-b488015f31cc\",\n    \"fedBatchSequence\": 1,\n    \"coreTransactionId\": \"4c8d9f31-4072-466a-b64a-b48700b5db14\",\n    \"memoPostId\": \"05a58583-6a53-449c-b685-b48700b5db14\",\n    \"originalPaymentId\": \"3d70fc63-672e-4c3b-9e66-b48700b5db14\",\n    \"customerId\": \"861261af-1251-49e8-966f-b2ff00d627bd\",\n    \"payerRoutingNumber\": \"314074269\",\n    \"payerAccountNumber\": \"28293886\",\n    \"payeeName\": \"\",\n    \"checkNumber\": \"1237\",\n    \"bofdRoutingNumber\": \"021214891\",\n    \"sequenceNumber\": \"3918624417\",\n    \"amount\": 10000,\n    \"currency\": \"usd\",\n    \"micr\": \"d314074269dc28293886c1237\",\n    \"recognizedAmount\": 100,\n    \"iqaPassed\": true,\n    \"hasFrontImage\": true,\n    \"hasBackImage\": true,\n    \"isRedeposit\": false,\n    \"policy\": \"Standard\",\n    \"schedule\": [\n        0,\n        10000\n    ],\n    \"createdAt\": \"2026-07-14T07:02:06.997-04:00\",\n    \"processedAt\": \"2026-07-15T17:18:53.033-04:00\",\n    \"completedAt\": \"2026-07-15T17:18:53.033-04:00\",\n    \"postedAt\": \"2026-07-15T17:18:53.25-04:00\",\n    \"wasReturned\": true,\n    \"purpose\": \"SKIP_IQA\",\n    \"depositBusinessDate\": \"260715\",\n    \"decisionRequired\": false,\n    \"wasDecisioned\": false,\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2026-07-19T02:37:57.2846515-04:00\"\n}"
      },
      {
        "id": "400",
        "language": "400",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 2001,\\n    \\\"message\\\": \\\"Validation error\\\"\\n  }]\\n}"
      },
      {
        "id": "401",
        "language": "401",
        "code": "{\\n  \\\"errors\\\": [{\\n    \\\"code\\\": 3001,\\n    \\\"message\\\": \\\"Unauthorized\\\"\\n  }]\\n}"
      }
    ],
    "selectedLanguageId": "200"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "type": "string",
        "kind": "required",
        "description": "Payment ID of the specific payment. Find this ID in the response to a deposit check call, or in the Check.Payment.Received webhook.",
        "": "Payment ID of the specific payment. Find this ID in the response to a deposit check call, or in the Check.Payment.Received webhook."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": []
  },
  "response": [
    {
      "name": "id",
      "kind": "returned",
      "type": "string",
      "description": "Check payment ID. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "returned",
      "type": "string",
      "description": "Number of the account the check is posting to"
    },
    {
      "name": "referenceId",
      "kind": "returned",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute."
    },
    {
      "name": "paymentType",
      "kind": "returned",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)"
    },
    {
      "name": "checkType",
      "kind": "returned",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown"
    },
    {
      "name": "direction",
      "kind": "returned",
      "type": "string",
      "description": "Payment direction:\n- Inbound\n- Outbound"
    },
    {
      "name": "status",
      "kind": "returned",
      "type": "string",
      "description": "Status of the positive pay record:\n\n- Authorized\n- Paid\n- Revoked"
    },
    {
      "name": "source",
      "kind": "returned",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox"
    },
    {
      "name": "posting",
      "kind": "returned",
      "type": "string",
      "description": "Posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing"
    },
    {
      "name": "rejectionReason",
      "kind": "returned",
      "type": "string",
      "description": "Rejected because:\n- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified"
    },
    {
      "name": "positivePayResult",
      "kind": "returned",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled"
    },
    {
      "name": "positivePayMatchId",
      "kind": "returned",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment"
    },
    {
      "name": "postingCode",
      "kind": "returned",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection."
    },
    {
      "name": "clientBatchId",
      "kind": "returned",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor"
    },
    {
      "name": "clientBatchSequence",
      "kind": "returned",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor"
    },
    {
      "name": "fedBatchId",
      "kind": "returned",
      "type": "string",
      "description": "ID of the distribution that the check was included in"
    },
    {
      "name": "fedBatchSequence",
      "kind": "returned",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution"
    },
    {
      "name": "coreTransactionId",
      "kind": "returned",
      "type": "string",
      "description": "Unique Cross River identifier for the core transaction. This ID is in GUID format."
    },
    {
      "name": "memoPostId",
      "kind": "returned",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format."
    },
    {
      "name": "originalPaymentId",
      "kind": "returned",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited"
    },
    {
      "name": "customerId",
      "kind": "returned",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\nThe ID is in GUID format."
    },
    {
      "name": "payerRoutingNumber",
      "kind": "returned",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)"
    },
    {
      "name": "payerAccountNumber",
      "kind": "returned",
      "type": "string",
      "description": "The payer’s account number (printed on the check)"
    },
    {
      "name": "payeeName",
      "kind": "returned",
      "type": "string",
      "description": "Name of the payee from the check, up to 15 characters (X9.37 Field 8)"
    },
    {
      "name": "checkNumber",
      "kind": "returned",
      "type": "string",
      "description": "The serial number that appears on the check.\n20 characters maximum"
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "returned",
      "type": "string",
      "description": "Nine-digit routing and transit number (TTTTAAAAC format) of the Bank of First Deposit (X9.37 Field 3)"
    },
    {
      "name": "sequenceNumber",
      "kind": "returned",
      "type": "string",
      "description": "Sequential number of this bundle within the cash letter, typically denoting relative position (X9.37 Field 8)"
    },
    {
      "name": "amount",
      "kind": "returned",
      "type": "integer",
      "description": "The amount to be transferred, in cents. For example, 10001 = $100.01."
    },
    {
      "name": "currency",
      "kind": "returned",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)"
    },
    {
      "name": "micr",
      "kind": "returned",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number"
    },
    {
      "name": "recognizedAmount",
      "kind": "returned",
      "type": "integer",
      "description": "The check amount recognized from the check image via OCR"
    },
    {
      "name": "iqaPassed",
      "kind": "returned",
      "type": "boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false"
    },
    {
      "name": "returnCode",
      "kind": "returned",
      "type": "string",
      "description": "The return code indicates why the check was returned. There are several return codes."
    },
    {
      "name": "hasFrontImage",
      "kind": "returned",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false."
    },
    {
      "name": "hasBackImage",
      "kind": "returned",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false."
    },
    {
      "name": "isRedeposit",
      "kind": "returned",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false."
    },
    {
      "name": "policy",
      "kind": "returned",
      "type": "string",
      "description": "Policy"
    },
    {
      "name": "schedule",
      "kind": "returned",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed."
    },
    {
      "name": "createdAt",
      "kind": "returned",
      "type": "string",
      "description": "The date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "canceledAt",
      "kind": "returned",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "rejectedAt",
      "kind": "returned",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "processedAt",
      "kind": "returned",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "completedAt",
      "kind": "returned",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "postedAt",
      "kind": "returned",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "wasReturned",
      "kind": "returned",
      "type": "boolean",
      "description": "True if the check was returned. Otherwise false."
    },
    {
      "name": "purpose",
      "kind": "returned",
      "type": "string",
      "description": "Purpose of the deposited check"
    },
    {
      "name": "clientIdentifier",
      "kind": "returned",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.\n\n50 characters maximum"
    },
    {
      "name": "depositBusinessDate",
      "kind": "returned",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1."
    },
    {
      "name": "lockboxVendorId",
      "kind": "returned",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River"
    },
    {
      "name": "decisionRequired",
      "kind": "returned",
      "type": "boolean",
      "description": "DecisionRequired"
    },
    {
      "name": "wasDecisioned",
      "kind": "returned",
      "type": "boolean",
      "description": "WasDecisioned"
    },
    {
      "name": "productId",
      "kind": "returned",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River. In this case, it's the product ID of the payee account."
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "extended",
      "kind": "returned",
      "type": "object",
      "description": "Extended X9.37 Image Cash Letter (ICL) data containing the complete cash letter header, bundle header, and check item details per ANSI X9.37 specification",
      "children": [
        {
          "name": "cashLetter",
          "kind": "optional",
          "type": "object",
          "description": "X9.37 Cash Letter Header (Record Type 10) containing metadata about the entire cash letter transmission",
          "children": [
            {
              "name": "collectionTypeIndicator",
              "kind": "optional",
              "type": "string",
              "description": "Code identifying the type of collection: 00=Preliminary Forward, 01=Forward Presentment, 02=Same-Day Settlement, 03=Return, 04=Return Notification, 05=Preliminary Return Notification, 06=Final Return Notification, 20=No Detail, 99=Mixed collection types (X9.37 Field 2)"
            },
            {
              "name": "destinationRoutingNumber",
              "kind": "optional",
              "type": "string",
              "description": "Nine-digit routing and transit number (TTTTAAAAC format) of the institution that receives and processes the cash letter (X9.37 Field 3)"
            },
            {
              "name": "eceInstitutionRoutingNumber",
              "kind": "optional",
              "type": "string",
              "description": "Nine-digit routing and transit number (TTTTAAAAC format) of the ECE (Exchange) institution that creates the cash letter (X9.37 Field 4)"
            },
            {
              "name": "businessDate",
              "kind": "optional",
              "type": "string",
              "description": "Business date of the cash letter in YYYYMMDD format (X9.37 Field 5)"
            },
            {
              "name": "creationDate",
              "kind": "optional",
              "type": "string",
              "description": "Date the cash letter was created in Eastern Time zone, YYYYMMDD format (X9.37 Field 6)"
            },
            {
              "name": "creationTime",
              "kind": "optional",
              "type": "string",
              "description": "Time the cash letter was created in Eastern Time zone, HHMM format using 24-hour notation (X9.37 Field 7)"
            },
            {
              "name": "recordTypeIndicator",
              "kind": "optional",
              "type": "string",
              "description": "Indicates the presence and type of electronic check records: N=No electronic records, E=Electronic records without images, I=Electronic records with images, F=Electronic records with images from previous letter (X9.37 Field 8)"
            },
            {
              "name": "documentationTypeIndicator",
              "kind": "optional",
              "type": "string",
              "description": "Type of documentation supporting the check: A-M indicate various image/paper combinations, Z=No image provided (X9.37 Field 9)"
            },
            {
              "name": "cashLetterId",
              "kind": "optional",
              "type": "string",
              "description": "Unique eight-character identifier for this cash letter (X9.37 Field 10)"
            },
            {
              "name": "originatorContactName",
              "kind": "optional",
              "type": "string",
              "description": "Name of the contact person at the institution creating the cash letter, up to 14 characters (X9.37 Field 11)"
            },
            {
              "name": "originatorContactPhone",
              "kind": "optional",
              "type": "string",
              "description": "Ten-digit phone number for the originator contact (X9.37 Field 12)"
            },
            {
              "name": "fedWorkType",
              "kind": "optional",
              "type": "string",
              "description": "Federal Reserve work type classification code, single character (X9.37 Field 13)"
            },
            {
              "name": "userField",
              "kind": "optional",
              "type": "string",
              "description": "Field available for user-defined data per X9.37 standard, used at the discretion of participants"
            },
            {
              "name": "reserved",
              "kind": "optional",
              "type": "string",
              "description": "Field reserved for future use per X9.37 specification, currently blank"
            }
          ]
        },
        {
          "name": "bundle",
          "kind": "optional",
          "type": "object",
          "description": "X9.37 Bundle Header (Record Type 20) containing metadata about this bundle of check items within the cash letter",
          "children": [
            {
              "name": "collectionTypeIndicator",
              "kind": "optional",
              "type": "string",
              "description": "Code identifying the type of collection: 00=Preliminary Forward, 01=Forward Presentment, 02=Same-Day Settlement, 03=Return, 04=Return Notification, 05=Preliminary Return Notification, 06=Final Return Notification, 20=No Detail, 99=Mixed collection types (X9.37 Field 2)"
            },
            {
              "name": "destinationRoutingNumber",
              "kind": "optional",
              "type": "string",
              "description": "Nine-digit routing and transit number (TTTTAAAAC format) of the institution that receives and processes the cash letter (X9.37 Field 3)"
            },
            {
              "name": "eceRoutingNumber",
              "kind": "optional",
              "type": "string",
              "description": "Nine-digit ECE (Exchange) institution's routing and transit number that creates the bundle header (X9.37 Field 4)"
            },
            {
              "name": "businessDate",
              "kind": "optional",
              "type": "string",
              "description": "Business date of the cash letter in YYYYMMDD format (X9.37 Field 5)"
            },
            {
              "name": "creationDate",
              "kind": "optional",
              "type": "string",
              "description": "Date the cash letter was created in Eastern Time zone, YYYYMMDD format (X9.37 Field 6)"
            },
            {
              "name": "bundleId",
              "kind": "optional",
              "type": "string",
              "description": "Unique identifier for this bundle within the cash letter, up to 10 characters, assigned by the institution creating the bundle (X9.37 Field 7)"
            },
            {
              "name": "sequenceNumber",
              "kind": "optional",
              "type": "string",
              "description": "Sequential number of this bundle within the cash letter, typically denoting relative position (X9.37 Field 8)"
            },
            {
              "name": "cycleNumber",
              "kind": "optional",
              "type": "string",
              "description": "Processing cycle code under which the bundle is created, two characters assigned by the creating institution (X9.37 Field 9)"
            },
            {
              "name": "returnLocationRoutingNumber",
              "kind": "optional",
              "type": "string",
              "description": "Nine-digit routing and transit number (TTTTAAAAC format) where returns, final return notifications, and preliminary return notifications are sent (X9.37 Field 3 in Addendum A)"
            },
            {
              "name": "userField",
              "kind": "optional",
              "type": "string",
              "description": "Field available for user-defined data per X9.37 standard, used at the discretion of participants"
            },
            {
              "name": "reserved",
              "kind": "optional",
              "type": "string",
              "description": "Field reserved for future use per X9.37 specification, currently blank"
            }
          ]
        },
        {
          "name": "item",
          "kind": "optional",
          "type": "object",
          "description": "X9.37 Check Detail and related records containing the check item information including images and MICR data",
          "children": [
            {
              "name": "checkDetail",
              "kind": "optional",
              "type": "object",
              "description": "X9.37 Check Detail Record (Type 25) containing MICR line data and processing indicators for the check item",
              "children": [
                {
                  "name": "auxiliaryOnUs",
                  "kind": "optional",
                  "type": "string",
                  "description": "Code used on commercial checks at the discretion of the payor bank, typically for internal processing (X9.37 Field 2)"
                },
                {
                  "name": "externalProcessingCode",
                  "kind": "optional",
                  "type": "string",
                  "description": "Code used for special purposes as authorized by X9, also known as Position 44 (X9.37 Field 3)"
                },
                {
                  "name": "payorRoutingNumber",
                  "kind": "optional",
                  "type": "string",
                  "description": "Eight-digit routing number (TTTTAAAA format) identifying the institution by or through which the item is payable (X9.37 Field 4)"
                },
                {
                  "name": "payorCheckDigit",
                  "kind": "optional",
                  "type": "string",
                  "description": "Check digit for the payor bank routing number to form a valid mod-checked nine-digit routing number (X9.37 Field 5)"
                },
                {
                  "name": "onUs",
                  "kind": "optional",
                  "type": "string",
                  "description": "Data specified by the payor bank, typically includes account number, serial number, or transaction code, up to 20 characters (X9.37 Field 6)"
                },
                {
                  "name": "amount",
                  "kind": "optional",
                  "type": "string",
                  "description": "The amount to be transferred, in cents. For example, 10001 = $100.01."
                },
                {
                  "name": "sequenceNumber",
                  "kind": "optional",
                  "type": "string",
                  "description": "Sequential number of this bundle within the cash letter, typically denoting relative position (X9.37 Field 8)"
                },
                {
                  "name": "documentationTypeIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "Type of documentation supporting the check: A-M indicate various image/paper combinations, Z=No image provided (X9.37 Field 9)"
                },
                {
                  "name": "electronicReturnIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "Return Acceptance Indicator - indicates whether the creating institution will support electronic return processing, values 0-9 and A-F (X9.37 Field 10)"
                },
                {
                  "name": "micrValidIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "MICR read quality: 1=Good read, 2=Good read with missing field, 3=Read error encountered, 4=Missing field and read error (X9.37 Field 11)"
                },
                {
                  "name": "bofdIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "Bank of First Deposit indicator: Y=ECE is BOFD, N=ECE is not BOFD, U=Relationship undetermined (X9.37 Field 12)"
                },
                {
                  "name": "addendumCount",
                  "kind": "optional",
                  "type": "string",
                  "description": "Number of Check Detail Record Addenda to follow, supports up to 99 addendum records (X9.37 Field 13)"
                },
                {
                  "name": "correctionIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "How the MICR line was repaired: 0=No repair, 1-3=Various repair methods, 4=Undetermined (X9.37 Field 14)"
                },
                {
                  "name": "archiveTypeIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "Type of archive supporting this Check Detail: A-I represent microfilm, image, paper, or combinations (X9.37 Field 15)"
                }
              ]
            },
            {
              "name": "checkAddendumA",
              "kind": "optional",
              "type": "array",
              "description": "X9.37 Check Detail Addendum A (Record Type 26) containing Bank of First Deposit information and endorsement details"
            },
            {
              "name": "checkAddendumB",
              "kind": "optional",
              "type": "array",
              "description": "X9.37 Check Detail Addendum B (Record Type 27) - Not supported by Federal Reserve Bank"
            },
            {
              "name": "checkAddendumC",
              "kind": "optional",
              "type": "array",
              "description": "X9.37 Check Detail Addendum C (Record Type 28) containing endorsing bank information and return reason"
            },
            {
              "name": "returnDetail",
              "kind": "optional",
              "type": "object",
              "description": "ReturnDetail",
              "children": [
                {
                  "name": "payorRoutingNumber",
                  "kind": "optional",
                  "type": "string",
                  "description": "Eight-digit routing number (TTTTAAAA format) identifying the institution by or through which the item is payable (X9.37 Field 4)"
                },
                {
                  "name": "payorCheckDigit",
                  "kind": "optional",
                  "type": "string",
                  "description": "Check digit for the payor bank routing number to form a valid mod-checked nine-digit routing number (X9.37 Field 5)"
                },
                {
                  "name": "onUs",
                  "kind": "optional",
                  "type": "string",
                  "description": "Data specified by the payor bank, typically includes account number, serial number, or transaction code, up to 20 characters (X9.37 Field 6)"
                },
                {
                  "name": "amount",
                  "kind": "optional",
                  "type": "string",
                  "description": "The amount to be transferred, in cents. For example, 10001 = $100.01."
                },
                {
                  "name": "returnReason",
                  "kind": "optional",
                  "type": "string",
                  "description": "Code indicating the reason for non-payment or return of the check (X9.37 Addendum C Field 9)"
                },
                {
                  "name": "addendumCount",
                  "kind": "optional",
                  "type": "string",
                  "description": "Number of Check Detail Record Addenda to follow, supports up to 99 addendum records (X9.37 Field 13)"
                },
                {
                  "name": "returnDocTypeIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "ReturnDocTypeIndicator"
                },
                {
                  "name": "forwardBundleDate",
                  "kind": "optional",
                  "type": "string",
                  "description": "ForwardBundleDate"
                },
                {
                  "name": "eceSequenceNumber",
                  "kind": "optional",
                  "type": "string",
                  "description": "Sequence number assigned by the ECE institution that creates the Check Detail, up to 15 characters (X9.37 Field 8)"
                },
                {
                  "name": "externalProcessingCode",
                  "kind": "optional",
                  "type": "string",
                  "description": "Code used for special purposes as authorized by X9, also known as Position 44 (X9.37 Field 3)"
                },
                {
                  "name": "returnNotificationIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "ReturnNotificationIndicator"
                },
                {
                  "name": "returnArchiveTypeIndicator",
                  "kind": "optional",
                  "type": "string",
                  "description": "ReturnArchiveTypeIndicator"
                },
                {
                  "name": "numberOfTimesReturned",
                  "kind": "optional",
                  "type": "string",
                  "description": "NumberOfTimesReturned"
                },
                {
                  "name": "reserved",
                  "kind": "optional",
                  "type": "string",
                  "description": "Field reserved for future use per X9.37 specification, currently blank"
                }
              ]
            },
            {
              "name": "returnAddendumA",
              "kind": "optional",
              "type": "array",
              "description": "X9.37 Return Detail Addendum A (Record Type 32) containing Bank of First Deposit information for returned items"
            },
            {
              "name": "returnAddendumB",
              "kind": "optional",
              "type": "object",
              "description": "ReturnAddendumB",
              "children": [
                {
                  "name": "payorBankName",
                  "kind": "optional",
                  "type": "string",
                  "description": "Short name (up to 18 characters) of the institution by or through which the item is payable (X9.37 Return Addendum B Field 2)"
                },
                {
                  "name": "auxiliaryOnUs",
                  "kind": "optional",
                  "type": "string",
                  "description": "Code used on commercial checks at the discretion of the payor bank, typically for internal processing (X9.37 Field 2)"
                },
                {
                  "name": "payorBankSequenceNumber",
                  "kind": "optional",
                  "type": "string",
                  "description": "Number that identifies the item at the payor bank, up to 15 characters (X9.37 Return Addendum B Field 4)"
                },
                {
                  "name": "payorBankBusinessDate",
                  "kind": "optional",
                  "type": "string",
                  "description": "Date the payor bank processed the Return Record in YYYYMMDD format (X9.37 Return Addendum B Field 5)"
                },
                {
                  "name": "payorAccountName",
                  "kind": "optional",
                  "type": "string",
                  "description": "Account name from payor bank records, up to 22 characters (X9.37 Return Addendum B Field 6)"
                }
              ]
            },
            {
              "name": "returnAddendumC",
              "kind": "optional",
              "type": "object",
              "description": "X9.37 Return Detail Addendum C (Record Type 34) containing endorsement and deposit information"
            },
            {
              "name": "returnAddendumD",
              "kind": "optional",
              "type": "array",
              "description": "X9.37 Return Detail Addendum D (Record Type 35) containing additional return reason information"
            },
            {
              "name": "images",
              "kind": "optional",
              "type": "array",
              "description": "Images"
            }
          ]
        }
      ]
    }
  ],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1paymentsidextended",
  "legacyHash": "315ZOzr02aCRFE1R9h0zN"
}
```
:::


[title] Simulate inbound payment
[path] Payments/Checks/APIs/

## API reference

Simulates making a check withdrawal from a Cross River account. The account must be enabled for checks.

In Cross River this is referred to as an *inbound forward* item because the Federal Reserve sends the check (*in*) to Cross River for payment and attempts to clear the check on the account.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy).&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments/simulated-inbound-payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "flw3I6YAlYAch_R3p6UGW",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-payments' \\\n--data '{\n  \"accountNumber\": \"2846220461\",\n  \"payeeName\": \"string\",\n  \"checkNumber\": \"1032357\",\n  \"amount\": 4400\n}'",
        "customLabel": ""
      },
      {
        "id": "CYgeJvWZTSkXfwN-zcMWw",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments/simulated-inbound-payments',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"accountNumber\\\": \\\"2846220461\\\",\\r\\n  \\\"payeeName\\\": \\\"string\\\",\\r\\n  \\\"checkNumber\\\": \\\"1032357\\\",\\r\\n  \\\"amount\\\": 4400\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "xaYu_cGuXJWdlnlKFafTe",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-payments\"\n\npayload = \"{\\r\\n  \\\"accountNumber\\\": \\\"2846220461\\\",\\r\\n  \\\"payeeName\\\": \\\"string\\\",\\r\\n  \\\"checkNumber\\\": \\\"1032357\\\",\\r\\n  \\\"amount\\\": 4400\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "xf_QW7WMg_SLYQn8g9GUD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"accountNumber\\\": \\\"2846220461\\\",\\r\\n  \\\"payeeName\\\": \\\"string\\\",\\r\\n  \\\"checkNumber\\\": \\\"1032357\\\",\\r\\n  \\\"amount\\\": 4400\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "09kqCFa4VeWcg6MviC2d2",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"accountNumber\": \"2846220461\",`+\"\n\"+`\n  \"payeeName\": \"string\",`+\"\n\"+`\n  \"checkNumber\": \"1032357\",`+\"\n\"+`\n  \"amount\": 4400`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "flw3I6YAlYAch_R3p6UGW"
  },
  "results": {
    "languages": [
      {
        "id": "uv43Jrbeg_9MgyANe5ty4",
        "language": "200",
        "code": "{\n    \"id\": \"2100980b-4419-4a42-bc4c-b449006b84ec\",\n    \"accountNumber\": \"2846220461\",\n    \"referenceId\": \"C133054U0D94\",\n    \"paymentType\": \"Forward\",\n    \"checkType\": \"Unknown\",\n    \"direction\": \"Inbound\",\n    \"status\": \"Created\",\n    \"source\": \"Api\",\n    \"posting\": \"Pending\",\n    \"postingCode\": \"OK\",\n    \"fedBatchId\": \"9fa74496-c1dd-47a4-b6aa-b449006b84ec\",\n    \"fedBatchSequence\": 0,\n    \"coreTransactionId\": \"ea4e0082-63db-4fe3-afa2-b449006b84ec\",\n    \"originalPaymentId\": \"2100980b-4419-4a42-bc4c-b449006b84ec\",\n    \"customerId\": \"05106466-9144-4f3f-8fb1-b345005d18ba\",\n    \"payerRoutingNumber\": \"021214891\",\n    \"payerAccountNumber\": \"2846220461\",\n    \"payeeName\": \"string\",\n    \"checkNumber\": \"1032357\",\n    \"bofdRoutingNumber\": \"061000146\",\n    \"sequenceNumber\": \"6121648120\",\n    \"amount\": 4400,\n    \"currency\": \"usd\",\n    \"recognizedAmount\": 0,\n    \"iqaPassed\": false,\n    \"hasFrontImage\": true,\n    \"hasBackImage\": true,\n    \"isRedeposit\": false,\n    \"policy\": \"Standard\",\n    \"schedule\": [],\n    \"createdAt\": \"2026-05-13T02:31:27.9322387-04:00\",\n    \"wasReturned\": false,\n    \"purpose\": \"TESTING\",\n    \"depositBusinessDate\": \"260514\",\n    \"decisionRequired\": false,\n    \"wasDecisioned\": false,\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2026-05-13T02:31:27.9322683-04:00\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "uv43Jrbeg_9MgyANe5ty4"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Number of the Cross River account the simulated check is drawn on. If you are simulating inbound forward of a check printed with the POST /checks/v1/printed-payments endpoint, use the reserveAccountNumber that appears in the response, and NOT the fundingAccountNumber.",
        "": "Number of the Cross River account the simulated check is drawn on. If you are simulating inbound forward of a check printed with the POST /checks/v1/printed-payments endpoint, use the reserveAccountNumber that appears in the response, and NOT the fundingAccountNumber."
      },
      {
        "name": "payeeName",
        "kind": "required",
        "type": "string",
        "description": "Name written on the pay to the order of line of the check. Maximum 50 characters. For the simulation, this field must be included in the request body, but it can be null.",
        "": "Name written on the pay to the order of line of the check. Maximum 50 characters. For the simulation, this field must be included in the request body, but it can be null."
      },
      {
        "name": "checkNumber",
        "kind": "required",
        "type": "string",
        "description": "The serial number that appears on the check. Maximum 20 characters but usually contains between 3-5 digits.",
        "": "The serial number that appears on the check. Maximum 20 characters but usually contains between 3-5 digits."
      },
      {
        "name": "amount",
        "kind": "required",
        "type": "integer",
        "description": "The amount to be transferred, in cents. For example, 10001 = $100.01.",
        "": "The amount to be transferred, in cents. For example, 10001 = $100.01."
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. Maximum 50 characters.",
        "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. Maximum 50 characters."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Check payment ID. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account the check is drawn on",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
      "children": []
    },
    {
      "name": "checkType",
      "kind": "optional",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
      "children": []
    },
    {
      "name": "direction ",
      "kind": "optional",
      "type": "string",
      "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified",
      "children": []
    },
    {
      "name": "positivePayResult",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled",
      "children": []
    },
    {
      "name": "positivePayMatchId",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the distribution that the check was included in",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "payerRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)",
      "children": []
    },
    {
      "name": "payerAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s account number (printed on the check)",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the bank where the check was first deposited",
      "children": []
    },
    {
      "name": "sequenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "The check sequence number",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)",
      "children": []
    },
    {
      "name": "micr",
      "kind": "optional",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number",
      "children": []
    },
    {
      "name": "recognizedAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The check amount recognized from the check image via OCR",
      "children": []
    },
    {
      "name": "iqaPassed",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false",
      "children": []
    },
    {
      "name": "returnCode",
      "kind": "optional",
      "type": "string",
      "description": "The 1-character code indicating the reason for the check return. See the checks request and response codes page for a complete list of values.",
      "children": []
    },
    {
      "name": "hasFrontImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "hasBackImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "isRedeposit",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false.",
      "children": []
    },
    {
      "name": "policy ",
      "kind": "optional",
      "type": "string",
      "description": "The current availability policy type assigned to the deposit, defining the schedule for making funds available:\n- Standard\n- NewAccount\n- LargeDeposits\n- RedepositedCheck\n- RepeatedOverdrafts\n- OnUs\n- RCNoticeOfUnpaidReturn\n- RCSuspectFraud\n- RCFundingAccountOverdrafts\n- RCUnverifiedEndorsement\n- RCInconsistentInformation\n- RCErasuresOrAlterations\n- RCOutOfDateRoutingNumber\n- RCPostDatedOrStaleDate\n- RCPayingBankNotPaidIndication\n- RCLostOrDamaged\n- FiveDay\n- EmergencyConditions",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose of the deposited check",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "depositBusinessDate",
      "kind": "optional",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
      "children": []
    },
    {
      "name": "lockboxVendorId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1paymentssimulated-inbound-payment",
  "legacyHash": "PBzz4s3FwLCp5OdQctPdg"
}
```
:::


[title] Create account wallet
[path] Onchain payments/APIs/

## API reference

Creates a new blockchain receiving address for the specified account. These wallet addresses represent on-chain destinations where partners can receive funds on supported blockchains.&#x20;

:::ApiMethodV2
```json
{
  "name": "Endpoint: /crypto/v1/accounts/{accountNumber}/account-addresses",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/crypto/v1/accounts/{accountNumber}/account-addresses",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "GvbYb-XxXg8aAAHK3ybHL",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/crypto/v1/accounts/2179128455/account-addresses' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: text/plain' \\\n--data '{\n  \"blockchain\": \"ethereum\",\n  \"currency\": \"USDC\",\n  \"tag\": \"my tag\"\n}'",
        "customLabel": ""
      },
      {
        "id": "V5og2gGJF41iqyJRyYu3f",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/crypto/v1/accounts/2179128455/account-addresses',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Accept': 'text/plain'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"blockchain\": \"ethereum\",\n  \"currency\": \"USDC\",\n  \"tag\": \"my tag\"\n});\n\nreq.write(postData);\n\nreq.end();"
      },
      {
        "id": "Dt6rpsFFXvVSVFW4aap0B",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"blockchain\": \"ethereum\",\n  \"currency\": \"USDC\",\n  \"tag\": \"my tag\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'text/plain'\n}\nconn.request(\"POST\", \"/crypto/v1/accounts/2179128455/account-addresses\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "CGJD0lUebI9VbC4FCy5oH",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/crypto/v1/accounts/2179128455/account-addresses\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Accept\"] = \"text/plain\"\nrequest.body = JSON.dump({\n  \"blockchain\": \"ethereum\",\n  \"currency\": \"USDC\",\n  \"tag\": \"my tag\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "-Rz0gTvc-xoZyuMaHjnEA",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/crypto/v1/accounts/2179128455/account-addresses\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{\n  \"blockchain\": \"ethereum\",\n  \"currency\": \"USDC\",\n  \"tag\": \"my tag\"\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"text/plain\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "GvbYb-XxXg8aAAHK3ybHL"
  },
  "results": {
    "languages": [
      {
        "id": "VVw-EG1caZm9nSwDN62Ez",
        "language": "200",
        "code": "{\n    \"accountAddressInfo\": {\n        \"id\": \"8b3109f5-e9c9-4ced-9558-b4650074803c\",\n        \"accountNumber\": \"2179128455\",\n        \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n        \"title\": \"Jerry Penn onchain - ethereum\",\n        \"blockchain\": \"ethereum\",\n        \"address\": \"0x1111111111111111111111111111111111111111\",\n        \"tag\": \"\",\n        \"lastModifiedAt\": \"2026-06-10T07:04:10.0131742Z\",\n        \"vaultAccountId\": \"19\"\n    },\n    \"externalAssetId\": \"usdc_eth_test5_0ger\",\n    \"vaultAccountId\": \"19\"\n}",
        "customLabel": ""
      },
      {
        "id": "Fw5F5LafoTbOcQmjRfRvd",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2450,\n            \"message\": \"Address for given Currency already exists\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "VVw-EG1caZm9nSwDN62Ez"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Unique identifier of the Cross River account to be associated with the wallet address",
        "": "Unique identifier of the Cross River account to be associated with the wallet address"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "blockchain",
        "kind": "required",
        "type": "string",
        "description": "Blockchain network associated with the wallet (for example, Ethereum, Solana). Maximum 20 characters.",
        "": "Blockchain network associated with the wallet (for example, Ethereum, Solana). Maximum 20 characters."
      },
      {
        "name": "currency",
        "kind": "required",
        "type": "string",
        "description": "Asset to receive on the wallet (for example, USDC). Maximum 20 characters.",
        "": "Asset to receive on the wallet (for example, USDC). Maximum 20 characters."
      },
      {
        "name": "tag",
        "kind": "optional",
        "type": "string",
        "description": "Tag/memo/destination tag if the blockchain requires it. Maximum 255 characters.",
        "": "Tag/memo/destination tag if the blockchain requires it. Maximum 255 characters."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier of the wallet address record"
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number under which the wallet address is registered",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format. Here it indicates what partner created and owns this account wallet.",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "Human-readable label for the wallet (for example, Eth, Sol, Ethereum)",
      "children": []
    },
    {
      "name": "blockchain",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain network associated with the wallet (for example, Ethereum, Solana)",
      "children": []
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "string",
      "description": "Address of the wallet on the blockchain",
      "children": []
    },
    {
      "name": "tag",
      "kind": "optional",
      "type": "string",
      "description": "Tag/memo/destination tag if the blockchain requires it",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "vaultAccountId",
      "kind": "optional",
      "type": "string",
      "description": "The unique identifier of the vault account associated with the wallet address",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cryptov1accountsaccountnumberaccount-addr",
  "legacyHash": "hWri18PfMpeIMzY9Vh22f"
}
```
:::




[title] Send PII
[path] Onchain payments/APIs/

## API reference

Adds originator/sender personally identifiable information to an incoming payment. This endpoint is typically used when a payment requires originator/sender information before it can continue through compliance review and posting workflows.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/payments/{id}/pii",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/crypto/v1/payments/{id}/pii",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl -X POST https://sandbox.crbcos.com/crypto/v1/payments/05130f80-74b8-43f7-9221-341807e570ba/pii \\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\" \\\\\n  -d '{\n  \"name\": \"John Doe\",\n  \"addressLine1\": \"2115 Linwood Ave\",\n  \"addressLine2\": \"Apt 4B\",\n  \"city\": \"Fort Lee\",\n  \"stateProvince\": \"NJ\",\n  \"countryCode\": \"US\",\n  \"postalCode\": \"07024\",\n  \"allowPiiReuse\": true\n}'"
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/crypto/v1/payments/05130f80-74b8-43f7-9221-341807e570ba/pii //',\n  'headers': {\n    'Content-Type': 'application/json'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"name\\\": \\\"John Doe\\\",\\r\\n  \\\"addressLine1\\\": \\\"2115 Linwood Ave\\\",\\r\\n  \\\"addressLine2\\\": \\\"Apt 4B\\\",\\r\\n  \\\"city\\\": \\\"Fort Lee\\\",\\r\\n  \\\"stateProvince\\\": \\\"NJ\\\",\\r\\n  \\\"countryCode\\\": \\\"US\\\",\\r\\n  \\\"postalCode\\\": \\\"07024\\\",\\r\\n  \\\"allowPiiReuse\\\": true\\r\\n}'\";\n\nreq.write(postData);\n\nreq.end();"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = \"{\\r\\n  \\\"name\\\": \\\"John Doe\\\",\\r\\n  \\\"addressLine1\\\": \\\"2115 Linwood Ave\\\",\\r\\n  \\\"addressLine2\\\": \\\"Apt 4B\\\",\\r\\n  \\\"city\\\": \\\"Fort Lee\\\",\\r\\n  \\\"stateProvince\\\": \\\"NJ\\\",\\r\\n  \\\"countryCode\\\": \\\"US\\\",\\r\\n  \\\"postalCode\\\": \\\"07024\\\",\\r\\n  \\\"allowPiiReuse\\\": true\\r\\n}'\"\nheaders = {\n  'Content-Type': 'application/json'\n}\nconn.request(\"POST\", \"/crypto/v1/payments/05130f80-74b8-43f7-9221-341807e570ba/pii //\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/crypto/v1/payments/05130f80-74b8-43f7-9221-341807e570ba/pii //\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = \"{\\r\\n  \\\"name\\\": \\\"John Doe\\\",\\r\\n  \\\"addressLine1\\\": \\\"2115 Linwood Ave\\\",\\r\\n  \\\"addressLine2\\\": \\\"Apt 4B\\\",\\r\\n  \\\"city\\\": \\\"Fort Lee\\\",\\r\\n  \\\"stateProvince\\\": \\\"NJ\\\",\\r\\n  \\\"countryCode\\\": \\\"US\\\",\\r\\n  \\\"postalCode\\\": \\\"07024\\\",\\r\\n  \\\"allowPiiReuse\\\": true\\r\\n}'\"\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/crypto/v1/payments/05130f80-74b8-43f7-9221-341807e570ba/pii //\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"name\": \"John Doe\",`+\"\n\"+`\n  \"addressLine1\": \"2115 Linwood Ave\",`+\"\n\"+`\n  \"addressLine2\": \"Apt 4B\",`+\"\n\"+`\n  \"city\": \"Fort Lee\",`+\"\n\"+`\n  \"stateProvince\": \"NJ\",`+\"\n\"+`\n  \"countryCode\": \"US\",`+\"\n\"+`\n  \"postalCode\": \"07024\",`+\"\n\"+`\n  \"allowPiiReuse\": true`+\"\n\"+`\n}'`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "curl-example"
  },
  "results": {
    "languages": [
      {
        "id": "200",
        "language": "200",
        "code": "{\n  \"id\": \"f87ee6d5-7775-46cd-a6de-b4570131ee00\",\n  \"referenceId\": \"CRP147BW063MN5\",\n  \"partnerId\": \"aa554e0a-910c-435f-89ba-b06c01305d57\",\n  \"productId\": \"ac6686be-005f-4b05-bb4a-b42f013bba12\",\n  \"accountNumber\": \"123989446893\",\n  \"direction\": \"Inbound\",\n  \"status\": \"Hold\",\n  \"blockchain\": \"solana\",\n  \"currency\": \"usdc\",\n  \"unit\": \"Mwei\",\n  \"amountNative\": 1,\n  \"amount\": 1000000,\n  \"netAmountNative\": 1,\n  \"netAmount\": 1000000,\n  \"feeCurrency\": \"sol\",\n  \"feeUnit\": \"Lamport\",\n  \"feeType\": \"Net\",\n  \"feeLevel\": \"Low\",\n  \"networkFeeNative\": 8e-05,\n  \"networkFee\": 80000,\n  \"sourceAddress\": \"11111111111111111111111111111111111111111111\",\n  \"destinationAddress\": \"22222222222222222222222222222222222222222222\",\n  \"source\": \"Api\",\n  \"createdAt\": \"2026-05-27T18:33:51.559757Z\",\n  \"lastModifiedAt\": \"2026-05-27T18:33:51.575421Z\",\n  \"postingStatus\": \"Pending\",\n  \"transactionHash\": \"FakeTxHashRepeatingPattern11111111111111111111111111111111111111111111111111111111111111\",\n  \"paymentType\": \"Payment\",\n  \"originator\": {\n    \"fullName\": \"John Doe\",\n    \"addressLine1\": \"2115 Linwood\",\n    \"addressLine2\": \"Ave\",\n    \"city\": \"Fort Lee\",\n    \"stateProvince\": \"NJ\",\n    \"postalCode\": \"07058\",\n    \"countryCode\": \"US\"\n  },\n  \"beneficiary\": {\n    \"entityType\": \"Business\",\n    \"fullName\": \"ABC Corp\",\n    \"addressLine1\": \"2114 Linwood Ave\",\n    \"city\": \"Fort Lee\",\n    \"stateProvince\": \"NJ\",\n    \"postalCode\": \"07025\",\n    \"countryCode\": \"US\",\n    \"identificationType\": \"IncorporationNumber\",\n    \"identificationValue\": \"555599998\"\n  },\n  \"postings\": []\n}\n"
      },
      {
        "id": "UNEh_fXnNSaXUA7VPbYic",
        "language": "204_CLASS",
        "code": "{\n    \"error\": {\n      \"code\": 2043,\n      \"message\": \"The payment PII could not be added\"\n    }\n  }"
      }
    ],
    "selectedLanguageId": "200"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "optional",
        "type": "string",
        "description": "Unique identifier of the payment that requires originator PII. This ID is in UUID format.",
        "": "Unique identifier of the payment that requires originator PII. This ID is in UUID format."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": [],
    "bodyDataParameters": [
      {
        "name": "name",
        "kind": "required",
        "type": "string",
        "description": "Full legal name of the originator. Maximum 200 characters.",
        "": "Full legal name of the originator. Maximum 200 characters."
      },
      {
        "name": "addressLine1",
        "kind": "required",
        "type": "string",
        "description": "First line of the originator physical address. Maximum 80 characters.",
        "": "First line of the originator physical address. Maximum 80 characters."
      },
      {
        "name": "addressLine2",
        "kind": "optional",
        "type": "string",
        "description": "Second line of the originator physical address, if needed. Maximum 80 characters. Nullable.",
        "": "Second line of the originator physical address, if needed. Maximum 80 characters. Nullable."
      },
      {
        "name": "city",
        "kind": "required",
        "type": "string",
        "description": "Full name of the city where the originator is located. Maximum 40 characters.",
        "": "Full name of the city where the originator is located. Maximum 40 characters."
      },
      {
        "name": "stateProvince",
        "kind": "required",
        "type": "string",
        "description": "State or province of the originator. For US addresses, use the two-letter state code."
      },
      {
        "name": "countryCode",
        "kind": "required",
        "type": "string",
        "description": "Two-letter ISO country code for the originator country",
        "": "Two-letter ISO country code for the originator country"
      },
      {
        "name": "postalCode",
        "kind": "required",
        "type": "string",
        "description": "Postal or ZIP code of the originator. Maximum 20 characters.",
        "": "Postal or ZIP code of the originator. Maximum 20 characters."
      },
      {
        "name": "allowPiiReuse",
        "kind": "optional",
        "type": "boolean",
        "description": "True if the provided PII may be reused for future applicable payments. Otherwise, false.",
        "": "True if the provided PII may be reused for future applicable payments. Otherwise, false."
      }
    ]
  },
  "response": [
    {
      "name": "id",
      "kind": "returned",
      "type": "string",
      "description": "Unique identifier of the incoming payment"
    },
    {
      "name": "referenceId",
      "kind": "returned",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment. The reference ID always begins with a letter or letters indicating the rail. For Crypto the reference ID starts with 'CRP'."
    },
    {
      "name": "partnerId",
      "kind": "returned",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format."
    },
    {
      "name": "productId",
      "kind": "returned",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the associated account is based. Provided by Cross River."
    },
    {
      "name": "accountNumber",
      "kind": "returned",
      "type": "string",
      "description": "Account number associated with the payment"
    },
    {
      "name": "direction",
      "kind": "returned",
      "type": "string",
      "description": "Payment direction:\n- Inbound\n- Outbound"
    },
    {
      "name": "status",
      "kind": "returned",
      "type": "string",
      "description": "Current payment status. For this use case, Hold indicates the inbound payment is awaiting further action.\nValues include:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled\n- ResearchRequired\n- Transmitted\n- Blocked\n- Returned"
    },
    {
      "name": "blockchain",
      "kind": "returned",
      "type": "string",
      "description": "Blockchain network where payment was sent (for example, Solana, Ethereum)"
    },
    {
      "name": "currency",
      "kind": "returned",
      "type": "string",
      "description": "Asset sent (for example, USDC)"
    },
    {
      "name": "unit",
      "kind": "returned",
      "type": "string",
      "description": "Base unit used for the asset amount. For example, MWei."
    },
    {
      "name": "amountNative",
      "kind": "returned",
      "type": "number",
      "description": "Amount in USD cents, if provided or computed (system converts to chain base units)"
    },
    {
      "name": "amount",
      "kind": "returned",
      "type": "number",
      "description": "Amount in blockchain base units. For example, 0.01 USDC = 10,000 on 6-decimals."
    },
    {
      "name": "netAmountNative",
      "kind": "returned",
      "type": "number",
      "description": "Net human-readable amount of the payment, after applicable fees"
    },
    {
      "name": "netAmount",
      "kind": "returned",
      "type": "number",
      "description": "Net amount in blockchain base units of the payment, after applicable fees"
    },
    {
      "name": "feeCurrency",
      "kind": "returned",
      "type": "string",
      "description": "Asset used to pay the network fee."
    },
    {
      "name": "feeUnit",
      "kind": "returned",
      "type": "string",
      "description": "Fee asset + unit. For example, sol/Lamport."
    },
    {
      "name": "networkFeeNative",
      "kind": "returned",
      "type": "number",
      "description": "Human-readable network fee amount"
    },
    {
      "name": "networkFee",
      "kind": "returned",
      "type": "number",
      "description": "Network fee in base units"
    },
    {
      "name": "sourceAddress",
      "kind": "returned",
      "type": "string",
      "description": "Blockchain address from which the payment originated"
    },
    {
      "name": "destinationAddress",
      "kind": "returned",
      "type": "string",
      "description": "Blockchain address that received the payment"
    },
    {
      "name": "createdAt",
      "kind": "returned",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "lastModifiedAt",
      "kind": "returned",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "postingStatus",
      "kind": "returned",
      "type": "string",
      "description": "Internal posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- NotApplicable"
    },
    {
      "name": "transactionHash",
      "kind": "returned",
      "type": "string",
      "description": "Blockchain transaction hash"
    },
    {
      "name": "originator",
      "kind": "returned",
      "type": "object",
      "description": "Originator information added to the payment",
      "children": [
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Type of entity:\n- Person\n- Business"
        },
        {
          "name": "fullName",
          "kind": "returned",
          "type": "string",
          "description": "Full legal name of the originator (for Person entities only)"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name of the originator (for Person entities only)"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name of the originator (for Person entities only)"
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "Legal entity name (for Business entities only)"
        },
        {
          "name": "addressLine1",
          "kind": "optional",
          "type": "string",
          "description": "First line of the originator physical address"
        },
        {
          "name": "addressLine2",
          "kind": "optional",
          "type": "string",
          "description": "Second line of the originator physical address"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City where the originator is located"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "State or province of the originator"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code of the originator"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter or three-letter ISO country code"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of birth for an originator who is a person, or date formed for a business originator"
        },
        {
          "name": "identificationType",
          "kind": "optional",
          "type": "string",
          "description": "Type of identification document:\n- EIN\n- IncorporationNumber"
        },
        {
          "name": "identificationValue",
          "kind": "optional",
          "type": "string",
          "description": "Identification document number or value"
        }
      ]
    },
    {
      "name": "beneficiary",
      "kind": "returned",
      "type": "object",
      "description": "Beneficiary information associated with the payment.",
      "children": [
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "Type of entity:\n- Person\n- Business"
        },
        {
          "name": "fullName",
          "kind": "returned",
          "type": "string",
          "description": "Full legal name of the beneficiary (for Person entities only)"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "First name of the beneficiary (for Person entities only)"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Last name of the beneficiary (for Person entities only)"
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "Legal entity name (for Business entities only)"
        },
        {
          "name": "addressLine1",
          "kind": "optional",
          "type": "string",
          "description": "First line of the beneficiary physical address"
        },
        {
          "name": "addressLine2",
          "kind": "optional",
          "type": "string",
          "description": "Second line of the beneficiary physical address"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "City where the beneficiary is located"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "State or province of the beneficiary"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code of the beneficiary"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "Two-letter or three-letter ISO country code"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "Date of birth for a beneficiary who is a person, or date formed for a business beneficiary"
        },
        {
          "name": "identificationType",
          "kind": "optional",
          "type": "string",
          "description": "Type of identification document:\n- EIN\n- IncorporationNumber"
        },
        {
          "name": "identificationValue",
          "kind": "optional",
          "type": "string",
          "description": "Identification document number or value"
        }
      ]
    }
  ],
  "description": "",
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-v1paymentsidpii",
  "legacyHash": "SxlHGPotwwYXd55igQwvS"
}
```
:::




[title] Delete wallet
[path] Onchain payments/APIs/

## API reference

Deletes or disables a blockchain receiving address associated with an account. Use this endpoint when a wallet address associated with an account should no longer receive payments.

:::ApiMethodV2
```json
{
  "name": "DELETE /v1/accounts/{accountNumber}/account-addresses/{accountAddressId}",
  "method": "DELETE",
  "url": "https://sandbox.crbcos.com/crypto/v1/accounts/{accountNumber}/account-addresses/{accountAddressId}",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "curl-example",
        "language": "curl",
        "code": "curl --location --request DELETE 'https://sandbox.crbcos.com/crypto/v1/accounts/123989446893/account-addresses/481b6efb-c46f-4e88-a5dc-b42f013e8c39'\\\\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\\\n  -H \"Content-Type: application/json\""
      },
      {
        "id": "nodejs-example",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'DELETE',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/crypto/v1/accounts/123989446893/account-addresses/481b6efb-c46f-4e88-a5dc-b42f013e8c39',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();"
      },
      {
        "id": "python-example",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"DELETE\", \"/crypto/v1/accounts/123989446893/account-addresses/481b6efb-c46f-4e88-a5dc-b42f013e8c39\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "ruby-example",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/crypto/v1/accounts/123989446893/account-addresses/481b6efb-c46f-4e88-a5dc-b42f013e8c39\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "go-example",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/crypto/v1/accounts/123989446893/account-addresses/481b6efb-c46f-4e88-a5dc-b42f013e8c39\"\n  method := \"DELETE\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "curl-example"
  },
  "results": {
    "languages": [
      {
        "id": "200",
        "language": "200",
        "code": "{\n  \"id\": \"481b6efb-c46f-4e88-a5dc-b42f013e8c39\",\n  \"accountNumber\": \"123989446893\",\n  \"partnerId\": \"aa554e0a-910c-435f-89ba-b06c01305d57\",\n  \"title\": \"ethereum\",\n  \"blockchain\": \"ethereum\",\n  \"address\": \"0x1111111111111111111111111111111111111111\",\n  \"tag\": \"\",\n  \"lastModifiedAt\": \"2026-05-27T18:42:37.5696787Z\",\n  \"vaultAccountId\": \"9\"\n}"
      }
    ],
    "selectedLanguageId": "200"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number associated with the wallet address",
        "": "Account number associated with the wallet address"
      },
      {
        "name": "accountAddressId",
        "kind": "required",
        "type": "string",
        "description": "GUID ID of the wallet returned when you created it",
        "": "GUID ID of the wallet returned when you created it"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "formDataParameters": []
  },
  "response": [
    {
      "name": "id",
      "kind": "returned",
      "type": "string",
      "description": "Unique identifier of the wallet address record"
    },
    {
      "name": "accountNumber",
      "kind": "returned",
      "type": "string",
      "description": "Account number under which the wallet address was registered"
    },
    {
      "name": "partnerId",
      "kind": "returned",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format. Here it indicates what partner created and owns this account wallet."
    },
    {
      "name": "title",
      "kind": "returned",
      "type": "string",
      "description": "Human-readable label for the wallet (for example, Eth, Sol, Ethereum)"
    },
    {
      "name": "blockchain",
      "kind": "returned",
      "type": "string",
      "description": "Blockchain network associated with the wallet (for example, Ethereum, Solana)"
    },
    {
      "name": "address",
      "kind": "returned",
      "type": "string",
      "description": "Address of the wallet on the blockchain"
    },
    {
      "name": "tag",
      "kind": "returned",
      "type": "string",
      "description": "Tag, memo, or destination tag associated with the wallet address, if the block requires it"
    },
    {
      "name": "lastModifiedAt",
      "kind": "returned",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]"
    },
    {
      "name": "vaultAccountId",
      "kind": "returned",
      "type": "string",
      "description": "Identifier of the underlying vault account associated with the wallet address"
    }
  ],
  "description": "",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "delete-v1accountsaccountnumberaccount-addressesacc",
  "legacyHash": "VMRLBtyAzkl4c57TkIz7O"
}
```
:::




[title] Create external beneficiary
[path] Onchain payments/APIs/

## API reference

Creates an external beneficiary record (wallet + beneficiary details) for a given account. This record functions as a sort of "contact" for a recipient, kind of like the contact list in your phone for phone numbers. Account holders use this external beneficiary record  as a payment destination on supported blockchains.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /crypto/v1/external-addresses",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/crypto/v1/external-addresses",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "GvbYb-XxXg8aAAHK3ybHL",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/crypto/v1/external-addresses' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: text/plain' \\\n--header 'Authorization: Bearer <token>' \\\n--data '{\n  \"accountNumber\": \"2179128455\",\n  \"title\": \"Jerry Penn onchain\",\n  \"blockchain\": \"ethereum\",\n  \"address\": \"0x2222222222222222222222222222222222222222\",\n  \"tag\": \"test_ETH\",\n  \"beneficiary\": {\n    \"name\": \"Jerry Penn\",\n    \"addressLine1\": \"34 Howe Drive\",\n    \"city\": \"Leawood\",\n    \"stateProvince\": \"KS\",\n    \"countryCode\": \"US\",\n    \"postalCode\": \"66206\"\n  }\n}'",
        "customLabel": ""
      },
      {
        "id": "Geh6TWy3YAKWtUl_coGBf",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/crypto/v1/external-addresses',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Accept': 'text/plain',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"accountNumber\": \"2179128455\",\n  \"title\": \"Jerry Penn onchain\",\n  \"blockchain\": \"etherium\",\n  \"address\": \"0x2222222222222222222222222222222222222222\",\n  \"tag\": \"test_ETH\",\n  \"beneficiary\": {\n    \"name\": \"Jerry Penn\",\n    \"addressLine1\": \"34 Howe Drive\",\n    \"city\": \"Leawood\",\n    \"stateProvince\": \"KS\",\n    \"countryCode\": \"US\",\n    \"postalCode\": \"66206\"\n  }\n});\n\nreq.write(postData);\n\nreq.end();"
      },
      {
        "id": "6kpoNOmow1vQuYTwuJijW",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"accountNumber\": \"2179128455\",\n  \"title\": \"Jerry Penn onchain\",\n  \"blockchain\": \"etherium\",\n  \"address\": \"0x2222222222222222222222222222222222222222\",\n  \"tag\": \"test_ETH\",\n  \"beneficiary\": {\n    \"name\": \"Jerry Penn\",\n    \"addressLine1\": \"34 Howe Drive\",\n    \"city\": \"Leawood\",\n    \"stateProvince\": \"KS\",\n    \"countryCode\": \"US\",\n    \"postalCode\": \"66206\"\n  }\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'text/plain',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"POST\", \"/crypto/v1/external-addresses\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "a6XPx5LmX44cZhN--tXJr",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/crypto/v1/external-addresses\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Accept\"] = \"text/plain\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = JSON.dump({\n  \"accountNumber\": \"2179128455\",\n  \"title\": \"Jerry Penn onchain\",\n  \"blockchain\": \"etherium\",\n  \"address\": \"0x2222222222222222222222222222222222222222\",\n  \"tag\": \"test_ETH\",\n  \"beneficiary\": {\n    \"name\": \"Jerry Penn\",\n    \"addressLine1\": \"34 Howe Drive\",\n    \"city\": \"Leawood\",\n    \"stateProvince\": \"KS\",\n    \"countryCode\": \"US\",\n    \"postalCode\": \"66206\"\n  }\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "fmPNodsQNsJSyZuAJJNBa",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/crypto/v1/external-addresses\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"accountNumber\": \"2179128455\",`+\"\n\"+`\n  \"title\": \"Jerry Penn onchain\",`+\"\n\"+`\n  \"blockchain\": \"etherium\",`+\"\n\"+`\n  \"address\": \"0x2222222222222222222222222222222222222222\",`+\"\n\"+`\n  \"tag\": \"test_ETH\",`+\"\n\"+`\n  \"beneficiary\": {`+\"\n\"+`\n    \"name\": \"Jerry Penn\",`+\"\n\"+`\n    \"addressLine1\": \"34 Howe Drive\",`+\"\n\"+`\n    \"city\": \"Leawood\",`+\"\n\"+`\n    \"stateProvince\": \"KS\",`+\"\n\"+`\n    \"countryCode\": \"US\",`+\"\n\"+`\n    \"postalCode\": \"66206\"`+\"\n\"+`\n  }`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"text/plain\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "GvbYb-XxXg8aAAHK3ybHL"
  },
  "results": {
    "languages": [
      {
        "id": "VVw-EG1caZm9nSwDN62Ez",
        "language": "200",
        "code": "{\n    \"id\": \"b4cc8ee7-ebff-4b65-875e-b4650074d081\",\n    \"accountNumber\": \"2179128455\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"title\": \"Jerry Penn onchain\",\n    \"blockchain\": \"ethereum\",\n    \"address\": \"0x2222222222222222222222222222222222222222\",\n    \"tag\": \"test_ETH\",\n    \"beneficiary\": {\n        \"name\": \"Jerry Penn\",\n        \"addressLine1\": \"34 Howe Drive\",\n        \"city\": \"Leawood\",\n        \"stateProvince\": \"KS\",\n        \"countryCode\": \"US\",\n        \"postalCode\": \"66206\"\n    },\n    \"lastModifiedAt\": \"2026-06-10T07:05:18.5089232Z\",\n    \"hasPendingChanges\": false\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "VVw-EG1caZm9nSwDN62Ez"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Unique identifier of the account from where the payment is sent to the external beneficiary",
        "": "Unique identifier of the account from where the payment is sent to the external beneficiary"
      },
      {
        "name": "title",
        "kind": "required",
        "type": "string",
        "description": "Human-readable label for the external wallet (for example, “John’s MetaMask Wallet”). Max 255 characters. This is like the name you put in your contact list in your phone.",
        "": "Human-readable label for the external wallet (for example, “John’s MetaMask Wallet”). Max 255 characters. This is like the name you put in your contact list in your phone."
      },
      {
        "name": "blockchain",
        "kind": "required",
        "type": "string",
        "description": "Blockchain network where payments will be sent (for example, Solana, Ethereum). Maximum 20 characters.",
        "": "Blockchain network where payments will be sent (for example, Solana, Ethereum). Maximum 20 characters."
      },
      {
        "name": "address",
        "kind": "required",
        "type": "string",
        "description": "Blockchain wallet address of the beneficiary (where funds will be sent). Maximum 255 characters.",
        "": "Blockchain wallet address of the beneficiary (where funds will be sent). Maximum 255 characters."
      },
      {
        "name": "tag",
        "kind": "optional",
        "type": "string",
        "description": "Tag/memo/destination tag if the blockchain requires it. Maximum 255 characters.",
        "": "Tag/memo/destination tag if the blockchain requires it. Maximum 255 characters."
      },
      {
        "name": "beneficiary",
        "kind": "required",
        "type": "object",
        "description": "The person or business that receives the payment",
        "": "The person or business that receives the payment",
        "children": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Full legal name of the beneficiary. Maximum 200 characters"
          },
          {
            "name": "addressLine1",
            "kind": "required",
            "type": "string",
            "description": "First line of the beneficiary’s physical address. Maximum 80 characters"
          },
          {
            "name": "addressLine2",
            "kind": "optional",
            "type": "string",
            "description": "Second line of the beneficiary’s physical address. Maximum 80 characters."
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Full name of the city where the beneficiary is located. Maximum 40 characters."
          },
          {
            "name": "stateProvince",
            "kind": "required",
            "type": "string",
            "description": "2-letter code for the state or province of the beneficiary. Maximum 2 characters"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code for the beneficiary's country. Maximum 2 characters."
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Postal or ZIP code of the beneficiary. Maximum 20 characters."
          }
        ],
        "schema": [
          {
            "name": "name",
            "kind": "required",
            "type": "string",
            "description": "Full legal name of the beneficiary. Maximum 200 characters"
          },
          {
            "name": "addressLine1",
            "kind": "required",
            "type": "string",
            "description": "First line of the beneficiary’s physical address. Maximum 80 characters"
          },
          {
            "name": "addressLine2",
            "kind": "optional",
            "type": "string",
            "description": "Second line of the beneficiary’s physical address. Maximum 80 characters."
          },
          {
            "name": "city",
            "kind": "required",
            "type": "string",
            "description": "Full name of the city where the beneficiary is located. Maximum 40 characters."
          },
          {
            "name": "stateProvince",
            "kind": "required",
            "type": "string",
            "description": "2-letter code for the state or province of the beneficiary. Maximum 2 characters"
          },
          {
            "name": "countryCode",
            "kind": "required",
            "type": "string",
            "description": "2-letter ISO country code for the beneficiary's country. Maximum 2 characters."
          },
          {
            "name": "postalCode",
            "kind": "required",
            "type": "string",
            "description": "Postal or ZIP code of the beneficiary. Maximum 20 characters."
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier of the external beneficiary record"
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number associated with the beneficiary",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format. Here it indicates what partner created and owns this beneficiary record.",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "Human-readable label for the wallet (for example, Eth, Sol, Ethereum)",
      "children": []
    },
    {
      "name": "blockchain",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain network where payments will be sent (for example, Solana, Ethereum)",
      "children": []
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain wallet address of the beneficiary",
      "children": []
    },
    {
      "name": "tag",
      "kind": "optional",
      "type": "string",
      "description": "Tag/memo/destination tag if the blockchain requires it",
      "children": []
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "object",
      "description": "The person or business that receives the payment",
      "children": [
        {
          "name": "name",
          "kind": "optional",
          "type": "string",
          "description": "Full legal name of the beneficiary"
        },
        {
          "name": "addressLine1",
          "kind": "optional",
          "type": "string",
          "description": "First line of the beneficiary’s physical address"
        },
        {
          "name": "addressLine2",
          "kind": "optional",
          "type": "string",
          "description": "Second line of the beneficiary’s physical address (nullable)"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Full name of the city where the beneficiary is located"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state or province of the beneficiary"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code for the beneficiary's country"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code of the beneficiary"
        }
      ]
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "hasPendingChanges",
      "kind": "optional",
      "type": "boolean",
      "description": "True if changes were made after creating the beneficiary. Otherwise false. When you create a new external beneficiary, always false.",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cryptov1external-addresses",
  "legacyHash": "hWri18PfMpeIMzY9Vh22f"
}
```
:::




[title] Get account wallet
[path] Onchain payments/APIs/

## API reference

Returns the wallet addresses created for a specific account. These wallet addresses represent onchain destinations where partners can receive funds on supported blockchains. You can filter on any or all of the query parameters.

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v1/accounts/{accountNumber}/account-addresses",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/crypto/v1/accounts/{accountNumber}/account-addresses",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "GvbYb-XxXg8aAAHK3ybHL",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/crypto/v1/accounts/142070856620/account-addresses' \\\n--header 'Accept: text/plain'",
        "customLabel": ""
      },
      {
        "id": "1ZB4f7PlR4Qj_NLj-aMHn",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n  'method': 'GET',\n  'url': 'https://sandbox.crbcos.com/crypto/v1/accounts/142070856620/account-addresses',\n  'headers': {\n    'Accept': 'text/plain'\n  }\n};\nrequest(options, function (error, response) {\n  if (error) throw new Error(error);\n  console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "EtljOi9XSCEoyTQBFoiOY",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/crypto/v1/accounts/142070856620/account-addresses\"\n\npayload = {}\nheaders = {\n  'Accept': 'text/plain'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "g-O1tocDJ9xR-0zHhBdfI",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/crypto/v1/accounts/142070856620/account-addresses\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"text/plain\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "holjR6jKbYN8FRlR-x53D",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/crypto/v1/accounts/142070856620/account-addresses\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"text/plain\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "GvbYb-XxXg8aAAHK3ybHL"
  },
  "results": {
    "languages": [
      {
        "id": "VVw-EG1caZm9nSwDN62Ez",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"83b3201d-a63f-4280-a825-b3940010194b\",\n            \"accountNumber\": \"142070856620\",\n            \"partnerId\": \"a6154099-f87f-4944-b974-b32f0108a29a\",\n            \"title\": \"ethereum\",\n            \"blockchain\": \"ethereum\",\n            \"address\": \"0x1111111111111111111111111111111111111111\",\n            \"tag\": \"\",\n            \"lastModifiedAt\": \"2025-11-13T00:58:36.838825Z\"\n        },\n        {\n            \"id\": \"44d0f07c-39a9-4975-bb94-b39400102786\",\n            \"accountNumber\": \"142070856620\",\n            \"partnerId\": \"a6154099-f87f-4944-b974-b32f0108a29a\",\n            \"title\": \"solana\",\n            \"blockchain\": \"solana\",\n            \"address\": \"11111111111111111111111111111111111111111111\",\n            \"tag\": \"\",\n            \"lastModifiedAt\": \"2025-11-13T00:58:48.982191Z\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 2,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": false\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "VVw-EG1caZm9nSwDN62Ez"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Unique identifier of the account whose wallet addresses will be retrieved",
        "": "Unique identifier of the account whose wallet addresses will be retrieved"
      }
    ],
    "queryParameters": [
      {
        "name": "address",
        "kind": "optional",
        "type": "string",
        "description": "Filter by a specific blockchain wallet address associated with the account ",
        "": "Filter by a specific blockchain wallet address associated with the account "
      },
      {
        "name": "tag",
        "kind": "optional",
        "type": "string",
        "description": "Tag/memo/destination tag if the blockchain requires it",
        "": "Tag/memo/destination tag if the blockchain requires it"
      },
      {
        "name": "blockchain",
        "kind": "optional",
        "type": "string",
        "description": "Blockchain network associated with the wallet (for example, Ethereum, Solana)",
        "": "Blockchain network associated with the wallet (for example, Ethereum, Solana)"
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier of the wallet address record"
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number under which the wallet address is registered",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format. Here it indicates what partner created this wallet.",
      "children": []
    },
    {
      "name": "title",
      "kind": "optional",
      "type": "string",
      "description": "Human-readable label for the wallet (for example, Eth, Sol, ethereum)",
      "children": []
    },
    {
      "name": "blockchain",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain network associated with the wallet (for example, Ethereum, Solana)",
      "children": []
    },
    {
      "name": "address",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain wallet address that can receive funds",
      "children": []
    },
    {
      "name": "tag",
      "kind": "optional",
      "type": "string",
      "description": "Tag/memo/destination tag if the blockchain requires it",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-v1accountsaccountnumberaccount-addresses",
  "legacyHash": "hWri18PfMpeIMzY9Vh22f"
}
```
:::




[title] Card rail
[path] Lending/Loan funding - payment rails/

## Pay out funds to cards

You can use the Card rail in Arix to pay out funds to the borrower's debit or credit card. This rail is used to supplement the RPPS rail to get a wider coverage of card networks.

```json
{
   "Rails": [
         {
     "RailType": "Card",
    "Priority": 1,
    "Amount": 1500,
    "CardFields": {
        "FirstName": "Chayav",
        "LastName": "Kesef",
        "CardNumber": "5454546498195454",
        "Cvv": "544",
        "ExpirationMonth": 6,
        "ExpirationYear": 26,
            "SubjectPhoneNumber": "19175554444",
             "SubjectEmail": "CK@noribbit.com"  ,           
             "SubjectAddress": {
                    "Street": "Strawberry Fields",
                    "City": "Liverpool",
                    "State": "NY",
                    "PostalCode": "11694",
                    "Country": "US"                
                    }                     
  }
         }
    ]
}
```

## Request parameters

| Attribute                               | Description                                                                                                         |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `CardNumber`<br /> <br />string         | The card number found on the front or back of a credit card.<br /><font color="#eb144c">Required </font>            |
| `FirstName`<br /> <br />string          | The borrower cardholder's first name on the credit card account.<br /><font color="#eb144c">Required </font>        |
| `LastName`<br /> <br />string           | The borrower cardholder last name on the credit card account.<br /><font color="#eb144c">Required </font>           |
| `CVV`<br /> <br />string                | The card verification value on the card.<br /><font color="#0F766E">Optional</font>                                 |
| `ExpirationMonth`<br /> <br />string    | Card expiration month 2-digits.<br /><font color="#eb144c">Required </font>                                         |
| `ExpirationYear`<br /> <br />string     | Card expiration year 2-digits.<br /><font color="#eb144c">Required </font>                                          |
| `SubjectPhoneNumber`<br /> <br />string | Cardholder phone number 10 digits (for example, 2015551234, no dashes).<br /><font color="#0F766E">Optional </font> |
| `SubjectEmail`<br /> <br />string       | Cardholder email address (for example me\@mailprovider.com).<br /><font color="#0F766E">Optional </font>            |
| `SubjectAddress`<br /> <br />Address    | Primary location details of cardholder.<br /><font color="#0F766E">Optional </font>                                 |

## PCI compliance

Payment Card Industry (PCI) standards ensure that sensitive card information is protected from fraudulent use. Arix processing complies with PCI standards.

1. Arix receives a request that includes the borrower's card number.&#x20;
2. This number is sent to a tokenization service that is Level 1 PCI-compliant.&#x20;
3. A token is sent back, which Arix stores.

When processing a card payment, Arix calls to detokenize the card numbers and sends the card information to our Push to Card processor.

Arix logs contain only masked card numbers.


[title] ACH rail
[path] Lending/Loan funding - payment rails/

## ACH rails

Arix uses ACH to push money into the account of a borrower, vendor, or creditor. Cross River must approve every ACH payment that is sent.

There are two types of ACH rails:

## COSACH

- Via 
- Funded next day

## COSACHSD

- Via Nacha
- Same day funding

```json
{
    "LoanId": "bbedd717-8589-4411-b6da-ac6e0097bf51",
    "Rails": [
        {
            "ACHFields": {
                "StandardEntryClassCode": "PPD",
                "TransactionType": "push",
                "ToRoutingNumber": "021214891",
                "ToAccountType": "Checking",
                "ToAccountName": "Anita Lon",
                "ToAccountNumber": "9999999999",
                "Description": "Loan"
            },
            "Id": "23b5fedb-bc20-41a0-a4ae-ac9300b4530e",
            "RailType": "COSACH",
            "Priority": 1,
            "Amount": 100
        }
    ]
}
```

## Request parameters

| Attributes                                 | Description                                                                                                                                                            |
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ToRoutingNumber`<br />string              | Receiving bank's routing number.<br />The value entered for this field is validated up front and it must be 9 digits long.<br /><font color="#eb144c">Required </font> |
| `ToAccountName`<br />string<br />          | Name on the customer account.<br />Limited to 22 characters.<br /><font color="#eb144c">Required </font>                                                               |
| `ToAccountNumber`<br />string              | Account number.<br />Limited to 17 digits.<br /><font color="#eb144c">Required </font>                                                                                 |
| `Description`<br />string                  | Mapped to identification field in the NACHA file.<br />Limited to 15 characters.<br /><font color="#eb144c">Required </font>                                           |
| `StandardEntryClassCode`<br />string<br /> | The type of account:<br />- PPD - consumer accounts<br />- CCD - corporate accounts<br /><font color="#eb144c">Required </font>                                        |
| `TransactionType`<br />string              | Push<br /><font color="#eb144c">Required </font>                                                                                                                       |
| `ToAccountType`<br />string                | Checking account or savings account.<br /><font color="#eb144c">Required </font>                                                                                       |

## Returns

ACH credits are not final as are wires. When Arix uses an ACH rail to process a loan, the rail can be returned from the Fed at any point in the process. Returns typically occur within several days of funding, but they can be generated up to 180 days from the funding date.&#x20;

Arix uses webhooks to update the funding status of a loan.

[title] Internal transfer (XPay) rail
[path] Lending/Loan funding - payment rails/

## Internal transfers

Internal transfers funds between Cross River and an MPL account within the Cross River Operating System (COS). These transfers are executed internally within Cross River and are immediate.

Once funds are in the MPL account, they can use the funds in any of these use cases:

- Fund 3rd parties to make the final payment to the borrower.
- ACH to merchants (Point-of-Sale payments).
- Recycle a loan for a repeat customer.

```json
{
    "LoanId": "bbedd717-8589-4411-b6da-ac6e0097bf51",
    "Rails": [
        {
        "XPayFields": {
            "ToAccountName": "",
            "ToAccountNumber": "2392433617",
            "Description": "A1B2C3"
            },
            "RailType": "COSXPay",
            "Priority": 1,
            "Amount": 7111.12
      }
    ]
}
```

## Request parameters

| Attribute                     | Description                                                                                                                                                                                |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ToAccountNumber`<br />string | The unique identifier of the receiver. This defaults to the COS account number.<br /><font color="#eb144c">Required </font><br />                                                          |
| `Description`<br />string     | A description of the transaction to be used by the partner to identify the transaction.<br />Minimum length of 1, maximum length of 30.<br /><font color="#eb144c">Required </font><br />  |
| `ToAccountName`<br />string   | Name of the account receiving the funds.<br /><font color="#eb144c">Required </font>                                                                                                       |


[title] Application decisioning
[path] Lending/

## Preapproval v2

PreApproval V2 provides an API set used to **validate**, **submit**, and **supplement** credit application data. These APIs are tailored, schema-driven, and real-time, designed to support the full lifecycle of credit applications under versioned credit policies.

Partners are required to send the **entire population of credit applications** through the PreApproval APIs, including those that are:&#x20;

- Funded&#x20;
- Approved but not accepted&#x20;
- Denied&#x20;
- Incomplete&#x20;
- Withdrawn&#x20;
- Prequalifications

Providing all application outcomes ensures that Cross River Bank (CRB) can perform the   statistical analyses required under regulatory guidance. This complete dataset enables monitoring for potential disparities, supports model governance, and ensures compliance with Fair Banking and fair lending obligations.

Each endpoint includes a schemaId in the URL, representing the data model and validation rules agreed upon between CRB and the partner for that schema version. Schema updates are requested through the change management process (via Jira) and updated on our schema builder UI.

:::hint{type="warning"}
**IMPORTANT**
To access the links below you must have the following IP addresses allowlisted:

Sandbox - 66.206.202.39 , 66.206.202.12

Production -66.206.202.62 , 66.206.202.15
:::

## Schema builder and data dictionary UI

The schema builder UI is an interface where partners can view and build together with Cross River, the data schema that will be used for their API, according to the partner-specific model.
Each schema defines the required and optional fields for the Application Submission and dry-run APIs, including data types, validation rules, and field descriptions.
Partners can use this interface to confirm their integration aligns with the agreed-upon schema before submitting applications under the finalized and approved schema.

::Image[Swagger: [https://lendingsandbox.crbcos.com/preapproval/swagger](https://lendingsandbox.crbcos.com/preapproval/swagger)]{src="https://app.archbee.com/api/optimize/4hvUOg5mU1sCngl0n0Has/ozULMQmaut3sicwFhmV3S_image.png" size="100" width="1575" height="826" position="center" caption="Pav2 Partner Schema example" darkWidth="1575" darkHeight="826" showCaption="true" indent="1"}

## Access to Schema UI

**Schema UI URL**: [https://lendingappsandbox.crbcos.com/preapproval/schemas](https://lendingappsandbox.crbcos.com/preapproval/schemas)

**Application UI:** [https://lendingappsandbox.crbcos.com/preapproval/applications](https://lendingappsandbox.crbcos.com/preapproval/applications)

Gaining access to the Preapproval v2 Schema UI is done via self-service on [Org management portal](docId\:C90JfVUQ2MwiRVdsAwxgr). Your IT Manager should have Admin access, and must add the following to your user:

- Role: **Lending Preapproval v2 ReadOnly**
- Partner: **Associate the partner created for Preapproval with your user&#x20;**

## API suite

An application in Pav2, is identified by the partner's **application\_id,&#x20;**&#x77;hich should be unique for each application in the partner's system.&#x20;

- Base URL for sandbox: [https://lendingsandbox.crbcos.com/preapproval](https://lendingsandbox.crbcos.com/preapproval)
- Base URL for production: [https://lending.crbcos.com/preapproval](https://lending.crbcos.com/preapproval)
- API scope for sandbox is: CosLending\:PreApproval\:stg
- API scope for production is: CosLending\:PreApproval\:prd

| API                                                                             | Description                                                                                                                                                   |
| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [POST /api/v2/applications/\{Partner Schema ID} ](docId\:PTX0F232EfVCVLbsYzT6I) | Post or update an application, including the final decision. You can call this multiple times, and we will only use the latest, according to application\_id. |
| **POST /api/v2/applications/\{Partner Schema ID}/dryrun**                       | This is identical to the above API, but is used only to test the validations and not actually submit the application.                                         |
| [Attachments by appID](docId\:IGXXXxmWhG0xi-eKGsVRd)                            | Post file attachments to an application. Attachments are sent in a zip file.                                                                                  |

**Notes:**

- During implementation, Cross River and the partner will agree on additional fields to be passed to Cross River based on the partner's unique operating model.
- Data types and schemas are available directly in the Schema UI, as well as descriptions and other goodies that will help you build your API integration.&#x20;
- Partners should ultimately send their final decision when using the API.
- The integrations and rules that run when sending in the PreApproval API are informational. They do not change the status of the application automatically.

## Integrations in PAV2

In PAV2, an **integration** is a configurable connection from a partner schema/application flow to another system or service. When a partner submits an application, PAV2 validates the application against the partner-specific JSON schema, loads the integrations configured for that schema, evaluates any “execute when” conditions, maps fields from the application into the integration’s expected parameters, and then executes the integration.

Integrations are intended to make PAV2 an orchestration point for lending workflows, rather than only a schema-validation and application-storage system. Examples can include compliance screening, loan origination, account/customer creation, decisioning, and reporting handoffs.



### How integrations are configured

- **Integration definition:** There is a hard set of integrations available in Pav2. Over time, we will add more integrations and integration types for our partners.&#x20;
- **Integration configuration:** CRB Users can configure the integration for a specific partner schema, map schema fields to the required integration parameters, and define when the integration should run.&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/4hvUOg5mU1sCngl0n0Has/w6Th7xDbIyB7QWHhksCPP_image.png" size="60" width="911" height="794" position="center" caption="Configuration mapping is per schema" darkWidth="911" darkHeight="794" showCaption="true"}

- **Validation:** PAV2 validates mappings against the partner schema. Invalid configurations should show field-level validation errors; some type conversions may be allowed with warnings depending on the integration parameter rules.
- **Enablement:** Integrations are enabled for schemas only after the configuration is valid and follows the schema lifecycle / approval rules.
- **Testing:&#x20;**&#x49;ntegrations should not run when running a dry-run, as this can incur unwanted costs and processes to be kicked off. To test connectivity and the integration, you may ask CRB to enable the integration temporarily in dry-run calls as well.&#x20;

### Runtime behavior

1. Partner submits an application to PAV2.
2. PAV2 authenticates the request and validates the payload against the relevant partner schema.
3. If schema validation fails, PAV2 returns validation errors and does not run downstream integrations.
4. If validation succeeds, PAV2 loads the enabled integrations for that partner schema and evaluates the "execute when" condition for each enabled integration.
5. If the condition is true, Pav2 calls the integration and returns the result in the Submit Application API response. The responses are in the integration\_results array.

::Image[]{src="https://api.archbee.com/api/optimize/4hvUOg5mU1sCngl0n0Has/9UMbbMxFNvRVq_KbLyMYB_image.png" size="60" width="631" height="309" position="center" caption="Example of Create Loan integration response, within the Pav2 response" darkWidth="631" darkHeight="309" showCaption="true"}

### Current and planned examples

- **Internal list screening:** Runs internal screening logic and returns compliance-related results.
- **Arix loan origination:** Maps PAV2 application fields into the Arix loan dictionary and calls Arix to create a loan, so that the partner does not need to maintain two separate data dictionaries. This replaces the need for [Create and update a loan](docId\:v8cArTCqMmQrYCIYHUf7f)&#x20;
- **COS customer/account opening:** Potential integration path for creating customers and accounts as part of credit card or embedded finance flows.
- **Decisioning / data enrichment:** Future integrations may include vendors such as 2nd- look decision vendors, credit bureau pulls, KYC/CIP, fraud, or other waterfall-style services.

## Cross River rules on preapproval

When posting an application using the Preapproval API, Cross River can check the data against a set of regulatory rules and return the rule results in the API response. The response body includes rule results in the `rule_results` object, which includes information about the rule and the data used when running the rule. If one of the rules fails on Preapproval, you can assume it will also fail in Arix. Speak to your \{\{}}, if you would like rules to run in preapproval.

- Currently, there are no webhooks in preapproval.
- The results of the rules are returned synchronously in the response.
- Cross River Ops cannot manually override the result of a rule in pre-approval, as these results are purely informational for our partners to use.
- Pre-approval rules do not alter the status of an application in pre-approval sent in by an MPL.

The following is an example of a `rule_results` object that contains the Cross River Internal List Rule.

```json
"rule_results": [
            {
                "status": "Success",
                "rule_process_date": "2023-09-06",
                "rule_results": [
                    {
                        "ruleId": "92bc95b5-fa3c-468a-b28b-b06800bdb9d7",
                        "version": "v1",
                        "ruleName": "Internal List Check",
                        "ruleDescription": "Borrower information should not be on Bank's Internal List",
                        "passed": true,
                        "data": "Anita Loan 693952XXX,Scrooge McDuck 014512994,UNONX7ENMOKLDCOXSEAUXW28SERFP3XNELOLPL2KOPNZCQ9N8Y )}k;b,)Sv8jco_78(yh^eu4|B:",
                        "resultInfo": null
                    }
                ]
            }
        ]

```


[title] NetFunding adjustment
[path] Lending/Loan funding - payment rails/

You can update the loan informatioan after a loan was partially funded. Update the relevant parameters from the list below. Any loan funding information that you changed, shows with the word Adjusted before it.

| Attributes                                                                                         | Description                                                                                                            |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `AdjustmentActionType`<br />*LoanAdjustmentAction*                                                 | Type of update made to the loan.<br /><font color="#eb144c">Required </font>                                           |
| `ActionAmount`<br />decimal<br />                                                                  | Dollar amount of the change to the loan.<br /><font color="#eb144c">Required</font>                                    |
| `Description`<br />string                                                                          | Description of the reason for the loan adjustment.<br />1 - 30 characters.<br /><font color="#eb144c">Required </font> |
| `UpdatedBy`<br />string<br />                                                                      | By whom the information was updated.<br /><font color="#0F766E">Optional </font>                                       |
| `UpdatedOn`<br />string                                                                            | Date/ time the information was updated<br /><font color="#0F766E"></font>                                              |
| `LoanId`<br />string                                                                               | Unique identifier of the loan.<br /><font color="#0F766E">Optional </font>                                             |
| `AdjustedLoanAmount`<br />decimal *or null*                                                        | Adjusted gross dollar amount requested.<br /><font color="#0F766E"> </font>                                            |
| `AdjustedNetFunding`<br />decimal *or null*                                                        | Adjusted net dollar amount to fund.<br /><font color="#0F766E"></font>                                                 |
| `AdjustedOriginationFee`<br />decimal *or null*                                                    | Adjusted charge to the borrower for the loan..<br /><font color="#0F766E">Optional</font>                              |
| <font color="#0c121d">Optional </font><br />`AdjustedCurrentMonthlyPayment`<br />decimal *or null* | Adjusted monthly payment amount<br /><font color="#0F766E">Optional </font>                                            |
| `AdjustedFinalPaymentDate`<br />DateTime *or null*                                                 | Adjusted date due for final loan payment.<br />The format must be: yyyy-mm-dd.<br /><font color="#0F766E"></font>      |
| `AdjustedFinalPayment`<br />decimal *or null*                                                      | Adjusted dollar amount of final payment.<br /><font color="#0F766E">Optional </font>                                   |
| `AdjustedFinanceCharge`<br />decimal *or null*                                                     | Adjusted finance charge paid by the borrower.<br /><font color="#0F766E"></font>                                       |
| `AdjustedTotalPayments`<br />decimal *or null*                                                     | Adjusted total paid by the borrower after all the payments have been made.<br /><font color="#0F766E">Optional </font> |
| `AdjustedAPR`<br />decimal *or null*                                                               | Adjusted annual percentage interest rate, as a percent.<br /><font color="#0F766E">Optional </font>                    |

```json
{
   "FundingInfoUpdate":{
      "Rails":[
         {
            "AdjustmentActionFields":{
               "AdjustmentActionType":"Prepayment",
               "ActionAmount":300,
               "Description":"customer payment"
            },
            "RailType":"AdjustmentAction",
            "Priority":1,
            "Amount":300.0
         }
      ]
   }
}

```


[title] Loans by loan type
[path] Lending/Purchasing a loan/

## Retrieve loan details by loan type

:::BlockQuote
**GET** /selling/api/loans/\{loanType}
:::

This API retrieves loan details based on **loan type**, which must be **HFS, LTHFS, or RET**

The loan type is specified in the URL path (e.g., /selling/api/loans/HFS). Users can refine their search with multiple query parameters including issuing bank, investor, loan status, search filters, pagination controls, sorting options, and date filters (funding date, purchase date, seasoning start date, etc.).&#x20;

Additionally, results can be exported as a CSV file for easy data handling.

### API request attributes

| Parameter                  | Description                                                                                                                                                   |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `export=csv`               | Downloads the loan search results as a CSV file                                                                                                               |
| `investor`                 | Filter loans by investor name or ID                                                                                                                           |
| `issuingBank`              | Filter loans by issuing bank name                                                                                                                             |
| `status`                   | Filter by loan sale status (pending, inseasoning, readyforpurchase, purchaserequested, removedfromseasoning, purchased, canceled, awaitinginvestorallocation) |
| `search`                   | Free text search across loan fields (loan number, origination ID, etc.)                                                                                       |
| `pageNumber`               | Current page number for pagination (default: 1)                                                                                                               |
| `pageSize`                 | Number of records per page (default: 10)                                                                                                                      |
| `sortPropertyName`         | Field name to sort results by (default: "number")                                                                                                             |
| `sortDirection`            | Sort order: "asc" for ascending or "desc" for descending (default: "asc")                                                                                     |
| `fundedDate`               | Filter loans by exact funded date                                                                                                                             |
| `purchaseDate`             | Filter loans by exact purchase date                                                                                                                           |
| `fromFundedDate`           | Filter loans funded on or after this date                                                                                                                     |
| `toFundedDate`             | Filter loans funded on or before this date                                                                                                                    |
| `fromPurchaseDate`         | Filter loans purchased on or after this date                                                                                                                  |
| `toPurchaseDate`           | Filter loans purchased on or before this date                                                                                                                 |
| `fromOriginalPurchaseDate` | Filter loans with original purchase date on or after this date                                                                                                |
| `toOriginalPurchaseDate`   | Filter loans with original purchase date on or before this date                                                                                               |

### Sample response

```json
{
  "loans": [
    {
      "id": "735dfae0-c26a-4f75-9afa-b26c00468706",
      "number": "00b153ef-e8cb-4b76-aea7-c29879a69ad3",
      "originationStatus": "Funded",
      "saleStatus": "ReadyForPurchase",
      "mplId": "TST",
      "issuer": "CRB",
      "originationId": "",
      "seasoningStart": "2025-01-21",
      "amount": 7001.8,
      "adjustedAmount": 7000.5,
      "interestRate": 0.3,
      "interest": 4.02,
      "fees": 70.01,
      "total": 7075.83
    },
```


[title] Total purchase amount
[path] Lending/Purchasing a loan/

## Calculate expected total loan purchase

:::BlockQuote
**POST&#x20;**/selling/api/loans/purchase/total
:::

Calculate the expected total purchase amount **before&#x20;**&#x65;xecuting the purchase.

### Sample request

```json
{
  "date": "2025-01-01",
  "loanType": 1,
  "issuingBank": "CRB",
  "mplId": "YourMPLId",
  "investorId": "[YourInvestorId]",
  "dateFilter": {
    "dateType": "[FundedDate],
    "fromDate": "2026-05-14T06:40:03:854Z",
    "toDate": "2026-05-14T06:40:03:854Z"
  },
  "purchaseAccountNumber": "2392433617"
}
```

### Attributes description

| **Parameter**           | **Description**                                                                                              |
| ----------------------- | ------------------------------------------------------------------------------------------------------------ |
| `date`                  | Purchase date in YYYY-MM-DD format. Must be a Federal Reserve business day. (required).                      |
| `loanType`              | Loan type: 1 = HFS (Held for Sale), 2 = LTHFS (Long-Term Held for Sale), 3 = RET (Retained) (required).      |
| `issuingBank`           | Issuing bank identifier (e.g., "CRB") (required).                                                            |
| `mplId`                 | Your Marketplace Lender identifier (required).                                                               |
| `investorId`            | Your Investor identifier (required).                                                                         |
| `purchaseAccountNumber` | Specific purchase account to use. If omitted, the default account for your investor will be used (optional). |

### Sample response

```json
{
  "totalAmount": 1523456.78
}
```


[title] Upload CSV and end seasoning
[path] Lending/Purchasing a loan/Transition LTHFS loans/

## What this process does&#x20;

This workflow lets you use the Selling UI to upload a list of loans using a CSV file, review the uploaded results, and complete the final action needed to move those loans from `InSeasoning` status to `ReadyForPurchase` status.

## Before you begin

- Confirm you have the correct set of Arix loan IDs.
- Prepare a CSV file with a single column header named loanId.
- Make sure each row contains one Arix ID in GUID format.
- Remove extra columns, notes, formulas, and blank rows before upload.

## CSV file format

Your CSV file must contain exactly one column named loanId. Each value below the header should be a single Arix ID in GUID format.

loanId123e4567-e89b-12d3-a456-426614174000987f6543-a21b-45c6-b789-123456789abc550e8400-e29b-41d4-a716-446655440000

**Best practice**: Save the file as a standard .csv file encoded normally by your spreadsheet tool, and verify that the header is spelled exactly loanId using a lowercase l and uppercase I.

### Sample file

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/v2CG3ZinSG1O-vS6XfTYC_sample-purchase-file.csv" label="Sample Purchase file.csv"}

## Steps in the Selling UI

1. Open the Selling UI and navigate to the loan upload area.
2. Select the option to upload a CSV file.
3. Choose your prepared CSV file.
4. Start the upload and wait for the file to finish processing.
5. Review the uploaded loans to confirm the expected records were included.
6. Apply any needed filters to locate the uploaded loans in the current view.
7. Click the **End Seasoning** button at the **bottom right** of the page.
8. After you click **End Seasoning**, the loans move to `ReadyForPurchase`.
9. Refresh the filter and add `ReadyForPurchase`. You will now see loans that are ready for purchase.

## Quick reference

| Item         | Requirement                                   | Example                                 |
| ------------ | --------------------------------------------- | --------------------------------------- |
| CSV header   | Must be exactly loanId                        | loanId                                  |
| ID format    | One Arix ID per row in GUID format            | 123e4567-e89b-12d3-a456-426614174000    |
| Final action | Use the **End Seasoning** button              | Button located at the bottom right      |
| Final status | Loans should appear in **Ready for Purchase** | Refresh filters and include that status |

## Verification

- Confirm the file uploaded without errors.
- Confirm the uploaded list contains the expected loan IDs.
- Confirm the loans move to `ReadyForPurchase` after the end-seasoning action.
- Confirm your refreshed filter shows the updated loans.

## Best practices

- Keep the CSV limited to only the loans you intend to process.
- Double-check for copied spaces before or after loan IDs.
- Use plain values only; do not include formulas or formatting-dependent cells.
- Save a local copy of the CSV used for each upload for audit and tracking purposes.

[title] Deprecated APIs
[path] Lending/

This section is dedicated to deprecated Lending APIs and technology. As we continuously enhance our offerings, we phase out legacy and outdated systems in favor of more advanced solutions. Although these old technologies will eventually be removed, we strongly encourage our customers to transition from legacy platforms well in advance of their complete discontinuation. The subsequent pages contain information on these deprecated APIs.

- [Application Pav1 - (legacy)](docId\:cLAKmWjP5vvaSKfvbaoN7)&#x20;
- [Purchase reports](docId\:ADCEM7eKL4vK5o4jH54Xx)&#x20;

[title] Servicing reports
[path] Lending/

## Daily servicing report

Cross River requires that an MPL, or the Servicer used by the MPL, to provide daily all servicing events for the loans issued by Cross River.

The servicing report contains a record for every loan every day. It is a snapshot of each loan. The headers are the same as those listed in the data dictionary.

The table below is the reference information for servicing.

## File conventions

- File format: CSV.
- File transport mechanism: SFTP (SSH; supported public key algorithms RSA, sha2 521, sha2 384, sha 256)
- File Name: MplId\_ServicingTape\_yyyymmdd.csv,where yyyymmdd is the date of file generation
  - MPlId\:This is internal to CRB. Please check with the data team [dataengineers@crossriver.com](mailto\:dataengineers@crossriver.com) for the value to to be used in the filename
- File location: \Prod\MPL\LoanServicingTapes\MplId\_ServicingTape\_yyyymmdd.csv
- Report date: should match the date of the filename
- Report data: should be from the day prior to the report date

:::hint{type="info"}
**Example**
The following shows the relationship between these three data points:

- A file with name : MplId\_ServicingTape\_20231225.csv. File is generated on the 12/25 for the previous day’s data.
- Report Date: Should be 2023-12-25
- Report data: Loan positions/standing as of end of 2023-12-24
:::

## Dictionary updates

| Attributes                                                              | Action  | Date             |
| ----------------------------------------------------------------------- | ------- | ---------------- |
| `ModStartDate, ModEndDate`                                              | Added   | April 29, 2026   |
| Introducing V3                                                          | Added   | March 3, 2026    |
| `IssuingBank`                                                           | Added   | October 21, 2021 |
| `ForbearanceDuration`<br />`ForbearanceDurationType`<br />`ExtraFields` | Added   | June 16, 2021    |
| `ForbearanceDurationMonths`                                             | Removed | June 16, 2021    |

## Servicing Tape Standard V3

### Identification

| Field Name      | Description                                       | Format       | Required (R)/ Optional (O) | Notes/Example (as needed)                                                                 |
| --------------- | ------------------------------------------------- | ------------ | -------------------------- | ----------------------------------------------------------------------------------------- |
| Platform        | Name of MPL                                       | Text         | R                          |                                                                                           |
|                 |                                                   |              |                            |                                                                                           |
| MplAcctID       | Loan Number                                       | Alphanumeric | R                          |                                                                                           |
| Servicer        | Name of Servicer                                  | Text         | R                          |                                                                                           |
| ServicerLoanNum | Servicer Loan Number (if applicable or different) | Alphanumeric | R                          | `Provide the loan number of the servicer if it is different from the loannumber in Arix.` |

 

### Sale/ Transfers

| Field Name                 | Description                                                                                                           | Format            | Required (R)/ Optional (O) | Notes/Example (as needed)                                             |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------- | -------------------------- | --------------------------------------------------------------------- |
| BeginningSubpoolId         | SubpoolId as or prior report date; on day of transfer, this field will show the SubpoolId prior to the transfer       | Alphanumeric      | O                          | `For subpool transfers only`                                          |
| EndingSubpoolId            | SubpoolId as or current report date; on day of transfer, this field will show the SubpoolId after the transfer        | Alphanumeric      | O                          | For subpool transfers only                                            |
| PriorOwner                 | Owner as of prior report date; on day of transfer, this field will show the owner prior to the transfer               | Alphanumeric      | R                          | CRB-HFS, CRB-LTHFS, CRB-Retained, Other owner names or investor codes |
| CurrentOwner               | Owner on current report date; on day of transfer, this field will show the owner after the transfer                   | Alphanumeric      | R                          | CRB-HFS, CRB-LTHFS, CRB-Retained, Other owner names or investor codes |
| CurrentTransferedInterest  | Interest Transferred in the sale or subpool transfer                                                                  | Numeric           | O                          | For transfer only                                                     |
| CurrentTransferedPrincipal | Principal Transferred in the sale or subpool transfer                                                                 | Numeric           | O                          | For transfer only                                                     |
| CurrentTransferDate        | Date loan is sold/ transferred to new owner or subpool; this field should only be populated on the day after transfer | Date\[yyyy-mm-dd] | O                          | For transfer only                                                     |

 

### Loan Terms

| Field Name                   | Description                                                                                                                                                                                                                                                                | Format                        | Required (R)/ Optional (O) | Notes/Example (as needed)                                                                                 |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------- |
| ContractDate                 | Note Date                                                                                                                                                                                                                                                                  | Date\[yyyy-mm-dd]             | R                          |                                                                                                           |
| FirstFundedDate              | Date of Funding; for loans that are disbursed on multiple days, FirstFundedDate is the date of first disbursement and MostRecentFundedDate is the date of the most recent disbursement.  For loans funded in a single disbursement, FirstFundedDate = MostRecentFundedDate | Date\[yyyy-mm-dd]             | R                          | Yes for multi draws.<br />Not required for single draw                                                    |
| MostRecentFundedDate         | Date of most recent disbursement; if loan is funded in a single disbursement, this is the same as FirstFundedDate                                                                                                                                                          | Date\[yyyy-mm-dd]             | R                          |                                                                                                           |
| Boarding Date                | Date the loan is boarded to the servicing system                                                                                                                                                                                                                           | Date\[yyyy-mm-dd]             | R                          |                                                                                                           |
| OriginalMaturityDate         | Date of final loan maturity, per the loan agreement                                                                                                                                                                                                                        | Date\[yyyy-mm-dd]             | R                          |                                                                                                           |
| CurrentMaturityDate          |  In case of no modifications this should equal OriginalMaturityDate. If loan is modified this should reflect the modified maturity date                                                                                                                                    | Date\[yyyy-mm-dd]             | R                          |                                                                                                           |
| Vintage                      | Month of Note                                                                                                                                                                                                                                                              | Date – numeric<br />\[yyyymm] | O                          |                                                                                                           |
| OriginalLoanAmount           | Gross Loan Amount                                                                                                                                                                                                                                                          | Numeric                       | R                          |                                                                                                           |
| OriginalFundedAmount         | Net Funding to Borrower                                                                                                                                                                                                                                                    | Numeric                       | R                          | Up to 2 decimals                                                                                          |
| CurrentDisbursementAmount    | Aggregated total of all disbursed amounts so far for this loan. For loans funded in a single disbursement, this equals loan amount.                                                                                                                                        | Numeric                       | R                          | Required for cumulative disbursed amounts for multidraws. If single draw loan, this is optional           |
| CurrentDisbursementCount     | Count of disbursements funded for this loan; for loans funded in a single disbursement, this is 1.                                                                                                                                                                         | integer                       | R                          | Required for multidraws<br />If single draw this will be 1                                                |
| OriginalScheduledPeriodicPmt | Borrower's Required Periodic Payment per the original amortization schedule                                                                                                                                                                                                | Numeric                       | R                          | Up to 2 decimals                                                                                          |
| CurrentScheduledPeriodicPmt  | Borrower's Required Periodic Payment per the current amortization schedule                                                                                                                                                                                                 | Numeric                       | R                          | Required for modified loans, Optional else.                                                               |
| OriginalScheduledFinalPmt    | Borrower's Required Final Payment per the original amortization schedule                                                                                                                                                                                                   | Numeric                       | O                          |                                                                                                           |
| CurrentScheduledFinalPmt     | Borrower's Required Final Payment per the current amortization schedule                                                                                                                                                                                                    | Numeric                       | R                          | Required for modified loans, Optional else.                                                               |
| PaymentFrequency             | Frequency of regularly scheduled payments, per the amortization schedule; monthly, bimonthly, weekly, biweekly                                                                                                                                                             | Text                          | R                          | monthly, bimonthly, weekly, biweekly                                                                      |
| OriginalInterestRate         | Original Note Rate                                                                                                                                                                                                                                                         | Numeric                       | R                          | Up to 2 decimals                                                                                          |
| CurrentInterestRate          | Current Interest Rate<br />If not modified, then this should equal OriginalInterestRate                                                                                                                                                                                    | Numeric                       | R                          |                                                                                                           |
| InterestAccrualMethod        |                                                                                                                                                                                                                                                                            | Alphanumeric                  | R                          | Actual 360, Actual 365                                                                                    |
| OriginalBorrowerState        | State in which the loan was originated                                                                                                                                                                                                                                     | Alpha (xx)                    | O                          | ie. NY                                                                                                    |
| CurrentBorrowerState         | State where the borrower currently resides                                                                                                                                                                                                                                 | Alpha (xx)                    | R                          | `Required if client moved.`                                                                               |
| OriginalFicoScore            | Fico at origination                                                                                                                                                                                                                                                        | Numeric                       | R <br />                   | Required if client uses Fico score.  Otherwise no need                                                    |
| OriginalFicoScoreDate        | Date that FICO was pulled at origination                                                                                                                                                                                                                                   | Date\[yyyy-mm-dd]             | R <br />                   | `Required if client uses Fico score.  Otherwise no need`                                                  |
| OriginalVantageScore         | Vantage Score at origination                                                                                                                                                                                                                                               | Numeric                       | R                          | Yes if client uses Vantage score.  Otherwise no need                                                      |
| OriginalVantageScoreDate     | Date that Vantage Score was pulled at origination                                                                                                                                                                                                                          | Date\[yyyy-mm-dd]             | R                          | Required if client uses Vantage score.  Otherwise no need                                                 |
| UpdatedFicoScore             | Last FICO score pulled; should only be populated if new FICO was pulled                                                                                                                                                                                                    | Numeric                       | R                          | Required if updated                                                                                       |
| UpdatedFicoScoreDate         | Date of Last FICO score pull ; should only be populated if new FICO was pulled                                                                                                                                                                                             | Date\[yyyy-mm-dd]             | R                          | Required if updated                                                                                       |
| UpdatedVantageScore          | Last Vantage score pulled; should only be populated if new Vantage score was pulled                                                                                                                                                                                        | Numeric                       | R                          | Required if client uses Vantage score.  Otherwise no need                                                 |
| UpdatedVantageScoreDate      | Date of Last Vantage score pull; should only be populated if new Vantage score was pulled                                                                                                                                                                                  | Date\[yyyy-mm-dd]             | R                          | Required if client uses Vantage score.  Otherwise no need                                                 |
| PreDTIExMortgage             | DTI excluding Mortgage pre-loan                                                                                                                                                                                                                                            | Numeric (Decimal)             | O                          |                                                                                                           |
| PreDTIInMortgage             | DTI including Mortgage pre-loan                                                                                                                                                                                                                                            | Numeric (Decimal)             | O                          |                                                                                                           |
| PreDTIDate                   | DTI date pulled pre-loan                                                                                                                                                                                                                                                   | Date\[yyyy-mm-dd]             | O                          |                                                                                                           |
| PostDTIDate                  | DTI date pulled post-loan                                                                                                                                                                                                                                                  | Date\[yyyy-mm-dd]             | O                          |                                                                                                           |
| PostDTIExMortgage            | DTI excluding Mortgage post-loan                                                                                                                                                                                                                                           | Numeric (Decimal)             | O                          |                                                                                                           |
| PostDTIInMortgage            | DTI including Mortgage post-loan                                                                                                                                                                                                                                           | Numeric (Decimal)             | O                          |                                                                                                           |
| OriginalCreditGradeInternal  | Internally Assigned Credit Rating, (loan grade)                                                                                                                                                                                                                            | Numeric or Alphanumeric       | R                          | Required- if applicable                                                                                   |
| CurrentCreditGradeInternal   |                                                                                                                                                                                                                                                                            | Numeric or Alphanumeric       | R                          | Required- if applicable                                                                                   |
| OriginationFeePct            | Origination Fee %                                                                                                                                                                                                                                                          | Numeric                       | O                          | Up to 2 decimals (ex: 1.25% )                                                                             |
| OriginationFeeAmt            | Origination Fee $                                                                                                                                                                                                                                                          | Numeric                       | O                          | Up to 2 decimals                                                                                          |
| APR                          | Annual Percentage Rate                                                                                                                                                                                                                                                     | Numeric                       | R                          | Up to 3 decimals  ( ex: 8.99% )                                                                           |
| OriginalTerm                 | Number of Months to Pay Loan Before Maturity at origination                                                                                                                                                                                                                | Numeric                       | R                          |                                                                                                           |
| RemainingTerm                | Number of months remaining to maturity                                                                                                                                                                                                                                     |                               | R                          |                                                                                                           |
| OriginalNumScheduledPayments | Number of  Periodic Payments to maturity at origination                                                                                                                                                                                                                    | Numeric                       | R                          | Required for some loans with NN/NY.  Otherwise it is same as Term if payment frequency is monthly.        |
| CurrentNumPaymentsScheduled  | Number of  Remaining Periodic Payments to maturity                                                                                                                                                                                                                         |                               | R                          | Required for some loans with NN/NY.  Otherwise it is same as currentTerm if payment frequency is monthly. |

 

### Activity 

| Field Name                    | Description                                                                                                                           | Format            | Required (R)/ Optional (O) | Notes/Example (as needed)                                             |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | -------------------------- | --------------------------------------------------------------------- |
| ReportDate                    | this should be current date; and all balances and running monthly totals should be as of prior day                                    | Date\[yyyy-mm-dd] | R                          | ie. Reporting date should be 3/1/2026 for Feb Loan Summary            |
| BeginningPrincipalBalance     | Beginning principal loan balance for prior day                                                                                        | Numeric           | R                          | Up to 2 decimals / Should equal previous day ending principal balance |
| BeginningTotalBalance         | Beginning Principal + Interest + Fees loan balance for prior day                                                                      | Numeric           | O                          | Up to 2 decimals                                                      |
| BeginningBalancePostChargeOff | Beginning Principal balance for prior day after Charge Off.  This balance should exclude the charged off amount (if any)              | Numeric           | O                          | Up to 2 decimals                                                      |
| EndingPrincipalBalance        | Ending principal loan balance for prior day                                                                                           | Numeric           | R                          | Up to 2 decimals                                                      |
| EndingTotalBalance            | Ending Principal + Interest + Fees loan balance for prior day                                                                         | Numeric           | O                          | Up to 2 decimals                                                      |
| EndingBalancePostChargeOff    | Ending Principal balance for prior day after Charge Off.  This balance should exclude the charged off amount (if any)                 | Numeric           | R                          | Up to 2 decimals                                                      |
| PeriodPrincipalPmt            | Principal payments received during the current month; running monthly total                                                           | Numeric           | R                          | Up to 2 decimals                                                      |
| PeriodPrincipalAdj            | Small balance adjustments made to the loan balance during the current month; running monthly total                                    | Numeric           | R                          | Up to 2 decimals                                                      |
| PeriodPrincipalPmtScheduled   | Scheduled Principal payments received during the current month; running monthly total                                                 | Numeric           | R                          |                                                                       |
| PeriodPrincipalPmtPrepaid     | Prepay (non-scheduled) Principal received during the current month; running monthly total                                             | Numeric           | R                          |                                                                       |
| PeriodInterestPmt             | Interest payments received during the current month; running monthly total                                                            | Numeric           | R                          | Up to 2 decimals                                                      |
| PeriodInterestPmtScheduled    | Scheduled Interest payments received during the current month; running monthly total                                                  | Numeric           | R                          |                                                                       |
| PeriodLateFeeAssessed         | Amount of Late Fees Charged ; running monthly total                                                                                   | Numeric           | O                          |                                                                       |
| PeriodLatefeePaid             | Amount of Late Fees Paid; running monthly total                                                                                       | Numeric           | R                          | Up to 2 decimals                                                      |
| PeriodOtherFeesAssessed       | Amount of Other Fees (excluding NSF or Late Fees) Assessed; running monthly total                                                     | Numeric           | O                          |                                                                       |
| PeriodOtherFeesPaid           | Amount of Other Fees (excluding NSF or Late Fees) Paid; running monthly total                                                         | Numeric           | R                          |                                                                       |
| PeriodNsfAssessed             | Amount of Insufficient Funds Charged; running monthly total                                                                           | Numeric           | O                          |                                                                       |
| PeriodNsfPaid                 | Amount Paid for Insufficient Funds  (NSF); running monthly total                                                                      | Numeric           | R                          | Up to 2 decimals                                                      |
| LastPaymentReceivedDate       | Day of month the last borrower payment was received                                                                                   | Date\[yyyy-mm-dd] | R                          |                                                                       |
| NextPaymentDueDate            | Next Payment Due Date                                                                                                                 | Date\[yyyy-mm-dd] | R                          |                                                                       |
| NextPrincipalDueDate          | Next Principal Due Date                                                                                                               | Date\[yyyy-mm-dd] | R                          | Required if principal payment deferred but need to pay interest first |
| NextInterestDueDate           | Next Interest Due Date                                                                                                                | Date\[yyyy-mm-dd] | R                          | Required if principal payment deferred but need to pay interest first |
| ChargeOffDate                 | Date Loan is Charged off Book                                                                                                         | Date\[yyyy-mm-dd] | R                          |                                                                       |
| ChargedOffPrincipalAmt        | Total Principal Charged off during current month; this should only be populated during the month that the Charge off occurs           | Numeric           | R                          | Up to 2 decimals                                                      |
| ChargedOffInterestAmt         | Total Interest Charged off / reversed during current month; this should only be populated during the month that the Charge off occurs | Numeric           | O                          | Up to 2 decimals                                                      |
| InterestAccruedTotal          | Interest accrued but not collected as of prior day                                                                                    | Numeric           | R                          | Up to 2 decimals                                                      |
| CumulInterestPmtLTD           | Total interest payment received from the borrower since inception                                                                     | Numeric           | R                          | Up to 2 decimals                                                      |
| CumulPrincipalPmtLTD          | Total principal payment received from the borrower since inception                                                                    | Numeric           | O                          |                                                                       |
| CumulPrincipalPmtPrepaidLTD   | Total prepay principal received from the borrower since inception                                                                     | Numeric           | O                          |                                                                       |
| PrincipalRecoveredAmt         | Principal amount recovered after charge off; life to date                                                                             | Numeric           | R                          | Up to 2 decimals                                                      |
| InterestRecoveredAmt          | Interest amount recovered after charge off; life to date                                                                              | Numeric           | R                          | Up to 2 decimals                                                      |
| LateFeeRecovered              | Late Fee amount recovered after charge off; life to date                                                                              | Numeric           | R                          | Up to 2 decimals                                                      |
| NsfFeeRecovered               | NSF Fee amount recovered after charge off; life to date                                                                               | Numeric           | R                          | Up to 2 decimals                                                      |
| OtherFeesRecovered            | Other Fee (excluding Late Fees or NSF Fees) amount recovered after charge off; life to date                                           | Numeric           | R                          |                                                                       |
| AverageDailyBalance           | Average Loan Outstanding for the Month                                                                                                | Numeric           | R                          | Up to 2 decimals                                                      |

 

### Loan Status 

| Field Name            | Description                                                                                                                                                                                                                                                                                                                                                                                                              | Format            | Required (R)/ Optional (O) | Notes/Example  (as needed)                                     |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- | -------------------------- | -------------------------------------------------------------- |
| LoanStatus            | Payment Status of the Loan:<br />Current = 0 days past due<br />InGracePeriod = 1 thru grace period days past due<br />Delinquent = grace period + 1 thru charge off days past due<br />ChargedOff = loan charged off<br />Forebearance = loan is in forbearance / deferment status<br />Bankruptcy = loan in bankruptcy<br />Matured = loan paid off on normal amortization schedule<br />PaidOff = loan paid off early | Text              | R                          | Client might have different codes. Please share those as well. |
| DaysPastDue           | Number of Days Past Due- Total                                                                                                                                                                                                                                                                                                                                                                                           | Numeric           | R                          |                                                                |
| DelinquencyStartDate  | Date the loan entered the "Delinquent" status                                                                                                                                                                                                                                                                                                                                                                            | Date\[yyyy-mm-dd] | O                          |                                                                |
| PastDuePrincipalAmt   | Amount of Principal Payment(s) Past Due                                                                                                                                                                                                                                                                                                                                                                                  | Numeric           | R                          | Up to 2 decimals                                               |
| PastDueInterestAmount | Amount of Interest Payment(s) Past Due                                                                                                                                                                                                                                                                                                                                                                                   | Numeric           | R                          |                                                                |
| PastDueTotalAmount    | Amount of Principal + Interest + Fees Past Due                                                                                                                                                                                                                                                                                                                                                                           | Numeric           | O                          |                                                                |
| Times1to5DPD          | Number of times loan was 0 \< DPD \< = 5                                                                                                                                                                                                                                                                                                                                                                                 | integer           | O                          |                                                                |
| Times6to15DPD         | Number of times loan was 5 \< DPD \< = 15                                                                                                                                                                                                                                                                                                                                                                                | integer           | O                          |                                                                |
| Times16to30DPD        | Number of times loan was 15 \< DPD \< = 30                                                                                                                                                                                                                                                                                                                                                                               | integer           | O                          |                                                                |
| Times31to60DPD        | Number of times loan was 30 \< DPD \< = 60                                                                                                                                                                                                                                                                                                                                                                               | integer           | O                          |                                                                |
| Times61to90DPD        | Number of times loan was 60 \< DPD \< = 90                                                                                                                                                                                                                                                                                                                                                                               | integer           | O                          |                                                                |
| Times91to120DPD       | Number of times loan was 90 \< DPD \< = 120                                                                                                                                                                                                                                                                                                                                                                              | integer           | O                          |                                                                |
| Times121plusDPD       | Number of times loan was 120 \< DPD                                                                                                                                                                                                                                                                                                                                                                                      | integer           | O                          |                                                                |
| ConfirmOfFraudDate    | Date that loan was confirmed as fraudulent                                                                                                                                                                                                                                                                                                                                                                               | Date\[yyyy-mm-dd] | R                          | Required - if applicable                                       |
| FraudAmt              | Total Lost to Fraud                                                                                                                                                                                                                                                                                                                                                                                                      | Numeric           | R                          | Up to 2 decimals<br />Required - if applicable                 |
| ConfirmOfDeathDate    | Date that death was confirmed for borrower                                                                                                                                                                                                                                                                                                                                                                               | Date\[yyyy-mm-dd] | R                          | Required - if applicable                                       |

 

### Bankruptcy

| Field Name               | Description                                                                                                              | Format            | Required (R)/ Optional (O) | Notes/Example (as needed)      |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ----------------- | -------------------------- | ------------------------------ |
| BankruptcyStatus         | Current Status of Bankruptcy as of prior day                                                                             | Text              | R                          | Required - if applicable       |
| BankruptcyChapter        | Chapter of bankruptcy                                                                                                    | Text              | R                          | Required - if applicable       |
| BankruptcyNoticeDate     | date of the bankruptcy notice                                                                                            | Date\[yyyy-mm-dd] | R                          | Required - if applicable       |
| BankruptcyFilingDate     | date the bankruptcy was filed                                                                                            | Date\[yyyy-mm-dd] | R                          | Required - if applicable       |
| BankruptcyCloseDate      | date the bankruptcy was closed                                                                                           | Date\[yyyy-mm-dd] | R                          | Required - if applicable       |
| BankruptcyCloseReason    | reason the bankruptcy was closed                                                                                         | Text              | R                          | Required - if applicable       |
| BankruptcyProcessDate    | date the bankruptcy was processed                                                                                        | Date\[yyyy-mm-dd] | R                          | Required - if applicable       |
| BankruptcyDischargeDate  | date the bankruptcy was discharged                                                                                       | Date\[yyyy-mm-dd] | R                          | Required - if applicable       |
| BankruptcyDismissalDate  | date the bankruptcy was dismissed                                                                                        | Date\[yyyy-mm-dd] | R                          | Required - if applicable       |
| BankruptcyWithdrawDate   | date the bankruptcy was withdrawn                                                                                        | Date\[yyyy-mm-dd] | R                          | Required - if applicable       |
| ForbearanceStartDate     | Date the loan entered the "Forbearance" status                                                                           | Date\[yyyy-mm-dd] | R                          | Required for loan modification |
| ForbearanceEndDate       | Date the loan exited the "Forbearance" status                                                                            | Date\[yyyy-mm-dd] | R                          | Required for loan modification |
| ForbearanceDuration      | Duration of the forbearance period, Duration type should be indicated in the ForebearanceDurationType field.             | integer           | R                          | Required for loan modification |
| ForebearanceDurationType | Indicator identifying the duration type reported in the ForbearanceDuration field<br />1=Days<br />2=Months<br />3=Years | integer           | R                          |                                |
| ForbearanceReason        | Reason for the forbearance                                                                                               | Text              | R                          |                                |

 

### Modifications

| Field Name      | Description                                                                                                                    | Format            | Required (R)/ Optional (O) | Notes/Example (as needed)                                                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------ | ----------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| ScraFlag        | Flag indicating that SCRA (ServiceMember Civil Relief Act) applies to this loan                                                | Text              | R                          | "Y" or "N" ONLY                                                                                                                                       |
| ScraRate        | modified rate during the SCRA period; Y or N                                                                                   | Numeric           | R                          |                                                                                                                                                       |
| ScraBeginDate   | Date the SCRA period begins                                                                                                    | Date\[yyyy-mm-dd] | R                          |                                                                                                                                                       |
| ScraEndDate     | Date the SCRA period ends                                                                                                      | Date\[yyyy-mm-dd] | R                          |                                                                                                                                                       |
| ModFlag         | Flag indicated that the loan has been modified; only most recent modifcation should be provided                                | Text              | R                          | "Y" or "N" ONLY                                                                                                                                       |
| ModStatus       | Flag indicating whether the modification is active; only most recent modifcation should be provided                            | Text              | R                          | "Y" or "N" ONLY                                                                                                                                       |
| ModType         | Code indicating the type of loan modification; only most recent modifcation should be provided                                 | Numeric           | R                          | 1= Rate<br />2=Payment Deferral<br />3=Principal reduction<br />4= Term Adjustment<br />5=Payment Adjustment<br />6= Debt Forgiveness<br />7 = Other  |
| ModDescr        | Description of the specific modification made or Reasons for modification; only most recent modification should be provided.   | Text              | R                          | Required for all loan modifications.                                                                                                                  |
| ModRate         | The new rate, post modification ; only most recent modifcation should be provided                                              | Numeric           | R                          | Required if applicable                                                                                                                                |
| ModPmt          | The new pmt, post modification; only most recent modifcation should be provided                                                | Numeric           | R                          | Required if applicable                                                                                                                                |
| ModTerm         | The new term, post modification; only most recent modifcation should be provided                                               | Numeric           | R                          | Required if applicable                                                                                                                                |
| ModBal          | The new principal balance, post modification; only most recent modifcation should be provided                                  | Numeric           | R                          | Required if applicable                                                                                                                                |
| ModFinalPmt     | The new final payment, if applicable, post modification; only most recent modifcation should be provided                       | Numeric           | R                          | Required if applicable                                                                                                                                |
| ModMaturityDate | The new maturity, post modification; only most recent modifcation should be provided                                           | Date              | R                          | Required if applicable                                                                                                                                |
| ModStartDate    | Modification Effective Date                                                                                                    | Date              | R                          | Required if applicable                                                                                                                                |
| ModEndDate      | Modification End Date                                                                                                          | Date              | R                          | Required if applicable                                                                                                                                |

 

### Settlement 

| Field Name              | Description                                                                                                   | Format            | Required (R)/ Optional (O) | Notes/Example (as needed)              |
| ----------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------- | -------------------------- | -------------------------------------- |
| SettlementDate          | Date the loan was settled with the borrower                                                                   | Date\[yyyy-mm-dd] | R                          | 2014-11-10<br />Required if applicable |
| SettlementAmount        | The portion of the balance agreed upon the WILL BE paid by the borrower.                                      | Numeric           | R                          |  Required if applicable                |
| SettlmentAmountPaid     | The portion of the balance agreed upon the HAS ALREADY been paid by the borrower.                             | Numeric           | R                          |  Required if applicable                |
| ForgivenAmount          | The portion of the balance that will not be collected due to the settlement agreement (as of agreement date). | Numeric           | R                          |  Required if applicable                |
| UnpaidSettlementBalance | The outstanding amount remaining of the agreed upon settlement amount.                                        | Numeric           | O                          |                                        |

### ExtraFields

| Field Name  | Description                                                                                                                                                              | Format | Required (R)/ Optional (O) | Notes/Example (as needed)                            |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | -------------------------- | ---------------------------------------------------- |
| ExtraFields | json blob allowing for all extra fields; the blob must EXCLUDE text delimiters and line feeds.  Any changes / additions to this field must go through change management. | Text   | O                          | Required if CRB needs information not covered above. |

 

## Servicing Tape Standard V2 (Deprecated)

### Identification

| Field                               | Description                                                                                       |
| ----------------------------------- | ------------------------------------------------------------------------------------------------- |
| `Platform`<br />alphanumeric        | **Required**<br />MPL name                                                                        |
| `MplAcctID`<br />alphanumeric       | **Required**<br />Unique loan number                                                              |
| `IssuingBank`<br />alphanumeric     | **Required**<br />Name of issuing bank of the loan. For CR originated loans, it should say "CRB". |
| `Servicer`<br />alphanumeric        | **Required**<br />Servicer name                                                                   |
| `ServicerLoanNum`<br />alphanumeric | **Required**<br />Servicer loan number                                                            |

### Sale/Transfers

| Field                                                     | Description                                                                                                                                                                                                                                                                         |
| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BeginningSubpoolId`<br />alphanumeric                    | **Required**<br />On transfer day, this field will show the SubpoolId prior to the transfer.<br />For subpool transfers or sales.                                                                                                                                                   |
| `EndingSubpoolId`<br />alphanumeric                       | **Required**<br />On transfer day, this field will show the SubpoolId after the transfer.<br />For subpool transfers or sales.                                                                                                                                                      |
| `PriorOwner`<br />alphanumeric                            | **Required**<br />On transfer day/sale day, this field shows the owner prior to the transfer.<br />• CRB-HFS: Loans bought back by CR after the 3 day seasoning period<br />• CRB-LTHFS: Loans owned by CR with a longer seasoning period<br />• CRB-Retained: Loans retained by CR |
| `CurrentOwner`<br />alphanumeric                          | **Required**<br />On transfer day, this field shows the owner after the transfer<br />• CRB-HFS : Loans bought back by CR after the 3 day seasoning period<br />• CRB-LTHFS: Loans owned by CR with a longer seasoning period<br />• CRB-Retained: Loans retained by CR             |
| `CurrentTransferedInterest`<br />number up to 2 decimals  | **Required for subpool transfers and sales**<br />Interest transferred in the sale or in the subpool transfer                                                                                                                                                                       |
| `CurrentTransferedPrincipal`<br />number up to 2 decimals | **Required for subpool transfers and sales**<br />Principal transferred in the sale or in the subpool transfer                                                                                                                                                                      |
| `CurrentTransferDate`<br />date                           | **Required for subpool transfers and sales**<br />Date loan is sold/transferred to the new owner or subpool.<br />This field should only be populated on the day after transfer.<br />Format: yyyy-mm-dd                                                                            |

### Loan terms

| Field                                                                       | Description                                                                                                                                                                                                                                                                                                                                                    |
| --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ContractDate`<br />date                                                    | **Required**<br />Note date.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                                                           |
| `FirstFundedDate`<br />date                                                 | **Required**<br />Funding date for loans that are disbursed on multiple days:<br />FirstFundedDate is the date of the first disbursement<br />MostRecentFundedDate is the date of the most recent disbursement.<br />For loans funded in a single disbursement, the<br /><br />FirstFundedDate is the same as the MostRecentFundedDate<br />Format: yyyy-mm-dd |
| `MostRecentFundedDate`<br />date                                            | **Required**<br />Date of most recent disbursement.<br />If the loan is funded in a single disbursement, this is the same as the FirstFundedDate.<br />Format: yyyy-mm-dd                                                                                                                                                                                      |
| `Boarding Date`<br />date                                                   | **Required**<br />Date of most recent disbursement.<br />If the loan is funded in a single disbursement, this is the same as the FirstFundedDate.<br />Format: yyyy-mm-dd                                                                                                                                                                                      |
| `OriginalMaturityDate`<br />date                                            | **Required**<br />Date of the final loan maturity per the loan agreement.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                              |
| `CurrentMaturityDate`<br />date                                             | **Required**<br />Current maturity date.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                                               |
| `Vintage`<br />date-number                                                  | Required<br />Year and month of note.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                                                  |
| `OriginalLoanAmount`<br />number up to 2 decimals                           | **Required**<br />Gross loan amount                                                                                                                                                                                                                                                                                                                            |
| `OriginalFundedAmount`<br />number up to 2 decimals                         | **Required**<br />Net funding to borrower                                                                                                                                                                                                                                                                                                                      |
| `CurrentDisbursementAmount`<br />number up to 2 decimals                    | **Required**<br />Aggregated total of all disbursed amounts so far for this loan.<br />For a single disbursement, this equals the loan amount.                                                                                                                                                                                                                 |
| `CurrentDisbursementCount`<br />integer                                     | **Required**<br />The (number) count of disbursements funded for this loan.<br />For a single disbursement, the number is 1.                                                                                                                                                                                                                                   |
| `OriginalScheduledPeriodicPmt`<br />number up to 2 decimals                 | **Required**<br />Borrower's required periodic payment per the original amortization schedule.                                                                                                                                                                                                                                                                 |
| `CurrentScheduledPeriodicPmt`<br />number up to 2 decimals                  | **Required**<br />Borrower's required periodic payment per the current amortization schedule.                                                                                                                                                                                                                                                                  |
| `OriginalScheduledFinalPmt`<br />number up to 2 decimals                    | **Required**<br />Borrower's required final payment per the original amortization schedule.                                                                                                                                                                                                                                                                    |
| `CurrentScheduledFinalPmt`<br />number up to 2 decimals                     | **Required**<br />Borrower's required final payment per the current amortization schedule.                                                                                                                                                                                                                                                                     |
| `PaymentFrequency`<br />alphanumeric                                        | **Required**<br />Frequency of regularly scheduled payments per the amortization schedule - monthly, bimonthly, weekly, biweekly.                                                                                                                                                                                                                              |
| `OriginalInterestRate`<br />number up to 2 decimals, formatted as a percent | **Required**<br />Original note interest rate.<br />Format: Percent (%)                                                                                                                                                                                                                                                                                        |
| `CurrentInterestRate`<br />number up to 2 decimals, formatted as a percent  | **Required**<br />Current interest rate                                                                                                                                                                                                                                                                                                                        |
| `InterestAccrualMethod`<br />alphanumeric                                   | **Required**<br />Method of interest accrual                                                                                                                                                                                                                                                                                                                   |
| `OriginalBorrowerState`<br />alpha - 2 letters                              | **Required**<br />State in which the loan was originated                                                                                                                                                                                                                                                                                                       |
| `CurrentBorrowerState`<br />alpha - 2 letters                               | **Required**<br />State where the borrower currently resides                                                                                                                                                                                                                                                                                                   |
| `OriginalFicoScore`<br />integer                                            | **Required**<br />FICO score at origination.                                                                                                                                                                                                                                                                                                                   |
| `OriginalFicoScoreDate`<br />date                                           | **Required**<br />Date the FICO score was pulled at origination.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                       |
| `OriginalVantageScore`<br />integer                                         | **Required**<br />VantageScore at origination                                                                                                                                                                                                                                                                                                                  |
| `OriginalVantageScoreDate`<br />date                                        | **Required**<br />Date the VantageScore was pulled at origination.<br />Original internally assigned credit rating (loan grade).<br />Format: yyyy-mm-dd                                                                                                                                                                                                       |
| `UpdatedFicoScore`<br />integer                                             | Required if an updated credit pull was made<br />Last FICO score pulled - should only be populated if a new FICO was pulled.                                                                                                                                                                                                                                   |
| `UpdatedFicoScoreDate`<br />date                                            | Required if an updated credit pull was made<br />Date of last FICO score pulled - should only be populated if a new FICO was pulled.<br />Format: yyyy-mm-dd                                                                                                                                                                                                   |
| `UpdatedVantageScore`<br />integer                                          | Required if an updated credit pull was made<br />Last VantageScore pulled - should only be populated if a new VantageScore was pulled.                                                                                                                                                                                                                         |
| `UpdatedVantageScoreDate`<br />date                                         | Required if an updated credit pull was made<br />Date of last VantageScore pull - should only be populated if a new VantageScore was pulled.<br />Format: yyyy-mm-dd                                                                                                                                                                                           |
| `PreDTIExMortgage`<br />number up to 2 decimals, formatted as a percent     | **Required**<br />DTI excluding mortgage pre-loan.<br />Format: Percent (%)                                                                                                                                                                                                                                                                                    |
| `PreDTIInMortgage`<br />number up to 2 decimals, formatted as a percent     | **Required**<br />DTI including mortgage pre-loan.<br />Format: Percent (%)                                                                                                                                                                                                                                                                                    |
| `PreDTIDate`<br />date                                                      | **Required**<br />DTI date pulled pre-loan.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                                            |
| `PostDTIDate`<br />date                                                     | **Required**<br />DTI date pulled post-loan.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                                           |
| `PostDTIExMortgage`<br />number up to 2 decimals, formatted as a percent    | **Required**<br />DTI excluding mortgage post-loan.<br />Format: Percent (%)                                                                                                                                                                                                                                                                                   |
| `PostDTIInMortgage`<br />number up to 2 decimals, formatted as a percent    | **Required**<br />DTI including mortgage post-loan.<br />Format: Percent (%)                                                                                                                                                                                                                                                                                   |
| `OriginalCreditGradeInternal`<br />number or alphanumeric                   | **Required**<br />Original internally assigned credit rating (loan grade)                                                                                                                                                                                                                                                                                      |
| `CurrentCreditGradeInternal`<br />number or alphanumeric                    | **Required**<br />Current internally assigned credit rating (loan grade)                                                                                                                                                                                                                                                                                       |
| `OriginationFeePct`<br />number up to 2 decimals                            | **Required**<br />Origination fee by percent                                                                                                                                                                                                                                                                                                                   |
| `OriginationFeeAmt`<br />number up to 2 decimals                            | **Required**<br />Origination fee by dollar amount                                                                                                                                                                                                                                                                                                             |
| `APR`<br />number up to 2 decimals, formatted as a percent                  | **Required**<br />Annual percentage rate                                                                                                                                                                                                                                                                                                                       |
| `OriginalTerm`<br />number up to 2 decimals                                 | **Required**<br />Number of months to pay loan before maturity at origination                                                                                                                                                                                                                                                                                  |
| `CurrentTerm`<br />number up to 2 decimals                                  | **Required**<br />Number of months remaining to maturity                                                                                                                                                                                                                                                                                                       |
| `OriginalNumScheduledPaymnets`<br />**integer**                             | **Required**<br />Number of periodic payments to maturity at origination                                                                                                                                                                                                                                                                                       |
| `CurrentNumPaymentsScheduled`<br />integer                                  | **Required**<br />Number of remaining periodic payments to maturity                                                                                                                                                                                                                                                                                            |

### Activity

| Field                                                           | Description                                                                                                                                                                                                                           |
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ReportDate`<br />date                                          | **Required**<br />This should be the current date, and all balances and running monthly totals should be as of the prior day.<br />Format: yyyy-mm-dd<br />Example<br />Reporting date should be 5/1/2016 for the April loan summary. |
| `BeginningPrincipalBalance`<br />number up to 2 decimals<br />  | **Required**<br />Beginning principal loan balance for prior day. Should equal previous day ending principal balance.<br />                                                                                                           |
| `BeginningTotalBalance`<br />number up to 2 decimals            | **Required**<br /><br />Beginning principal + interest + fees loan balance for prior day                                                                                                                                              |
| `BeginningBalancePostChargeOff`<br />number up to 2 decimals    | **Required**<br />Beginning principal balance for prior day after charge off.<br />This balance should exclude the charged off amount (if any).                                                                                       |
| `EndingPrincipalBalance`<br />number up to 2 decimals           | **Required**<br />Ending principal loan balance for prior day<br />                                                                                                                                                                   |
| `EndingTotalBalance`<br />number up to 2 decimals               | **Required**<br />Ending principal + interest + fees loan balance for prior day                                                                                                                                                       |
| `EndingBalancePostChargeOff`<br />number up to 2 decimals<br /> | **Required**<br />Ending principal balance for prior day after charge off.<br />This balance should exclude the charged off amount (if any).                                                                                          |
| `PeriodPrincipalPmt`<br />number up to 2 decimals               | **Required**<br />Principal payments received during the current month - running monthly total.<br />                                                                                                                                 |
| `PeriodPrincipalAdj`<br />number up to 2 decimals               | **Required**<br />Small balance adjustments made to the loan balance during the current month - running monthly total.                                                                                                                |
| `PeriodPrincipalPmtScheduled`<br />number up to 2 decimals      | **Required**<br />Scheduled principal payments received during the current month - running monthly total.                                                                                                                             |
| `PeriodPrincipalPmtPrepaid`<br />number up to 2 decimals        | **Required**<br />Prepay (non-scheduled) principal received during the current month - running monthly total.                                                                                                                         |
| `PeriodInterestPmt`<br />number up to 2 decimals                | **Required**<br />Interest payments received during the current month - running monthly total.                                                                                                                                        |
| `PeriodInterestPmtScheduled`<br />number up to 2 decimals       | **Required**<br />Scheduled interest payments received during the current month - running monthly total.                                                                                                                              |
| `PeriodLateFeeAssessed`<br />number up to 2 decimals            | **Required**<br />Amount of late fees charged - running monthly total.                                                                                                                                                                |
| `PeriodOtherFeesAssessed`<br />number up to 2 decimals          | **Required**<br />Amount of other fees assessed (excluding NSF or late fees) - running monthly total.                                                                                                                                 |
| `PeriodOtherFeesPaid`<br />number up to 2 decimals              | **Required**<br />Amount of other fees (excluding NSF or late fees) paid - running monthly total.                                                                                                                                     |
| `PeriodNsfAssessed`<br />number up to 2 decimals                | **Required**<br />Amount of insufficient funds charged - running monthly total.                                                                                                                                                       |
| `PeriodNsfPaid`<br />number up to 2 decimals                    | **Required**<br />Amount paid for insufficient funds - running monthly total.                                                                                                                                                         |
| `LastPaymentReceivedDate`<br />date                             | **Required**<br /><br />Day of month the last borrower payment was received.<br />Format: yyyy-mm-dd                                                                                                                                  |
| `NextPaymentDueDate`<br />date                                  | **Required**<br />Next payment due date.<br />Format: yyyy-mm-dd                                                                                                                                                                      |
| `NextPrincipalDueDate`<br />date                                | **Required**<br />Next principal payment due date.<br />Format: yyyy-mm-dd                                                                                                                                                            |
| `NextInterestDueDate`<br />date                                 | **Required**<br />Next interest due date.<br />Format: yyyy-mm-dd                                                                                                                                                                     |
| `ChargeOffDate`<br />date                                       | **Required**<br />Date the loan is charged off book.<br />Format: yyyy-mm-dd                                                                                                                                                          |
| `ChargedOffPrincipalAmt`<br />number up to 2 decimals<br />     | \*Required if a charge off occurred<br />Total principal charged off during current month.<br />This should only be populated during the month that the charge off occurs.                                                            |
| `ChargedOffInterestAmt`<br />number up to 2 decimals            | \*Required if a charge off occurred<br />Total interest charged off/ reversed during the current month.<br />This should only be populated during the month that the charge off occurs.                                               |
| `InterestAccruedTotal`<br />number up to 2 decimals             | **Required**<br />Interest accrued but not collected as of prior day                                                                                                                                                                  |
| `CumulInterestPmtLTD`<br />number up to 2 decimals              | **Required**<br />Total interest payment received from the borrower since inception                                                                                                                                                   |
| `CumulPrincipalPmtLTD`<br />number up to 2 decimals             | **Required**<br />Total principal payment received from the borrower since inception                                                                                                                                                  |
| `CumulPrincipalPmtPrepaidLTD`<br />number up to 2 decimals      | **Required**<br />Total prepay principal received from the borrower since inception                                                                                                                                                   |
| `PrincipalRecoveredAmt`<br />number up to 2 decimals            | **Required**<br />Principal amount recovered after charge off - life to date                                                                                                                                                          |
| `InterestRecoveredAmt`<br />number up to 2 decimals             | **Required**<br />Interest amount recovered after charge off - life to date                                                                                                                                                           |
| `LateFeeRecovered`<br />number up to 2 decimals                 | **Required**<br />Late fee amount recovered after charge off - life to date.                                                                                                                                                          |
| `NsfFeeRecovered`<br />number up to 2 decimals                  | **Required**<br />NSF fee amount recovered after charge off - life to date                                                                                                                                                            |
| `OtherFeesRecovered`<br />number up to 2 decimals               | **Required**<br />Other fees (excluding late fees or NSF fees) amount recovered after charge off - life to date.                                                                                                                      |
| `AverageDailyBalance`<br />number up to 2 decimals              | **Required**<br />Average loan outstanding for the month                                                                                                                                                                              |

### Loan status

| Field                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `LoanStatus`<br />alphanumeric                       | **Required**<br />Payment status of the loan:<br />Current- 0 days past due<br />InGracePeriod - 1 thru grace period days past due<br />Delinquent - grace period + 1 thru charge off days past due<br />ChargedOff - loan charged off<br />Forebearance - loan is in forbearance/deferment status<br />Bankruptcy - loan in bankruptcy<br />Matured - loan paid off on normal amortization schedule<br />PaidOff - loan paid off early |
| `DaysPastDue`<br />integer                           | **Required**<br />Number of days past due - total                                                                                                                                                                                                                                                                                                                                                                                       |
| `DelinquencyStartDate`<br />**date**                 | **Required**<br />Date the loan entered the delinquent status.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                                                                                                  |
| `PastDuePrincipalAmt`<br />number up to 2 decimals   | **Required**<br />Amount of principal payment past due                                                                                                                                                                                                                                                                                                                                                                                  |
| `PastDueInterestAmount`<br />number up to 2 decimals | Required<br />Amount of interest payment past due<br />                                                                                                                                                                                                                                                                                                                                                                                 |
| `PastDueTotalAmount`<br />number up to 2 decimals    | Required<br />Amount of principal + interest + fees past due                                                                                                                                                                                                                                                                                                                                                                            |
| `Times1to5DPD`<br />integer                          | **Required**<br />Number of times loan was 0 \< DPD \< = 5.                                                                                                                                                                                                                                                                                                                                                                             |
| `Times6to15DPD`<br />integer                         | **Required**<br />Number of times loan was 5 \< DPD \< = 15.                                                                                                                                                                                                                                                                                                                                                                            |
| `Times16to30DPD`<br />integer                        | **Required**<br />Number of times loan was 15 \< DPD \< = 30.                                                                                                                                                                                                                                                                                                                                                                           |
| `Times31to60DPD`<br />integer                        | **Required**<br />Number of times loan was 30 \< DPD \< = 60.                                                                                                                                                                                                                                                                                                                                                                           |
| `Times61to90DPD`<br />integer                        | **Required**<br />Number of times loan was 60 \< DPD \< = 90.                                                                                                                                                                                                                                                                                                                                                                           |
| `Times91to120DPD`<br />integer                       | **Required**<br />Number of times loan was 90 \< DPD \< = 120.                                                                                                                                                                                                                                                                                                                                                                          |
| `Times121plusDPD`<br />integer                       | **Required**<br />Number of times loan was 120 \< DPD.                                                                                                                                                                                                                                                                                                                                                                                  |
| `ConfirmOfFraudDate`<br />date<br />                 | **Required**<br />Date the loan was confirmed as fraudulent.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                                                                                                    |
| `FraudAmt`<br />number up to 2 decimals              | **Required**<br />Total amount lost to fraud                                                                                                                                                                                                                                                                                                                                                                                            |
| `ConfirmOfDeathDate`<br />date                       | **Required**<br />Date the borrower's death was confirmed.<br />Format: yyyy-mm-dd                                                                                                                                                                                                                                                                                                                                                      |

### Bankruptcy

| Field                                     | Description                                                                                                                                          |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BankruptcyStatus`<br />alphanumeric      | **Required**<br />Current status of bankruptcy as of prior day                                                                                       |
| `BankruptcyChapter`<br />alphanumeric     | **Required**<br />Bankruptcy chapter                                                                                                                 |
| `BankruptcyNoticeDate`<br />date          | **Required**<br />Date of the bankruptcy notice.<br />Format: yyyy-mm-dd                                                                             |
| `BankruptcyFilingDate`<br />date          | **Required**<br />Date the bankruptcy was filed.<br />Format: yyyy-mm-dd                                                                             |
| `BankruptcyCloseDate`<br />date           | **Required**<br />Date the bankruptcy was closed.<br />Format: yyyy-mm-dd<br />                                                                      |
| `BankruptcyCloseReason`<br />alphanumeric | **Required**<br />Reason the bankruptcy was closed.                                                                                                  |
| `BankruptcyProcessDate`<br />date         | **Required**<br />Date the bankruptcy was processed.<br />Format: yyyy-mm-dd                                                                         |
| `BankruptcyDischargeDate`<br />date       | **Required**<br />Date the bankruptcy was discharged.<br />Format: yyyy-mm-dd                                                                        |
| `BankruptcyDismissalDate`<br />date       | **Required**<br />Date the bankruptcy was dismissed.<br />Format: yyyy-mm-dd                                                                         |
| `BankruptcyWithdrawDate`<br />date        | **Required**<br />Date the bankruptcy was withdrawn.<br />Format: yyyy-mm-dd                                                                         |
| `ForbearanceStartDate`<br />date          | **Required**<br />Date the loan entered the forbearance status.<br />Format: yyyy-mm-dd                                                              |
| `ForbearanceEndDate`<br />date            | **Required**<br />Date the loan exited the forbearance status.<br />Format: yyyy-mm-dd                                                               |
| `ForbearanceDuration`<br />integer        | **Required**<br />Duration of the forbearance period. Duration type has to be indicated in the ForebearanceDurationType field.                       |
| `ForebearanceDurationType`<br />integer   | **Required**<br />Indicator that identifies the duration type reported in the ForbearanceDuration field<br />1 - Days<br />2 - Months<br />3 - Years |
| `ForbearanceReason`<br />alphanumeric     | **Required**<br />Reason for the forbearance                                                                                                         |

### Modifications

| Field                                      | Description                                                                                                                                                                                                                                                          |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ScraFlag`<br />alphanumeric               | **Required**<br />Flag indicating that SCRA applies to this loan.<br />Y or N only.                                                                                                                                                                                  |
| `ScraRate`<br />number up to 2 decimals    | **Required**<br />Modified rate during the SCRA period - Y or N.                                                                                                                                                                                                     |
| `ScraBeginDate`<br />date                  | **Required**<br />Date the SCRA period begins.<br />Format: yyyy-mm-dd                                                                                                                                                                                               |
| `ScraEndDate`<br />date                    | **Required**<br />Date the SCRA period ends.<br />Format: yyyy-mm-dd                                                                                                                                                                                                 |
| `ModFlag`<br />alphanumeric<br />          | **Required**<br />Flag indicating the loan was modified.<br />Only the most recent modification should be provided.<br />Y or N only.<br />                                                                                                                          |
| `ModStatus`<br />alphanumeric              | **Required**<br />Flag indicating whether the modification is active.<br />Only the most recent modification should be provided.<br />Y or N only.                                                                                                                   |
| `ModType`<br />number up to 2 decimals     | **Required**<br />Code indicating the type of loan modification.<br />Only the most recent modification should be provided.<br />1 - Rate<br />2 - Payment deferral<br />3 - Principal reduction<br />4 - Term adjustment<br />5 - Payment adjustment<br />6 - Other |
| `ModDescr`<br />alphanumeric               | **Required**<br />Description of the specific modification made.<br />Only the most recent modification should be provided.                                                                                                                                          |
| `ModRate`<br />number up to 2 decimals     | **Required**<br />The new rate, post modification.<br />Only most recent modification should be provided.                                                                                                                                                            |
| `ModPmt`<br />number up to 2 decimals      | Required<br />The new payment, post modification.<br />Only the most recent modification should be provided.                                                                                                                                                         |
| `ModTerm`<br />integer                     | **Required**<br />The new term, post modification.<br />Only the most recent modification should be provided.                                                                                                                                                        |
| `ModBal`<br />number up to 2 decimals      | **Required**<br />The new principal balance, post modification.<br />Only the most recent modification should be provided.                                                                                                                                           |
| `ModFinalPmt`<br />number up to 2 decimals | **Required**<br />The new final payment, if applicable, post modification. Only the most recent modification should be provided.                                                                                                                                     |
| `ModMaturityDate`<br />date                | **Required**<br />The new maturity, post modification.<br />Only the most recent modification should be provided.<br />Format: yyyy-mm-dd                                                                                                                            |

### Settlement

| Field                                  | Description                                                                                                                                                                           |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SettlementDate`<br />date             | **Required**<br />Date the loan was settled with the borrower.<br />Format: yyyy-mm-dd                                                                                                |
| `SettlementAmount`<br />numeric        | **Required**<br />The portion of the balance agreed upon that WILL BE PAID by the borrower.                                                                                           |
| `SettlementAmountPaid`<br />numeric    | **Required**<br />The portion of the balance agreed upon that HAS ALREADY BEEN PAID by the borrower.                                                                                  |
| `ForgivenAmount`<br />numeric          | **Required**<br />The portion of the balance that won't be collected due to the settlement agreement (as of the agreement date).                                                      |
| `UnpaidSettlementBalance`<br />numeric | **Required**<br />The outstanding amount remaining of the agreed upon settlement amount.                                                                                              |
| `ExtraFields`<br />alphanumeric        | *Optional*<br />Json blob allowing for all extra fields. The blob must EXCLUDE text delimiters and line feeds. Any changes/additions to this field must go through change management. |


[title] Return rails
[path] Lending/Loan funding - payment rails/

:::CtaButton{label="Loan returns concepts" docId="yvKvFJcitSb3lCSg1d6Op" openInNewTab="true"}
You can manage both deposit and withdrawal checking for your customers using Cross River APIs.
:::

## ReturnRail API overview

The **ReturnRail API** provides partners with a method to return a rail that already received a `Success` status and has not yet been `Returned`. This API enables partners to programmatically trigger the return operation (revoke/reverse) on a specific rail that was requested on a loan.

### Supported rail types

- **XPay** (Internal Transfer)
- **Check** (only if not yet cashed)

## Flow of funds

### When this API can be called

Before calling the ReturnRail API, ensure the rail is eligible for return:

Rail should have received a status `Success`, and **not&#x20;**&#x72;eceived after one of the following terminal statuses:

- `Returned`
- `Failed`
- `Cancelled`
- `CosXPaymentCanceled`
- `CosXPaymentRejected`
- `CosXPaymentFailed`

:::hint{type="warning"}
Returning a check actually revokes it from our Positive Pay system. This can only be done before a check is cashed.&#x20;
:::

### Flow of return rails

When trying to fund a rail, an ID is returned in the response. You will need this *Rail ID&#x20;*&#x69;n order to:

- Track this Rail ID using the `RailUpdated` [Hook notifications](docId\:jXGfRbtNHOshrZJYHYKTo) .&#x20;
  - The full list of FundResults found in this webhook is in the RailResultType [Enums](docId\:hpq_QWOAKV9JprqwkFR1I) .&#x20;
- Request the ReturnRails API, using this RaiID.

When the return of a rail completes, the loan status will also be updated, depending on the current status of the loan. You can track this with the `LoanStatusUpdated` hook notification.

:::hint{type="warning"}
Requesting the ReturnRails API, will always return a `200` if the request was correct. The return is considered completed when you receive the return status in the RailUpdated webhook event. If the return is NOT completed, you will not receive a notification about this.
:::

Flow of statuses in `RailUpdated` webhook.

| Action                     | FundResult (`RailResultType` [Enums](docId\:hpq_QWOAKV9JprqwkFR1I) ) | Description                                                                                                            |
| -------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Post /ReturnRails succeeds |                                                                      | This APi just kicks off the return process. The status of the rail does not yet change.                                |
| The Return Succeeds        | Returned                                                             | The rail has been successfully reversed, and now the loan amount of the rail will be available to be disbursed again.  |

## PUT /\{LoanID}/ReturnRails

:::ApiMethodV2
```json
{
  "name": "Return Rails",
  "method": "PUT",
  "url": "https://arixapisandbox.crbnj.net/Loan/{LoanID}/ReturnRails",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "lhSugoeGPG4flwK7y_4Ou",
        "language": "curl",
        "code": "curl --location --globoff 'https://arixapisandbox.crbnj.net/Loan/{LoanID}/ReturnRails' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\n  \"railIds\": [\"<railId1>\", \"<railId2>\"],\n  \"reason\": \"string\"\n}'",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "lhSugoeGPG4flwK7y_4Ou"
  },
  "results": {
    "languages": [
      {
        "id": "QqHiLt-FHhPgn7vzGSzAQ",
        "language": "200",
        "code": "{\n   \n}",
        "customLabel": ""
      },
      {
        "id": "tyfobRzvVk1n0SUYH7D-l",
        "language": "400",
        "code": " {\n    \"ResponseStatus\": {\n        \"ErrorCode\": \"BadRequest\",\n        \"Message\": \"Loan was not provided for the provided loanId\",\n        \"Errors\": []\n    }\n}\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tyfobRzvVk1n0SUYH7D-l"
  },
  "request": {
    "pathParameters": [
      {
        "name": "LoanID",
        "kind": "required",
        "type": "string",
        "description": "The Unique ID of the loan returned from the POST /Loan API call.",
        "": "The Unique ID of the loan returned from the POST /Loan API call."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "railIds",
        "kind": "required",
        "type": "array",
        "description": "Unique identifier of rail that was previously created in Arix. Arix generates this Identifier. ",
        "": "Unique identifier of rail that was previously created in Arix. Arix generates this Identifier. "
      },
      {
        "name": "reason",
        "kind": "required",
        "type": "string",
        "description": "The reason that you are requesting a return. ",
        "": "The reason that you are requesting a return. "
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "message",
      "kind": "optional",
      "type": "string",
      "description": "Returns a verbose message that explains the status of the request",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "return-rails",
  "legacyHash": "GiyxreRBS0oUFTGmVV7-K"
}
```
:::


[title] Pull funding (ACH debit) rail
[path] Lending/Loan funding - payment rails/

## PullFunding API

The PullFunding API provides a method for MPLs to retrieve funds from merchant accounts back into the bank, using  Debits. This is especially useful when a merchant initiates a return or refund, as it reduces the need for manual reconciliation or additional requests, by reusing previously funded loan.

:::hint{type="success"}
It is best practice to wait three days before sending out funds after a successful pull.

According to Nacha standards, a pull can be returned to the merchant. Most returns tend to occur within the first three days. To reduce the likelihood of overfunding, it is advisable to wait before sending out the next `FundingInfo` request.
:::

## Flow of funds

### When this API can be called

Before calling the PullFunding API, ensure the loan is eligible for using this API according to `Loan Status` and `Amount` being requested.&#x20;

Loan status should be one of the following:

- `NotFullyFunded`
- `Funded` 
- `ReadyToSell`&#x20;
- `Sold`

`Amount` being requested in the API should be greater than 0 and less than the sum of rails that have been successfully sent and have not been returned.

- 0 \< `Amount `\<=`  loan.amountFunded  `

### Flow of PullFunding

When this API succeeds, you receive an ID in the response. Track this Rail ID using the `RailUpdated` [Hook notifications](docId\:jXGfRbtNHOshrZJYHYKTo) .&#x20;

The full list of FundResults of the rail is in the RailResultType [Enums](docId\:hpq_QWOAKV9JprqwkFR1I) .&#x20;

:::hint{type="warning"}
Using the PullFunding API, is essentially asking for a return of funds to the loan.&#x20;

Unlike the success of a standard push rail, a successful pull will be in a `returned` status and *not&#x20;*&#x69;n a `success` status.
:::

These statuses have different meanings than other rail statuses:

| Action                    | FundResult (`RailResultType` [Enums](docId\:hpq_QWOAKV9JprqwkFR1I) ) | Description                                                                                                                                                        |
| ------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Put /PullFunding succeeds | Requested                                                            | Pull Funds has been requested.                                                                                                                                     |
| The Pull Succeeds         | Returned                                                             | The Pull Funds request has **been successfully&#x20;**&#x72;eceived by NACHA, and the bank has received the funds. The pull amount has been returned to the loan.  |
| Pull is returned          | PullReturned                                                         | The ACH Pull, has been returned. The amount available in the loan for funding, will be deducted by the rail amount.                                                |

## PUT /\{LoanID}/PullFunding

:::ApiMethodV2
```json
{
  "name": "Pull Funding",
  "method": "PUT",
  "url": "https://arixapisandbox.crbnj.net/Loan/{LoanID}/PullFunding",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "t_DbvA86d68lA7ZVJefrn",
        "language": "curl",
        "code": "curl --location --request PUT 'https://arixapisandbox.crbnj.net/Loan/215eb077-3a00-4ed3-995b-b226010ccc78/PullFunding' \\\n--header 'Authorization: Bearer <token>' \\\n--header 'Content-Type: application/json' \\\n--data '{\n  \"FundingPull\": {\n   \"Rail\":\n           {\n         \"ACHFields\": {\n          \"StandardEntryClassCode\": \"PPD\",\n          \"TransactionType\": \"pull\",\n          \"ToRoutingNumber\": \"021214891\",\n          \"ToAccountType\": \"GL\",\n          \"ToAccountName\": \"Ari\",\n          \"ToAccountNumber\": \"9999999999\",\n          \"Description\": \"Pulling from Ari\"\n        },\n        \"RailType\": \"COSACH\",\n        \"Priority\": 1,\n        \"Amount\": 100\n      }\n  }\n}'",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "t_DbvA86d68lA7ZVJefrn"
  },
  "results": {
    "languages": [
      {
        "id": "QqHiLt-FHhPgn7vzGSzAQ",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"LoanId\": \"e92081b4-8735-4294-a061-b22400cdeb8b\",\n    \"Rail\": {\n        \"ACHFields\": {\n            \"StandardEntryClassCode\": \"PPD\",\n            \"TransactionType\": \"pull\",\n            \"ToRoutingNumber\": \"021214891\",\n            \"ToAccountType\": \"GL\",\n            \"ToAccountName\": \"Account name to pull from\",\n            \"ToAccountNumber\": \"9999999999\"\n        },\n        \"Id\": \"68e96cb3-a449-460b-ad7e-b22400ce10fe\",\n        \"RailType\": \"COSACH\",\n        \"Priority\": 1,\n        \"Amount\": 500,\n        \"LoanId\": \"e92081b4-8735-4294-a061-b22400cdeb8b\",\n        \"MPLId\": \"TST\",\n        \"IsFailed\": false,\n        \"LoanType\": \"Undefined\"\n    }\n}"
      },
      {
        "id": "tyfobRzvVk1n0SUYH7D-l",
        "language": "400",
        "code": " {\n    \"ResponseStatus\": {\n        \"ErrorCode\": \"BadRequest\",\n        \"Message\": \"PullFunding amount should be less than or equal to current AmountFunded: 500\",\n        \"Errors\": []\n    }\n}\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tyfobRzvVk1n0SUYH7D-l"
  },
  "request": {
    "pathParameters": [
      {
        "name": "LoanID",
        "kind": "required",
        "type": "string",
        "description": "The Unique ID of the loan returned from the POST /Loan API call.",
        "": "The Unique ID of the loan returned from the POST /Loan API call."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "FundingPull",
        "kind": "required",
        "type": "Object",
        "description": "",
        "children": [
          {
            "name": "Rail",
            "kind": "required",
            "type": "Object",
            "description": "",
            "children": [
              {
                "name": "ACHFields",
                "kind": "required",
                "type": "Object",
                "description": "",
                "children": [
                  {
                    "name": "StandardEntryClassCode",
                    "kind": "required",
                    "type": "string",
                    "description": "The type of account:\n\nPPD - consumer accounts\n\n CCD - corporate accounts\n\n"
                  },
                  {
                    "name": "ToRoutingNumber",
                    "kind": "required",
                    "type": "string",
                    "description": "Routing number of the bank we are attempting to pull funds from. \nThe value entered for this field is validated up front and it must be 9 digits long."
                  },
                  {
                    "name": "ToAccountName",
                    "kind": "required",
                    "type": "string",
                    "description": "Name on the merchant account that we are pulling from.\nLimited to 22 characters."
                  },
                  {
                    "name": "ToAccountNumber",
                    "kind": "required",
                    "type": "string",
                    "description": "Account number.\n\nLimited to 17 digits.\n"
                  },
                  {
                    "name": "Description",
                    "kind": "required",
                    "type": "string",
                    "description": "Mapped to identification field in the NACHA file.\nLimited to 15 characters."
                  },
                  {
                    "name": "TransactionType",
                    "kind": "required",
                    "type": "string",
                    "description": "Pull\n\nThis should be a constant value for PullFunding."
                  },
                  {
                    "name": "ToAccountType",
                    "kind": "required",
                    "type": "string",
                    "description": "Checking account or savings account."
                  }
                ]
              },
              {
                "name": "RailType",
                "kind": "required",
                "type": "string",
                "description": "COSACH - For standard ACH.\nCOSACHSD - For same day funding ACH."
              },
              {
                "name": "Amount",
                "kind": "required",
                "type": "Number",
                "description": "The amount of money to pull. "
              },
              {
                "name": "Priority",
                "kind": "optional",
                "type": "Integer",
                "description": "If more than one Pull is needed, then the order in which they are sent can have a priority.\nThis is the order the rails should be processed - starts with number 1."
              }
            ]
          }
        ],
        "schema": [
          {
            "name": "Rail",
            "kind": "required",
            "type": "Object",
            "description": "",
            "children": [
              {
                "name": "ACHFields",
                "kind": "required",
                "type": "Object",
                "description": "",
                "children": [
                  {
                    "name": "StandardEntryClassCode",
                    "kind": "required",
                    "type": "string",
                    "description": "The type of account:\n\nPPD - consumer accounts\n\n CCD - corporate accounts\n\n"
                  },
                  {
                    "name": "ToRoutingNumber",
                    "kind": "required",
                    "type": "string",
                    "description": "Routing number of the bank we are attempting to pull funds from. \nThe value entered for this field is validated up front and it must be 9 digits long."
                  },
                  {
                    "name": "ToAccountName",
                    "kind": "required",
                    "type": "string",
                    "description": "Name on the merchant account that we are pulling from.\nLimited to 22 characters."
                  },
                  {
                    "name": "ToAccountNumber",
                    "kind": "required",
                    "type": "string",
                    "description": "Account number.\n\nLimited to 17 digits.\n"
                  },
                  {
                    "name": "Description",
                    "kind": "required",
                    "type": "string",
                    "description": "Mapped to identification field in the NACHA file.\nLimited to 15 characters."
                  },
                  {
                    "name": "TransactionType",
                    "kind": "required",
                    "type": "string",
                    "description": "Pull\n\nThis should be a constant value for PullFunding."
                  },
                  {
                    "name": "ToAccountType",
                    "kind": "required",
                    "type": "string",
                    "description": "Checking account or savings account."
                  }
                ]
              },
              {
                "name": "RailType",
                "kind": "required",
                "type": "string",
                "description": "COSACH - For standard ACH.\nCOSACHSD - For same day funding ACH."
              },
              {
                "name": "Amount",
                "kind": "required",
                "type": "Number",
                "description": "The amount of money to pull. "
              },
              {
                "name": "Priority",
                "kind": "optional",
                "type": "Integer",
                "description": "If more than one Pull is needed, then the order in which they are sent can have a priority.\nThis is the order the rails should be processed - starts with number 1."
              }
            ]
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "The ID of the rail being pulled. Use this to track updates of the RailUpdated hook event.\n "
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "pull-funding",
  "legacyHash": "GiyxreRBS0oUFTGmVV7-K"
}
```
:::


[title] Hook notifications
[path] Lending/

## Overview

*Hooks* is a notification system, used in Lending to update you on the status of your loan. *Hooks* report to your system with real-time notifications when an event happens in Lending. You have to register to receive hooks for each relevant event type by configuring the destination and delivery method, most commonly webhooks. When that event occurs, a Hook is triggered and reports the updates to your system via the chosen delivery method.

For example, if a rail status changes to *returned*, a `RailUpdated` hook event would be triggered, and reported to the partner notifying them of the event. This notification will only be sent out, if you have previously registered to receive this type of event (`RailUpdated`), and the registration is active.

:::hint{type="warning"}
**IMPORTANT**
To access the links below you must have the following IP addresses allowlisted:

Sandbox - 66.206.202.39 , 66.206.202.12

Production -66.206.202.62 , 66.206.202.15

All hook registration functionality available via the API can also be performed through the Hooks UI. You can create, edit, delete, and manage registrations, as well as manually resend events, directly from the UI without making any API calls.
:::

- Swagger: [https://lendingsandbox.crbcos.com/hooks/swagger/index.html](https://lendingsandbox.crbcos.com/hooks/swagger/index.html)
- Base URL for sandbox: [https://lendingsandbox.crbcos.com/](https://docs.crossriver.com/Content/Lending/HookNotifications.htm#)
- Sandbox UI: [https://lendingappsandbox.crbcos.com/hooks/registrations](https://docs.crossriver.com/Content/Lending/HookNotifications.htm#)
- Production UI: [https://lendingapp.crbcos.com/hooks/registrations](https://docs.crossriver.com/Content/Lending/HookNotifications.htm#)
- API Scope:
  - CosLending\:Hooks\:stg for sandbox
  - CosLending\:Hooks\:prd for production

:::hint{type="info"}
By default, a webhook that fails will retry 3 times with a delay interval of 5 minutes. Different Intervals can be configured for a registration by the Cross River support team.

Events can also be resent manually via the hooks UI, although **there is a retention policy of 60 days for events in the system**.&#x20;
:::

When an event is sent in the form of a webhook, there will always be a wrapper around the content. The actual event will be in the JSON's *content* section.

:::CodeblockTabs
Example: LoanStatusUpdated Event inside Wrapper

```json
{
  "MPLId": "TST",
  "Ignore": false,
  "content": {
    "Id": 0,
    "LoanId": "c1ee19e4-791c-4f38-b581-ae6d007692a6",
    "Status": 5,
    "TimeStamp": "2022-04-04T07:13:08.5754408+00:00",
    "DateInserted": "0001-01-01T00:00:00+00:00"
  }
}
```
:::

| Attribute           | Description                                        |
| ------------------- | -------------------------------------------------- |
| MPLId<br />string   | A 3-letter ID for the partner                      |
| Ignore<br />boolean | True or False                                      |
| Content<br />JSON   | This is the actual content of the event being sent |

## Sample events

### LoanStatusUpdate

This event is reported every time the status of a loan is changed:

```json
{
    "Id": 0,
    "LoanId": "3f07773b-5ba5-43e6-bf30-aea200361dad",
    "Status": 104,
    "TimeStamp": "2022-05-30T03:17:43.6233616+00:00",
    "DateInserted": "0001-01-01T00:00:00+00:00"
}
```

### ComplianceLoanFailed

This event is reported every time the loan fails to pass all compliance checks:

```json
{
     "MPLId": "xxx",
     "LoanId": "...guid...",
     "CreateDate": "date",
     "FailedRulesReasons": [
        {
           "RuleName": "rule name",
           "Rule": "some string",
           "Data": "some string",
           "Result": true,
           "FailedComplianceID": 67
        }
     ]
  }
```

### LoanNoteAdded

This event is reported when a bank operator wants to send you a message about a specific loan. This is a message from a human user:

```json
{
  "Subject": "Your Loan 11112652056066 has additional comments",
  "Message": "This is a note sent from the manual review UI",
  "CreatedBy": "apollack, CRB",
  "CreatedOn": "2024-09-29T10:16:00.2828498",
  "LoanId": "e9ad35a8-a9fa-4334-995d-b1e800eb3e17",
  "LoanNumber": "11112652056066",
  "MplDetails": "TST - Testing MPL",
  "Uri": "https://lendingappsandbox.crbcos.com/loans/underwrite?query=eyJsb2FucyI6eyJmaWx0ZXIiOnt9LCJzZWFyY2giOnsic2VhcmNoIjoiZTlhZDM1YTgtYTlmYS00MzM0LTk5NWQtYjFlODAwZWIzZTE3In19LCJ2aWV3VHlwZSI6IkxvYW5zIn0=",
  "RuleName": null,
  "Data": null
}
```

| Attribute               | Description                                                                                                                                          |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| Subject<br />string     | The title of the note being added<br />                                                                                                              |
| Message<br />string     | Message sent from a human user                                                                                                                       |
| CreatedBy<br />string   | The username that sent the message, along with the company they work for.                                                                            |
| CreatedOn<br />DateTime | When the note was created.                                                                                                                           |
| LoanId<br />string      | Unique Cross River identifier for the loan                                                                                                           |
| LoanNumber<br />string  | Unique identifier for the loan, as sent by the partner                                                                                               |
| MplDetails<br />string  | Mplid and name of the Partner                                                                                                                        |
| Uri<br />string         | URI that links to the loan that was commented on, in the COS Lending Manual Review UI. This can only be opened in a whitelisted workstation.<br />** |
| RuleName<br />string    | *Internal Cross River information*                                                                                                                   |
| Data<br />string        | *Internal Cross River information*                                                                                                                   |

### RailUpdated

This event is reported when there is a status update to a rail that was requested:

```json
{ 
      "Id":0,
      "RailId":"…ID of rail that is received when rail created…",
      "LoanId":"fd331267-6ac2-4818-9d0f-ab2f00747b61",
      "RailType":8,
      "AmountFunded":8500.0,
      "RailTransactionId":"…railid from cos…",
      "FundResult": int(this is enum RailResultType), 
      "Message":"Description of rail created if no error returned",
      "ProcessedAt":"2019-12-26T07:05:09Z",
      "TransactionGroupId":"9dde776d-0c04-4bc8-9c9c-e0ad9a83c447"
   }
```

### LoanSaleStatusUpdated

This event is reported when a loan sale status has changed:

```json
{
  "MPLId": "TST",
  "Investor": "RotzehRibit",
  "LoanId": "048ef0f5-1c08-4f58-b3db-b26e00b59d59",
  "Status": 1, //This is the LoanSaleStatus enum
  "TimeStamp": "2025-05-04T18:15:29.242132+00:00",
  "LoanType": "HFS",
  "IssuingBank": "CRB",
  "PartnerLoanNumber": "18848835471438",
  "Principal": 5100,
  "Interest": 0,
  "VolumeFee": 0,
  "Fees": []
}
```

### BatchPurchaseCompleted

This message is sent when the purchase of a batch of loans is completed in selling:

```json
{
  "MplId": "TST",
  "BatchId": "b5f018a8-331f-4762-8418-b2dd00ad65b8",
  "LoanType": null,
  "IssuingBank": "CRB",
  "Investor": "RotzehRibit",
  "TotalPrincipalCharged": 176500,
  "TotalInterestCharged": 26537.16,
  "TotalVolumeFeeCharged": 458.9,
  "TotalAchFeeCharged": 0,
  "NumOfLoansPurchased": 15,
  "NumOfLoansPartiallyPurchased": 0,
  "TimeStamp": "2025-05-14T10:36:07.4395183+00:00"
}
```

## POST /Hooks/v2/Registrations

Use this call to:

- Create a registration to hook events
- Edit a hook registration
- Restart a registration if it is suspended

:::hint{type="info"}
Request URL https\:// .../Hooks/v2/Registrations
:::

## Editing a registration

To **edit** an existing registration, use the same API endpoint as for creating a registration.

**How It Works**

- Include the **ID of the registration** in the POST request to modify an existing entry.
- The API **automatically determines** whether to create or update a registration based on:
  - **MPLID**&#x20;
  - **hookName**
- If a registration **already exists** for the given MPLID/hookName combination, the API will update it instead of creating a new one.
- If no matching registration is found, a **new** one will be created.

:::hint{type="danger"}
When editing a registration via the **UI**, any stored **passwords or tokens** will be shown **hashed on the UI.&#x20;**&#x46;or security reasons, You will need to **re-enter** these credentials when modifying the registration.&#x20;
:::

## Sample request in cURL - POST /Hooks/v2/Registrations

In the request below, `hookName` shows the event registered as` LoanStatusUpdated`:

```curl
curl --location --request POST 'https://lendingsandbox.crbcos.com/Hooks/v2/Registrations' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <Token>' \
--data-raw '{
  "id": null,
  "applicationName": "Cos.Lending",
  "hookName": "LoanStatusUpdated",
  "hookCorrelationId": "Your 3 letter MPL ID",
  "options": {
    "hookType": "Web",
    "httpMethod": "POST",
    "uri": "Add your URL here, that is specific to this event type",
    "headers": {
      "headerName": [
        "LoanStatusUpdated"
      ]
    },
    "authenticationOptions": {
      "authenticationType": "None"
    }
  }, 
  "suspended": false
}'
```

:::hint{type="info"}
**Duplication Registrations**

The default behavior for hooks registration, is to either create or update the registration based on the MPLID and the hookName, assuming there is only one registration per combination of Mplid/hookName.&#x20;
In certain use cases, you might want to create two registrations for the same event. For example, one web hook, and one email hook. To do this, you need to supply a new Guid for the ID field of the registration.
:::

## Webhook attributes

| Attribute                                 | Description                                                                                                                                                                                                             |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Id<br />string                            | This field can be null or populated with the registration GUID for the registration.<br />**null** - when creating a new registration<br />**GUID** - when updating or unsuspending an existing registration            |
| applicationName<br />string               | Should always be **Cos.Lending**                                                                                                                                                                                        |
| hookName<br />string                      | The name of the hook you want to register for:<br />- LoanStatusUpdated<br />- ComplianceLoanFailed<br />- RailUpdated                                                                                                  |
| hookCorrelationId<br />string             | 3-letter MPL ID                                                                                                                                                                                                         |
| suspended<br />boolean                    | True or false.<br />True if the registration should be suspended and not send webhooks. False if the registration should be active.<br />**If you edit a suspended registration, false will restart the registration**. |
| options<br />object                       | Select the relevant values for the fields below.                                                                                                                                                                        |
| options.hookType                          | Delivery method for the event (enum).<br />Select from:<br />- Web (for webhooks)<br />- Email  <br />- Slack <br />- Message (coming soon)<br />- RabbitMq (coming soon)<br />- Sqs (coming soon)                      |
| options.httpMethod<br />string            | POST                                                                                                                                                                                                                    |
| options.uri<br />string                   | The URL to receive webhook events/                                                                                                                                                                                      |
| options.headers<br />string array         | Key/Value pairs of Headers and values.<br />Each header can have an array of values:<br />"Headers": \{<br />"FirstHeader": \[<br />"test1",<br />"test2"<br />],<br />"secondHeader":\["single value"]<br />}          |
| options.authenticationOptions<br />object | Authentication options for web hooks.<br />Select from:<br />- None<br />- Basic<br />- oidc                                                                                                                            |

## Sample response in JSON - POST /Hooks/v2/Registrations

Use the `id` received in the response to update or restart the registration.

```json
{
    "Version": "2.0",
    "IsSuccessful": true,
    "StatusCode": 200,
    "Result": {
        "id": "eb62ffbd-7ed4-4146-be48-7f2a46551c0e",
        "applicationName": "cos.lending",
        "hookName": "LoanStatusUpdated",
          ...
        ...
        ..
    }
}
```

## Webhooks without Authentication

```json
"options": {
    "hookType": "Web",
    "httpMethod": "POST",
    "uri": "Add your URL here, that is specific to this event type",
    "headers": {
      "headerName": [
        "Any Header you want to add to all events"
      ]
    },
    "authenticationOptions": {
      "authenticationType": "None"
    }
  }
```

## Webhooks with basic authentication

```json
"options": {
    "hookType": "Web",
    "httpMethod": "POST",
    "uri": "Add your URL here, that is specific to this event type",
    "headers": {
      "headerName": [
        "Any Header you want to add to all events"
      ]
    },
    "authenticationOptions": {
      "authenticationType": "Basic",
      "username": "yyy",
      "password": "1234"
    }
  }
```

## Webhooks with OIDC authentication

OpenID Connect using your own authentication authority.

:::hint{type="info"}
**OIDC setup must be implemented first**

Your OIDC must be fully implemented in order to use Hooks notifications with OIDC authentication.&#x20;
This includes setting up a discovery endpoint /.well-known/openid-configuration.
:::

```json
"options": {
    "hookType": "Web",
    "httpMethod": "POST",
    "uri": "Add your URL here, that is specific to this event type",
    "headers": {
      "headerName": [
        "headerValue"
      ]
    },
    "authenticationOptions": {
        "authenticationType": "Oidc",
        "authorityUrl": "",
        "clientId": "",
        "clientSecret": "",
        "scope": ""
    }
  }
```

## Slack hook registration

Hook events can also be sent to your slack channels. To do this you must:

1. Create a slack bot with permissions to write to a channel in your workspace.
2. Retrieve the auth token of the slackbot.
3. Add the slackbot to the slack channel that you wish to register.
4. Register the channel to receive events on the Cos.Lending.Hooks UI, or via the API payload below.

:::hint{type="warning"}
**IMPORTANT**
Registering to a slack channel is not recommended if automation is needed. For complete automation, it is recommended to use "web" hooks instead.&#x20;
:::

```json
{
  "id": null,
  "applicationName": "Cos.Lending",
  "hookName": "LoanNoteAdded",
  "hookCorrelationId": "Your 3 letter MPL ID",
   "options": {
    "hookType": "Slack",
    "authToken": "Your Slack API bot token.",
    "channel": "The channel name. You must also add your slack bot to this channel"
    },
  "suspended": false
}
```

## Email hook registration

Hook events can also be sent to your Email address, or group email address.&#x20;

1. Register the channel to receive events on the Cos.Lending.Hooks UI, or via the API payload below.

:::hint{type="warning"}
**IMPORTANT**
Registering to receive events via email is not recommended if automation is needed. For complete automation, it is recommended to use "web" hooks instead.&#x20;
:::

```json
{
  "id": null,
  "applicationName": "Cos.Lending",
  "hookName": "LoanNoteAdded",
  "hookCorrelationId": "Your 3 letter MPL ID",
    "options": {
                    "hookType": "Email",
                    "to": [
                        "email address"
                    ],
                    "cc": [
                        null
                    ],
                    "bcc": [
                        null
                    ]
                },
  "suspended": false
}
```

## Testing webhook registration

To test registering webhooks, configure a URL for the specific event you are registering to. If a URL is not yet available, then you can use the webhook.site as a temporary test solution. Follow these instructions to test the webhooks.

### To register your URL to receive webhook events:

1. Go to [https://webhook.site/](https://webhook.site/)
2. Click **New** on the top menu. The site returns **Your unique URL**.
3. **Copy to clipboard** your **unique URL**.

:::hint{type="info"}
If you already have other webhooks registered, the browser might automatically direct you to the URL you've used.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/fCt3n1oCa8rgNJ8fw9I2N-5nv-iJryOBNAgqlGymKeZ-20240812-123729.png)



&#x20;   4\. Paste the copied URL into the `options.uri` field of the JSON body.

&#x20;   5\. Send the Registration API call with hook type "web" to register for webhooks.

The response field `Result.id` is the `RegistrationId` of the event. You can find the registration ID with the call `GET Hooks/v2/Registrations`.

Repeat the process for each event that you want to register for.

## DELETE /Hooks/v2/Registrations

:::hint{type="info"}
Request URL https\:// .../Hooks/v2/Registrations
:::

Use this call to unregister any hook event you are registered to.

## Sample request in cURL - DEL /Hooks/v2/Registrations

```curl
curl --location --request DELETE 'https://lendingsandbox.crbcos.com/Hooks/v2/Registrations?id=eb62ffbd-7ed4-4146-be48-7f2a46551c0e' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ew0KICAiYWxnIjogIl**********' \
--header 'Cookie: ss-opt=temp; ss-id=QVhFixRMpD92y7HQ7b74; ss-pid=De9QBzZCTdhmCdDFuftm'
```

Required query parameter

| Parameter name | Parameter type | Data type | Description                                        |
| -------------- | -------------- | --------- | -------------------------------------------------- |
| id             | query          | long      | The registration ID of hook registration to remove |

## Sample response in JSON - DEL /Hooks/v2/Registrations

There is no response in the image below because the hook registration was deleted successfully.

![](https://archbee-image-uploads.s3.amazonaws.com/fCt3n1oCa8rgNJ8fw9I2N-Qx5tkPU0W6doeDV7Hsrgj-20240812-124815.png)

You can use the Arix test collection in Postman to practice unregistering from an event:

1. In the Postman collection, **Delete Registration** click the tab, **Params**.
2. In the **KEY** field, enter id .
3. In the **VALUE** field, enter the registration ID number that you received when you registered to the event.
4. Click **Send**.




[title] Loans purchase
[path] Lending/Purchasing a loan/

## Execute loan purchase

:::BlockQuote
**POST&#x20;**/selling/api/loans/purchase
:::

This API executes the purchase of loans based on loan type and purchase date. The request body includes key details such as the **date, loan type,&#x20;**(1 for HFS, 2 for LTHFS), **issuing bank, MPL ID,&#x20;**&#x61;nd **investor ID&#x20;**(optional). The date parameter is required but does not impact the purchase process.  If the **investor ID&#x20;**&#x69;s left empty, loans will be purchased without investor allocation.

For example: Purchase HFS loans for MPL TST for issuing bank Cross River.

### Sample request

```json
{
  "date": "2025-01-01",
  "loanType": 1,
  "issuingBank": "CRB",
  "mplId": "YourMPLId",
  "investorId": "[YourInvestorId]",
  "dateFilter": {
    "dateType": "[FundedDate],
    "fromDate": "2026-05-14T06:40:03:854Z",
    "toDate": "2026-05-14T06:40:03:854Z"
  },
  "purchaseAccountNumber": "2392433617"
}
```

### Attributes description

| **Parameter**           | **Description**                                                                                                                                                                                    |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `date`                  | Purchase date in YYYY-MM-DD format. Must be a Federal Reserve business day. (required)                                                                                                             |
| `loanType`              | Loan type: 1 = HFS (Held for Sale), 2 = LTHFS (Long-Term Held for Sale), 3 = RET (Retained) (required)                                                                                             |
| `issuingBank`           | Issuing bank identifier (e.g., "CRB") (required)                                                                                                                                                   |
| `mplId`                 | Your Marketplace Lender identifier (required)                                                                                                                                                      |
| `investorId`            | Your Investor identifier (required)                                                                                                                                                                |
| `purchaseAccountNumber` | Specific purchase account to use. If omitted, the default account for your investor will be used (optional)                                                                                        |
| `dateFilter`            | Date types include FundedDate, PurchaseDate, OriginalPurchaseDate andSeasoningStartDate. All date filters use the same <br />YYYY-MM-DD<br /> format. Both the "from" and "to" dates are optional. |

### Sample response

```json
{
  "batchId": "550e8400-e29b-41d4-a716-446655440000",
  "status": "PurchaseRequested",
  "loanCount": 25
}
```

When the purchase is complete, the user can receive a webhook "batchpurchasecomplete".

[title] Create a Line-of-Credit (LOC)/ Draws
[path] Lending/Untitled/

To operate LOC loans or loans with Multiple Draws, or to enable you to buy **draws**, you need to implement the current process:

::::WorkflowBlock
:::WorkflowBlockItem
**Unique Loan number**

- When calling Arix for the first time (LOC opening or first **draw**):
  The field **Loannumber** = `<loan-number>`
- On subsequent loans:
  The field **Loannumber** = `<loanNumber>`-yyyymmdd (add mmss if needed to make more than one draw per day).
:::

:::WorkflowBlockItem
**Oversight**

We perform oversight checks when the LOC is opened or on the first draw.
When calling Arix for the first time, the JSON in `field5` should contain the following:

```json
{
   "RevolvingLineFirstAppearance":"yes",
   "RevolvingLineGUID":null,
   "RevolvingLineBalanceAsOfWhenCallingCRB":null

```

The field Rails should be **\[]**
For subsequent draws, the JSON in `field5` should contain the following:

```json
{
   "RevolvingLineFirstAppearance":"no",
   "RevolvingLineGUID":"GUID from Origination/First Appearance,
   "RevolvingLineBalanceAsOfWhenCallingCRB":"$123"
}
```

Field Rails should contain the payment rails to be funded.
:::

:::WorkflowBlockItem
**NetFunding rule**

| **Loan Tape:**<br />* NetFunding
* OriginationsFee
* Field5MerchantFee<br />**Loan Agreement:**<br />* AmountFinanced | 1. NetFunding=AmountFinanced
2. NetFunding=Loan Amount-Origination Fee-Field5.MerchantFee<br />**Or**<br />     3. For draws, NetFunding= sum of the rails being funded |
| --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
:::

:::WorkflowBlockItem
**Draw rule**

| **Loan Tape**<br />* `Field5RevolvingLineFirstAppearance`
* `Field5RevolvingLineGUID` | 1. If `RevolvingLineFirstAppearance` = ‘**No**’, you can skip all Arix rules if `RevolvingLineGUID` is a valid GUID and it's status is not in (1,101,102,100)
2. If `RevolvingLineGUID` = ‘First Appearance’, pass this rule
3. Room for additional rules inline with what any checks that you make during draws |
| ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
:::

:::WorkflowBlockItem
The information provided on subsequent draws has to be current. For example:

- If there is name change, CR expects the draw to have the updated name.
- If there was a material change, such as a credit report was pulled (say on annual cadence), you must provide the updated credit report and treat the loan as a first appearance so that we can check all the details.
:::
::::


[title] Check if purchase allowed
[path] Lending/Purchasing a loan/

## Check if purchase allowed

:::BlockQuote
**GET** /selling/api/loans/purchase/purchaseAllowed
:::

Check if loan purchasing is allowed on a specific date based on system configuration and business rules (e.g., fed days, blackout periods, system maintenance).

### Query parameters

| Parameter | Type   | Required | Description                                           |
| --------- | ------ | -------- | ----------------------------------------------------- |
| `date`    | String | Yes      | Date to check in YYYY-MM-DD format (e.g., 2026-08-05) |

### Response

**200 OK** - Returns a boolean

:::BlockQuote
true
:::

- `true` - Purchases are allowed on this date
- `false` - Purchases are not allowed on this date

### Example request

:::BlockQuote
**GET** /selling/api/loans/purchase/purchaseAllowed?date=2026-08-05
:::

### Use cases

- Pre-purchase validation: Verify the date is valid before attempting purchase
- Calendar planning: Check multiple dates to plan purchase schedules
- UI validation: Disable purchase buttons for invalid dates
- Date picker restrictions: Only allow selection of valid purchase dates

[title] Check rail
[path] Lending/Loan funding - payment rails/

## Transfer funds by check

To pay down loan proceeds, you can transfer funds by sending a physical check to the borrower or a biller (merchant or business). This is useful when you have to pay billers that do not accept payments via Mastercard RPPS.

You can add an optional Base64 encoded attachment to accompany the check, and it will be mailed as a PDF.

## Check delivery

After a check is issued, it takes about 5 - 7 business days for receipt (Cross River uses USPS first class mail). If a check is not cashed after 15 calendar days, it is canceled. The delivery method and expiration period can be configured differently for your needs.&#x20;

You can call the [Return rails](docId\:cQnvaS7kTizOjddJIbThO) API to stop payment on a check and log on to the [Lending Web Application](https://lendingapp.crbcos.com) (from a [whitelisted IP](docId\:z3wbkvnCkkie3kEJtxLI9)) for any information regarding the check.&#x20;

Webhooks are reported when a check is processed, mailed, tracking information is added, check is cashed, or it expires. For more information on webhooks,  [view webhook events available](docId\:ZKxAN6DslZSy0tVIrJFiZ).

:::hint{type="warning"}
**IMPORTANT**
When you add a date field in a request, the format must be: yyyy-mm-dd, such as 1970-12-05.
:::

## Request parameters

```json
{
{
  "FundingInfoUpdate": {
   "Rails": [
         {    
    "CheckFields": {
          "PhysicalAddressOfRecipient": {
            "Line_1": "Anita Loan",
            "Line_2": "Strawberry Fields Lane",
            "City": "Paradise City",
            "State": "NY",
            "Zip": "11252",
            "Country": "USA"
          },
          "Name": "Anita",
          "Attachment": "{Encoded64 text here}",
          "Description": "Loan from Cross River",
          "Remittance_advice": "",
          "IsPrintedandMailed": "0",
          "CheckEmail": "anita@gmail.com"
        },
"RailType":"CHECK",
"Priority":1,
"Amount":200.0
}
    ]
  }
},
```

## Request parameters

| Attribute                               | Description                                                                                                                                                                                                                                                  |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Rails`<br />array                      | Rail selected, in this case `Check`                                                                                                                                                                                                                          |
| `Line_1`<br />string                    | Check delivery address, line 1.<br />60 character limit if line\_2 is provided.<br />120 characters max length, if line\_2 is not provided.<br /><font color="#eb144c">Required </font>                                                                      |
| `Line_2`<br />string                    | Check delivery address, line 2.<br />60 character limit.<br /><font color="#0F766E">Optional </font>                                                                                                                                                         |
| `City`<br />string                      | City of business for check delivery.<br /><font color="#eb144c">Required </font>                                                                                                                                                                             |
| `State`<br />string<br />               | State of business for check delivery. 2 letters.<br /><font color="#eb144c">Required </font>                                                                                                                                                                 |
| `Zip`<br />string                       | ZIP code of business for check delivery.<br /><font color="#eb144c">Required </font>                                                                                                                                                                         |
| `Country`<br />string                   | Recipient's country. Always US.<br />2-letter country code.<br /><font color="#0F766E">Optional </font>                                                                                                                                                      |
| `Name`<br />string                      | Name of the borrower<br />48 character limit<br /><font color="#eb144c">Required</font>                                                                                                                                                                      |
| `Description`<br />string               | The name of the loan being paid. This is printed on the check and looks best if under 100 chars.<br /><font color="#0F766E">Optional </font>                                                                                                                 |
| `Attachment`<br />string                | Base64 encoded (see below 1 page PDF).<br />It must be encoded and inserted here as text.<br /><font color="#0F766E">Optional </font>                                                                                                                        |
| `Remittance_advice`<br />array          | Base64 encoded text.<br />Up to 700 chars before encoding. Appears on the top third of the page.<br />The check is located on the bottom third of the page.<br />Line breaks and special characters are allowed.<br /><font color="#0F766E">Optional </font> |
| `IsPrintedandMailed`<br />boolean<br /> | Whether the check is being printed and mailed.<br />True if check is being printed and mailed, otherwise, false.<br /><font color="#eb144c">Required</font>                                                                                                  |
| `CheckEmail`<br />string                | Recipient's email.<br /><font color="#0F766E">Optional </font>                                                                                                                                                                                               |
| `Priority`<br />integer                 | Rail priority<br /><font color="#eb144c">Required </font>                                                                                                                                                                                                    |
| `Amount`<br />integer                   | Amount being funded.<br /><font color="#eb144c">Required </font>                                                                                                                                                                                             |

## Attachments

:::hint{type="info"}
If your team utilizes our inserts with checks feature, please make sure you follow the requirements listed below (see `Attachment` attribute). Inserts must be in PDF format.
:::

### These are the requirements for creating your PDF:

- **TrueType fonts must be used**.
- 8.5 x 11 margins are required. Any margins that are smaller or larger than this will not run properly through our programs.
- PDF must be created by Adobe Version 1.4 or better.
- PDF must be in portrait orientation. Inserts oriented in landscape may not print correctly.
- All security on PDF must be removed. PDF can not have edit restriction locks and can not be password protected.
- PDF must be able to display the full page on “actual size” print settings. If an insert is too large to print on the “actual size” setting, the insert will not print properly and the page may be cut off.
- The insert must have all settings embedded/flattened. Fillable form PDF’s that are not embedded cannot be processed correctly and will be rendered blank.
- The blue shaded area shown below should be kept clear. This area is where 2D barcodes are placed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/HCIek7I0UxvyNHQ0EFzVX-wyWDJ-Qj1y44gigKRs-yZ-20240814-114655.png" size="42" width="107" height="117" position="flex-start" darkWidth="107" darkHeight="117" showCaption="false"}

## Postage Fees

Listed fees are postal rates; the bank may add a surcharge.

| **Postage Method**                                 | **Fee** |
| -------------------------------------------------- | ------- |
| USPS First Class - US&#xD;<br />&#xD;              | $0.78   |
| FedEx Express 2 Day&#xD;<br />&#xD;                | $14.86  |
| USPS Certified Mail&#xD;<br />&#xD;                | $10.54  |
| FedEx Express Overnight&#xD;<br />&#xD;            | $30.00  |
| FedEx Priority Overnight&#xD;<br />&#xD;           | $40.00  |
| USPS Overnight&#xD;<br />&#xD;                     | $45.49  |
| USPS Priority "2 day" (delivery confirmation)&#xD; | $18.82  |
| USPS Priority "2 day" (signature required)&#xD;    | $21.32  |




[title] List available purchase accounts
[path] Lending/Purchasing a loan/

## List available purchase accounts

:::BlockQuote
**GET** /selling/api/loans/purchase/accounts
:::

Retrieve all purchase accounts that can be used for purchasing loans with the specified parameters. Returns account configuration details without balance information.

### Query parameters

| Parameter     | Type   | Required | Description                                           |
| ------------- | ------ | -------- | ----------------------------------------------------- |
| `date`        | String | Yes      | Purchase date in YYYY-MM-DD format (e.g., 2026-08-05) |
| `loanType`    | String | Yes      | Loan type: HFS, LTHFS, or RET                         |
| `issuingBank` | String | Yes      | Issuing bank identifier                               |
| `mplId`       | String | No       | MPL identifier (optional)                             |
| `investorId`  | String | No       | Investor identifier (optional)                        |

### Response

**200 OK** - Returns an array of `PurchaseAccount` objects containing account configuration details

### Example request

:::BlockQuote
**GET** /selling/api/loans/purchase/accounts?date=2026-08-05\&loanType=HFS\&issuingBank=CRB\&mplId=ABC
:::

### Use cases

- Account discovery: Find which accounts are configured for specific purchase parameters
- Configuration validation: Verify accounts are set up before attempting purchase
- Account setup troubleshooting: Identify missing account configurations


[title] Purchase receipt
[path] Lending/Purchasing a loan/

## Get purchase receipt

:::BlockQuote
**GET** /selling/api/loans/receipt/\{purchaseId}
:::

Retrieve the purchase receipt (invoice) for a completed purchase batch by its purchase batch ID. Returns after a purchase is completed.

### Path parameters

| **Parameter** | **Type** | **Required** | **Description**                                      |
| ------------- | -------- | ------------ | ---------------------------------------------------- |
| `purchaseId`  | UUID     | Yes          | The purchase batch ID returned from the purchase API |

### Response

**200 OK** - Returns Receipt object containing:

- Purchase batch details
- List of loans purchased in this batch
- Total amounts (loans + interest + fees)
- Timestamp of purchase
- Account information

### Example request

:::BlockQuote
**GET** /selling/api/loans/receipt/3fa85f64-5717-4562-b3fc-2c963f66afa6
:::

### Use cases

- Post-purchase confirmation: Verify all loans in a batch were purchased successfully
- Accounting reconciliation: Match receipt totals to bank transfers
- Record keeping: Archive purchase receipts for audit purposes

Failed loan tracking: Identify any loans that failed to purchase in the batch


[title] Loan aggregation summary
[path] Lending/Purchasing a loan/

## Get loan aggregation summary

:::BlockQuote
**GET** /selling/api/loans/aggregation
:::

Retrieve aggregated loan counts and amounts grouped by loan type and sale status for a specific MPL. Useful for dashboards and high-level reporting.

### Query parameters

| **Parameter**              | **Type** | **Required** | **Description**                                               |
| -------------------------- | -------- | ------------ | ------------------------------------------------------------- |
| `mpl`                      | String   | Yes          | MPL ID                                                        |
| `type`                     | String   | No           | Filter by loan type: HFS, LTHFS, or RET                       |
| `fundedDate`               | Date     | No           | Filter by exact funded date (YYYY-MM-DD)                      |
| `fromFundedDate`           | Date     | No           | Filter loans funded after this date (YYYY-MM-DD)              |
| `toFundedDate`             | Date     | No           | Filter loans funded before this date (YYYY-MM-DD)             |
| `purchaseDate`             | Date     | No           | Filter by exact purchase date (YYYY-MM-DD)                    |
| `fromPurchaseDate`         | Date     | No           | Filter loans with purchase date after this date (YYYY-MM-DD)  |
| `toPurchaseDate`           | Date     | No           | Filter loans with purchase date before this date (YYYY-MM-DD) |
| `fromOriginalPurchaseDate` | Date     | No           | Filter by original purchase date range start (YYYY-MM-DD)     |
| `toOriginalPurchaseDate`   | Date     | No           | Filter by original purchase date range end (YYYY-MM-DD)       |
| `fromSeasoningStartDate`   | Date     | No           | Filter by seasoning start date range start (YYYY-MM-DD)       |
| `toSeasoningStartDate`     | Date     | No           | Filter by seasoning start date range end (YYYY-MM-DD)         |
| `fromPurchasedAt`          | Date     | No           | Filter by purchased timestamp range start (YYYY-MM-DD)        |
| `toPurchasedAt`            | Date     | No           | Filter by purchased timestamp range end (YYYY-MM-DD)          |

### Response

**200 OK** - Returns aggregated data grouped by loan type and status:

- Total loan count per category
- Total loan amounts per category
- Breakdown by sale status (`Pending`, `InSeasoning`, `ReadyForPurchase`, `Purchased`, etc.)

### Example request

:::BlockQuote
**GET** /selling/api/loans/aggregation?mpl=ABC\&type=HFS\&fromFundedDate=2026-07-01\&toFundedDate=2026-07-31
:::

### Use cases

- Dashboard widgets: Display loan portfolio summaries
- Weekly reporting: Generate reports on loans funded or purchased in a date range
- Pipeline monitoring: Track how many loans are in each stage
- MPL portfolio overview: View all loan activity for a specific MPL


[title] Calculate loan total
[path] Lending/Purchasing a loan/

## Calculate loan total

:::BlockQuote
**GET** /selling/api/loans/\{id}/total
:::

Calculate the total amount for a specific loan, including adjusted loan amount plus accrued interest. Use this to preview the purchase amount before executing a purchase.

### Path parameters

| **Parameter** | **Type** | **Required** | **Description**            |
| ------------- | -------- | ------------ | -------------------------- |
| `id`          | UUID     | Yes          | The unique loan identifier |

### Response

**200 OK** - Returns `LoanInfo` object with calculated total

### Example request

`GET`` /selling/api/loans/3fa85f64-5717-4562-b3fc-2c963f66afa6/total`

### Use cases

- Pre-purchase validation: Verify expected purchase amount
- Cash flow planning: Calculate funds needed for upcoming purchases

Interest accrual monitoring: Track daily interest accumulation

##


[title] Loan information
[path] Lending/Purchasing a loan/

## Get loan information

:::BlockQuote
**GET** /selling/api/loans/\{id}/info
:::

Retrieve detailed information for a specific loan by its ID, including all loan attributes and current status.

### Path parameters

| **Parameter** | **Type** | **Required** | **Description**            |
| ------------- | -------- | ------------ | -------------------------- |
| `id`          | UUID     | Yes          | The unique loan identifier |

### Response

**200 OK** - Returns `LoanInfo` object with complete loan details including:

- Loan identification (loan number, ID, investor loan ID)
- Loan type (HFS, LTHFS, RET)
- Status information (origination status, sale status)
- Financial details (loan amount, adjusted amount, interest rate)
- Dates (funded date, purchase date, seasoning dates)
- Associated entities (MPL, investor, issuing bank)

### Example request

:::BlockQuote
**GET** /selling/api/loans/3fa85f64-5717-4562-b3fc-2c963f66afa6/info
:::


[title] SOFR 30-day average
[path] Lending/Purchasing a loan/

## Get SOFR 30-day average

:::BlockQuote
**GET** /selling/api/sofr
:::

This API returns the SOFR 30-day day average from the NY Federal Reserve. This rate is required if your contract with Cross River is using SOFR as the basis for Interest Accrual during the seasoning period.

### Sample response

```json
{
  "date": "2025-09-26T00:00:00+00:00",
  "value": 4.3333
}
```


[title] Environment status
[path] /

These pages contain the system status of our Sandbox and Production environments.

::::LinkArray{contentSource="CUSTOM"}
:::LinkArrayItem{headerType="IMAGE" headerImage="https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-hoPXIl_ZHo9gQGwNb4IHY-20250204-192358.png"}
### [COS](https://crossriverbank.statuspage.io/)&#x20;

COS status page. Real-time information covering Bank Rails, Accounts & Card Issuing
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-hoPXIl_ZHo9gQGwNb4IHY-20250204-192358.png"}
### [Card payments ](https://crbpushtocard.statuspage.io/)

Card payments status page. Real-time information covering Push and Pull to card
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-hoPXIl_ZHo9gQGwNb4IHY-20250204-192358.png"}
### [Lending](https://crossriverarix.statuspage.io/)

Lending status page. Real-time information covering digital lending
:::
::::






[title] Get loan details by ID
[path] Lending/

## GET /LoanDetail/\{Id}

Use this call to retrieve specific collections for a specific loan (by ID). You can retrieve all of the collections, or narrow down your request to retrieve only specific collections.

:::hint{type="info"}
Request URL https\:// ... /LoanDetail/\{Id}
:::

The API response always returns the `OriginalLoanInfo` (original details that were entered when the loan was created), and can also return other information. Therefore, if you made changes to a loan, it's easy to view and compare any of the changes you made to the loan.

To check the collections you've called, look at the **Fields** in the path parameter that show after the equal (=) sign.

## Example

In the response below, only results for `FundingAttempts` and `ProcessedRails` are returned, which in this case doesn't return any responses.

&#x20;`GET /LoanDetail/{Id}?Fields=FundingAttempts,ProcessedRails`

## Loan collections

A loan collection contains a specific set of results, in response to a query that you add to your call.

| Loan collections                     | Description                                                                                                                                                       |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `LoanInfoUpdates`<br />array         | View all updates made to the loan.<br />To view a full list of the parameters returned, see<br />`LoanInfoUpdates` below.                                         |
| `FundingInfoUpdates`<br />array      | View all funding updates made to the loan.<br />To view a full list of the parameters returned, see<br />`FundingInfoUpdates` below.                              |
| `FailedLoanInfoUpdate`<br />array    | View information about a loan that failed.To view a full list of the parameters returned, see<br />`FailedloanInfoUpdate` below.                                  |
| `FailedFundingInfoUpdate`<br />array | View information about the failed loan funding. To view a full list of the parameters returned, see "`FailedFundingInfoUpdate`\*\* below.                         |
| `ProcessedRails`<br />array          | View the rails that were processed for a loan.To view a full list of the parameters returned, go to [Loan funding - payment rails](docId\:GMP-Bavby6sAgCbQlLsJM)  |
| `FundingAttempts`<br />array         | View the number of times funding was attempted. To view a full list of the parameters returned, see `FundingAttempts` below.                                      |
| `ReturnedRails`<br />array<br />     | View the rails that were returned. To view a full list of the parameters returned, go to [Loan funding - payment rails](docId\:GMP-Bavby6sAgCbQlLsJM)             |
| `StatusUpdates`<br />array           | View the status of the loan.<br />                                                                                                                                |
| `Attachments`<br />array             | View the attachments that were submitted, or those that are missing.                                                                                              |
| `RequiredDocs`<br />array            | View the documents that are required for the loan.                                                                                                                |
| `ComplianceLoanResult`<br />array    | View the compliance status of the loan.                                                                                                                           |
| `AdjustmentActions`<br />array       | View updates made to the loan after funding. To view a full list of the parameters returned, go to [NetFunding adjustment](docId\:cznQ0DC0THwigHpVv_ipG).         |

### RequiredDocs collection parameters

This collection returns information about Required Documents and their received status for this loan.

| Attribute    | Description                                       |
| ------------ | ------------------------------------------------- |
| DocumentType | One of the documents required for loan processing |
| Received     | Confirms if a particular document was received    |
| ReceivedDate | Date the document was received                    |

### Status Update parameters

| Attribute                | Description                                                                   |
| ------------------------ | ----------------------------------------------------------------------------- |
| LoanId<br />string       | Unique identifier for a loan                                                  |
| Status<br />string       | Loan status. For more information, see [Enums](docId\:hpq_QWOAKV9JprqwkFR1I). |
| TimeStamp<br />string    | Timestamp for the update                                                      |
| DateInserted<br />string | Timestamp when the status was entered (internal)                              |

### ComplianceLoanResult attributes

This section displays the compliance results of a loan.

| Attribute                  | Description                                    |
| -------------------------- | ---------------------------------------------- |
| `ResultDate`               | Date of the result for the compliance check    |
| `ComplianceRuleResultList` | List of compliance rules, specific to each MPL |

### ComplianceRuleResult parameters

These are the fields of a compliance result of a loan for each specific rule. If a rule failed, you can use these query parameters to check the Data against the Rule to see why it failed.

| Parameter              | Description                                                              |
| ---------------------- | ------------------------------------------------------------------------ |
| `RuleName`<br />string | Name of the compliance rule. Specific for every MPL.                     |
| `Rule`<br />string     | Description of the compliance rule                                       |
| `Data`<br />string     | The actual data that was received for this loan in regards to this rule. |
| `Result`<br />string   | Result of the compliance check.<br />True = Passed<br />False = Failed   |

You can run a loan through compliance a second time with one of these calls:

- [PUT/Loan\{Id}/FundingInfo](docId\:GMP-Bavby6sAgCbQlLsJM)  (to update funding information)
- [PUT/Loan/\{Id}](docId\:v8cArTCqMmQrYCIYHUf7f)  (to update loan information)
- [POST/Loan/\{Id}/Attachments](docId\:uRkNIHuM7qYLQdCEE7tU-)  (to add attachments)

### FundingAttempts&#x20;

This section displays the results of loan funding.

| Attribute                        | Description                                        |
| -------------------------------- | -------------------------------------------------- |
| `Id`<br />string                 | Unique identifier for the loan funding information |
| `LoanId`<br />string             | Unique identifier for the loan                     |
| `Time`<br />string               | Time that the information was returned             |
| `TransactionGroupId`<br />string | ID for the transaction group                       |
| `FundingResult`<br />string      | Indicates if the funding was successful            |
| `AmountFunded`<br />number       | Indicates the amount funded                        |

### LoanInfoUpdate collection parameters

This collection returns information about any updates made to a loan.

| Attribute                 | Description                           |
| ------------------------- | ------------------------------------- |
| `LoanInfoUpdates`         | Unique identifier for the loan update |
| `UpdatedBy`<br />string   | Clerk who updated the loan            |
| `UpdatedOn`<br />DateTime | The date the loan was updated         |

### FundingInfoUpdate collection parameters

This collection returns information about any funding updates made to a loan.

| Attribute                           | Description                                                                                                                                                      |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `LoanId`<br />string                | Unique identifier for the loan                                                                                                                                   |
| `MPLId`<br />string                 | ID of the MPL                                                                                                                                                    |
| `UpdatedBy`<br />string             | Clerk who updated the loan                                                                                                                                       |
| `UpdatedOn`<br />DateTime           | The date the loan was updated                                                                                                                                    |
| `Rails`<br />List\{RailTransaction} | Click [Loan funding - payment rails](docId\:GMP-Bavby6sAgCbQlLsJM) for a list of all rail types                                                                  |
| `TransactionGroupId`<br />string    | Group ID for the transaction                                                                                                                                     |
| `FundingResult`                     | List of possible funding results.<br />- Success<br />- PartialFailure<br />- FundingFailed<br />See [Enums](docId\:hpq_QWOAKV9JprqwkFR1I) for more information. |
| `AmountFunded`<br />decimal         | Dollar amount funded                                                                                                                                             |

### FailedLoanInfoUpdate collection parameters

This collection returns information about loan funding that failed.

| Attribute                         | Description                                            |
| --------------------------------- | ------------------------------------------------------ |
| `FailedLoanInfoUpdateId`          | Unique identifier of information about the failed loan |
| `UpdatedBy`<br />string           | Clerk who updated the loan                             |
| `UpdatedOn`<br />DateTime or null | The date the loan was updated                          |
| `ErrorMessages`<br />string       | Error message                                          |

### FailedFundingInfoUpdate collection parameters

This collection returns information about loan funding that failed.

| Attribute                   | Description   |
| --------------------------- | ------------- |
| `ErrorMessages`<br />string | Error message |



## Sample request in cURL - GET /LoanDetail/\{Id}

:::CodeblockTabs
Get loan details

```curl
curl --location --request GET 'https://arixapisandbox.crbnj.net/LoanDetail/f83f9c6f-c187-4c53-a1c2-ac5800f1626d?Fields=FundingAttempts,ProcessedRails,StatusUpdates,RequiredDocs,Attachments,LoanInfoUpdates,Compliance,ReturnedRails' \
--header 'Accept: application/json' \
--header 'Authorization: <BearerToken>' \
--header 'Cookie: ss-opt=temp; ss-id=u1Hu7zc2oOfCcYrj041C; ss-pid=64sRjkZOPyM2Shfojzg7' \
--data-raw ''
```
:::

## Sample response in JSON - GET /LoanDetail//\{Id}

```json
{
    "OriginalLoanInfo": {
        "Id": "f83f9c6f-c187-4c53-a1c2-ac5800f1626d",
        "MPLId": "TST",
        "Date": "/Date(1603031931240-0000)/",
        "LoanNumber": "DJ-98dcf5dcb2c5407",
        "IssuingBankId": "CRB",
        "Platform": "string",
        "LoanType": "HFS",
        "NoteDate": "/Date(1577768400000-0000)/",
        "BorrowerLastName": "Jacobi",
        "BorrowerFirstName": "Leonie",
        "BorrowerDOB": "/Date(536389200000-0000)/",
        "BorrowerSSN": "841792974",
        "BorrowerAddress": "703_Kacey_Court",
        "BorrowerCity": "New",
        "BorrowerState": "GU",
        "BorrowerZip": "78383",
        "LoanAmount": 500.000000,
        "NetFunding": 1300.000000,
        "Rate": 0.050000,
        "APR": 10.000000,
        "BatchId": "string",
        "BorrowerPhone": "919-959-8725",
        "BorrowerEmail": "Lilyan_Hackett@gmail.com",
        "Amortization": 0,
        "Term": 36,
        "RateType": 0,
        "PriorLoanFlag": "string",
        "FICO": 10,
        "FICODate": "/Date(1514696400000-0000)/",
        "CreditGrade": "string",
        "AssetClass": 0,
        "LoanPurpose": "string",
        "Investor": "string",
        "Servicer": "string",
        "ApplicationDate": "/Date(1603031931177-0000)/",
        "RegBDecisionDate": "/Date(1603031931177-0000)/",
        "PurchaseDate": "/Date(1603252800000-0000)/",
        "PaymentDueDate": "/Date(1608267600000-0000)/",
        "ApprovedLoanAmount": 0.000000,
        "PeriodicPayment": 0.000000,
        "OriginationFee": 100.000000,
        "HomeownerFlag": "string",
        "OpenCreditLines": 0,
        "AnnualIncome": 0,
        "CreditInquiries12months": 0,
        "DQPast24months": 0,
        "PublicRecordsOnFile": 0,
        "EmploymentLength": 0,
        "DebtUtilization": 0.000000,
        "TotalRevolvingDebt": 0.000000,
        "AccountsOpenedPast24months": 0,
        "CollectionsExcludingMedical": 0,
        "MonthsSinceLastRecord": 0,
        "Employer": "string",
        "DTI": 0.000000,
        "MLAFLAG": "string",
        "MAPR": "string",
        "ReceiverName": "string",
        "SameDayFlag": 0,
        "AddendaRecord": "string",
        "CoBorrowerFirstName": "string",
        "CoBorrowerLastName": "string",
        "CoBorrowerDOB": "/Date(536389200000-0000)/",
        "CoBorrowerSSN": "string",
        "CoBorrowerAddress": "string",
        "CoBorrowerCity": "string",
        "CoBorrowerState": "string",
        "CoBorrowerZip": "string",
        "CoBorrowerPhone": "string",
        "CoBorrowerEmail": "string",
        "CoBorrowerFICO": 0,
        "MerchantName": "string",
        "MerchantFee": 0.000000,
        "RefundAmount": 0.000000,
        "AdjustedLoanAmount": 0.000000,
        "AdjustedNetFunding": 0.000000,
        "AdjustedOriginationFee": 0.000000,
        "AdjustedCurrentMonthlyPayment": 0.000000,
        "RefundDate": "/Date(1514696400000-0000)/",
        "AdjustedMerchantFee": 0.000000,
        "FinalPaymentDate": "/Date(1618718400000-0000)/",
        "FinalPayment": 0.000000,
        "FinanceCharge": 0.000000,
        "TotalPayments": 0.000000,
        "PPY": 0,
        "PaymentFrequency": 0,
        "StandardEntryTypeCode": "string",
        "InterestAccrualMethodDays": 0,
        "SubpoolId": "Moe83",
        "Program": "DTM",
        "Field1": "string",
        "Field2": "string",
        "Field3": "string",
        "Field4": "string",
        "Field5": "string",
        "Field6": "string",
        "Field7": "string",
        "Field8": "string",
        "Field9": "string",
        "Field10": "string",
        "Field11": "string",
        "Field12": "string",
        "Field13": "string",
        "Field14": "string",
        "Field15": "string",
        "Field16": "string",
        "Field17": "string",
        "Field18": "string",
        "Field19": "string",
        "Field20": "string",
        "Rails": [
            {
                "ACHFields": {
                    "StandardEntryClassCode": "PPD",
                    "TransactionType": "push",
                    "ToRoutingNumber": "021214891",
                    "ToAccountType": "GL",
                    "ToAccountName": "Test",
                    "ToAccountNumber": "9999999999",
                    "Description": "Test"
                },
                "Id": "e6901e4f-75e3-4e86-a94f-ac5800f1626d",
                "RailType": "COSACH",
                "Priority": 1,
                "Amount": 300.0,
                "LoanId": "f83f9c6f-c187-4c53-a1c2-ac5800f1626d",
                "MPLId": "TST",
                "IssuingBankId": "CRB",
                "IsFailed": false,
                "LoanType": "Undefined"
            }
        ]
    },
    "LoanInfoUpdates": [],
    "ProcessedRails": [],
    "FundingAttempts": [],
    "ReturnedRails": [],
    "StatusUpdates": [
        {
            "Id": 1635439,
            "LoanId": "f83f9c6f-c187-4c53-a1c2-ac5800f1626d",
            "Status": "Received",
            "TimeStamp": "/Date(1603031931243-0000)/",
            "DateInserted": "/Date(1603031931327-0000)/"
        }
    ],
    "Attachments": [],
    "RequiredDocs": [
        {
            "DocumentType": "LoanDocument",
            "Received": false
        }
    ],
    "ComplianceLoanResult": {
        "ResultDate": "/Date(-62135596800000-0000)/",
        "ComplianceRuleResultList": []
    }
}
```




[title] Send stablecoin payment
[path] Onchain payments/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Crypto.Payment.Sent](docId\:l2nT0ZP-yk-ZWesb7d-pt)
- [Crypto.Payment.Canceled](docId\:l2nT0ZP-yk-ZWesb7d-pt)
- [Crypto.Payment.Rejected](docId\:l2nT0ZP-yk-ZWesb7d-pt)
- [Crypto.Payment.Received](docId\:l2nT0ZP-yk-ZWesb7d-pt)

## API reference

Initiates an outbound payment from a given account to a previously created **ExternalAddress** using the `externalAddressId `or to an inline `beneficiary` using the complete `externalAddress `block.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /crypto/v1/payments",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/crypto/v1/payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "GvbYb-XxXg8aAAHK3ybHL",
        "language": "curl",
        "code": "{\n  \"accountNumber\": \"2917000057\",\n  \"amount\": 1000.00,\n  \"externalAddress\": {\n    \"title\": \"John's Metamask Wallet - SOL\",\n    \"blockchain\": \"solana\",\n    \"address\": \"22222222222222222222222222222222222222222222\",\n    \"tag\": \"SOL Wallet\",\n    \"beneficiary\": {\n      \"name\": \"John Doe\",\n      \"addressLine1\": \"2115 Linwood\",\n      \"addressLine2\": \"Ave\",\n      \"city\": \"Fort Lee\",\n      \"stateProvince\": \"NJ\",\n      \"countryCode\": \"US\",\n      \"postalCode\": \"07024\"\n    }\n  },\n  \"originator\": {\n    \"entityType\": \"Business\",\n    \"entityName\": \"SK Corp\",\n    \"addressLine1\": \"2115 Linwood\",\n    \"addressLine2\": \"Ave\",\n    \"city\": \"Fort Lee\",\n    \"stateProvince\": \"NJ\",\n    \"postalCode\": \"07024\",\n    \"countryCode\": \"US\"\n  },\n  \"currency\": \"usdc\",\n  \"feeType\": \"Net\",\n  \"feeLevel\": \"Low\",\n  \"clientIdentifier\": \"test-1\"\n}",
        "customLabel": ""
      },
      {
        "id": "17Mr5Vk8yaVY-ZjWd3icn",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/crypto/v1/payments',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Accept': 'text/plain'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"accountNumber\": \"2917000057\",\n  \"amount\": 1000.00,\n  \"externalAddress\": {\n    \"title\": \"John's Metamask Wallet - SOL\",\n    \"blockchain\": \"solana\",\n    \"address\": \"22222222222222222222222222222222222222222222\",\n    \"tag\": \"SOL Wallet\",\n    \"beneficiary\": {\n      \"name\": \"John Doe\",\n      \"addressLine1\": \"2115 Linwood\",\n      \"addressLine2\": \"Ave\",\n      \"city\": \"Fort Lee\",\n      \"stateProvince\": \"NJ\",\n      \"countryCode\": \"US\",\n      \"postalCode\": \"07024\"\n    }\n  },\n  \"originator\": {\n    \"entityType\": \"Business\",\n    \"entityName\": \"SK Corp\",\n    \"addressLine1\": \"2115 Linwood\",\n    \"addressLine2\": \"Ave\",\n    \"city\": \"Fort Lee\",\n    \"stateProvince\": \"NJ\",\n    \"postalCode\": \"07024\",\n    \"countryCode\": \"US\"\n  },\n  \"currency\": \"usdc\",\n  \"feeType\": \"Net\",\n  \"feeLevel\": \"Low\",\n  \"clientIdentifier\": \"test-1\"\n});\n\nreq.write(postData);\n\nreq.end();"
      },
      {
        "id": "NrJ4e4M9GJ0BX4iz_KRzS",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"accountNumber\": \"2917000057\",\n  \"amount\": 1000.00,\n  \"externalAddress\": {\n    \"title\": \"John's Metamask Wallet - SOL\",\n    \"blockchain\": \"solana\",\n    \"address\": \"22222222222222222222222222222222222222222222\",\n    \"tag\": \"SOL Wallet\",\n    \"beneficiary\": {\n      \"name\": \"John Doe\",\n      \"addressLine1\": \"2115 Linwood\",\n      \"addressLine2\": \"Ave\",\n      \"city\": \"Fort Lee\",\n      \"stateProvince\": \"NJ\",\n      \"countryCode\": \"US\",\n      \"postalCode\": \"07024\"\n    }\n  },\n  \"originator\": {\n    \"entityType\": \"Business\",\n    \"entityName\": \"SK Corp\",\n    \"addressLine1\": \"2115 Linwood\",\n    \"addressLine2\": \"Ave\",\n    \"city\": \"Fort Lee\",\n    \"stateProvince\": \"NJ\",\n    \"postalCode\": \"07024\",\n    \"countryCode\": \"US\"\n  },\n  \"currency\": \"usdc\",\n  \"feeType\": \"Net\",\n  \"feeLevel\": \"Low\",\n  \"clientIdentifier\": \"test-1\"\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'text/plain'\n}\nconn.request(\"POST\", \"/crypto/v1/payments\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))"
      },
      {
        "id": "YTM9OdS68ax2U1wXoWy3H",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/crypto/v1/payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Accept\"] = \"text/plain\"\nrequest.body = JSON.dump({\n  \"accountNumber\": \"2917000057\",\n  \"amount\": 1000.00,\n  \"externalAddress\": {\n    \"title\": \"John's Metamask Wallet - SOL\",\n    \"blockchain\": \"solana\",\n    \"address\": \"22222222222222222222222222222222222222222222\",\n    \"tag\": \"SOL Wallet\",\n    \"beneficiary\": {\n      \"name\": \"John Doe\",\n      \"addressLine1\": \"2115 Linwood\",\n      \"addressLine2\": \"Ave\",\n      \"city\": \"Fort Lee\",\n      \"stateProvince\": \"NJ\",\n      \"countryCode\": \"US\",\n      \"postalCode\": \"07024\"\n    }\n  },\n  \"originator\": {\n    \"entityType\": \"Business\",\n    \"entityName\": \"SK Corp\",\n    \"addressLine1\": \"2115 Linwood\",\n    \"addressLine2\": \"Ave\",\n    \"city\": \"Fort Lee\",\n    \"stateProvince\": \"NJ\",\n    \"postalCode\": \"07024\",\n    \"countryCode\": \"US\"\n  },\n  \"currency\": \"usdc\",\n  \"feeType\": \"Net\",\n  \"feeLevel\": \"Low\",\n  \"clientIdentifier\": \"test-1\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
      },
      {
        "id": "cmZSe02Cu7CFQMpfxSdFE",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/crypto/v1/payments\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"accountNumber\": \"2917000057\",`+\"\n\"+`\n  \"amount\": 1000.00,`+\"\n\"+`\n  \"externalAddress\": {`+\"\n\"+`\n    \"title\": \"John's Metamask Wallet - SOL\",`+\"\n\"+`\n    \"blockchain\": \"solana\",`+\"\n\"+`\n    \"address\": \"22222222222222222222222222222222222222222222\",`+\"\n\"+`\n    \"tag\": \"SOL Wallet\",`+\"\n\"+`\n    \"beneficiary\": {`+\"\n\"+`\n      \"name\": \"John Doe\",`+\"\n\"+`\n      \"addressLine1\": \"2115 Linwood\",`+\"\n\"+`\n      \"addressLine2\": \"Ave\",`+\"\n\"+`\n      \"city\": \"Fort Lee\",`+\"\n\"+`\n      \"stateProvince\": \"NJ\",`+\"\n\"+`\n      \"countryCode\": \"US\",`+\"\n\"+`\n      \"postalCode\": \"07024\"`+\"\n\"+`\n    }`+\"\n\"+`\n  },`+\"\n\"+`\n  \"originator\": {`+\"\n\"+`\n    \"entityType\": \"Business\",`+\"\n\"+`\n    \"entityName\": \"SK Corp\",`+\"\n\"+`\n    \"addressLine1\": \"2115 Linwood\",`+\"\n\"+`\n    \"addressLine2\": \"Ave\",`+\"\n\"+`\n    \"city\": \"Fort Lee\",`+\"\n\"+`\n    \"stateProvince\": \"NJ\",`+\"\n\"+`\n    \"postalCode\": \"07024\",`+\"\n\"+`\n    \"countryCode\": \"US\"`+\"\n\"+`\n  },`+\"\n\"+`\n  \"currency\": \"usdc\",`+\"\n\"+`\n  \"feeType\": \"Net\",`+\"\n\"+`\n  \"feeLevel\": \"Low\",`+\"\n\"+`\n  \"clientIdentifier\": \"test-1\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"text/plain\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
      }
    ],
    "selectedLanguageId": "GvbYb-XxXg8aAAHK3ybHL"
  },
  "results": {
    "languages": [
      {
        "id": "VVw-EG1caZm9nSwDN62Ez",
        "language": "200",
        "code": "{\n  \"id\": \"b6bf7f13-7b91-41cb-87d7-b3640167c96e\",\n  \"referenceId\": \"CRP2694F3L7GUN\",\n  \"partnerId\": \"a6154099-f87f-4944-b974-b32f0108a29a\",\n  \"productId\": \"7c3ef848-8d09-4953-ad55-b32f010ddb05\",\n  \"clientIdentifier\": \"test-1\",\n  \"accountNumber\": \"2917000057\",\n  \"direction\": \"Outbound\",\n  \"status\": \"Hold\",\n  \"blockchain\": \"solana\",\n  \"currency\": \"usdc\",\n  \"unit\": \"Mwei\",\n  \"amount\": 1000.00,\n  \"feeCurrency\": \"sol\",\n  \"feeUnit\": \"Lamport\",\n  \"feeType\": \"Net\",\n  \"feeLevel\": \"Low\",\n  \"sourceAddress\": \"11111111111111111111111111111111111111111111\",\n  \"destinationAddress\": \"22222222222222222222222222222222222222222222\",\n  \"createdAt\": \"2025-09-26T17:49:56.6277343\",\n  \"lastModifiedAt\": \"2025-09-26T21:49:56.6388805Z\",\n  \"postingStatus\": \"Pending\",\n  \"transactionHash\": \"FakeTxHashRepeatingPattern11111111111111111111111111111111111111111111111111111111111111\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "VVw-EG1caZm9nSwDN62Ez"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number initiating the payment. Maximum 20 characters.",
        "": "Account number initiating the payment. Maximum 20 characters."
      },
      {
        "name": "amount",
        "kind": "optional",
        "type": "number",
        "description": "Amount to be sent. Format as a number. For example, in USD 10 cents would appear as 0.10, and 1 dollar as 1.00. Use the currency attribute to indicate which currency to use.",
        "": "Amount to be sent. Format as a number. For example, in USD 10 cents would appear as 0.10, and 1 dollar as 1.00. Use the currency attribute to indicate which currency to use."
      },
      {
        "name": "externalAddressId",
        "kind": "optional",
        "type": "string",
        "description": "A reference code for a saved externalAddress in UUID format. This code is returned in the id parameter when you create an external beneficiary.\nYou MUST provide a value for either the externalAddressId or the externalAddress object but NOT both.",
        "": "A reference code for a saved externalAddress in UUID format. This code is returned in the id parameter when you create an external beneficiary.\nYou MUST provide a value for either the externalAddressId or the externalAddress object but NOT both."
      },
      {
        "name": "externalAddress",
        "kind": "optional",
        "type": "object",
        "description": "Beneficiary details including name and address information.\nYou MUST provide either the externalAddressId or the exteralAddress object but NOT both.",
        "": "Beneficiary details including name and address information.\nYou MUST provide either the externalAddressId or the exteralAddress object but NOT both.",
        "children": [
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number initiating the payment. Maximum 20 characters. This is the same account number that you provided in the main body of the call."
          },
          {
            "name": "title",
            "kind": "required",
            "type": "string",
            "description": "Label for wallet (inline only). Maximum 255 characters."
          },
          {
            "name": "blockchain",
            "kind": "required",
            "type": "string",
            "description": "Blockchain network where payments will be sent (for example, Solana, Ethereum). Maximum 20 characters."
          },
          {
            "name": "address",
            "kind": "required",
            "type": "string",
            "description": "Destination wallet address. Maximum 255 characters."
          },
          {
            "name": "tag",
            "kind": "optional",
            "type": "string",
            "description": "Tag/memo/destination tag if the blockchain requires it. Maximum 255 characters."
          },
          {
            "name": "beneficiary",
            "kind": "required",
            "type": "object",
            "description": "Beneficiary KYC address block. The person or business that receives the payment. ",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Full legal name. Maximum 200 characters."
              },
              {
                "name": "addressLine1",
                "kind": "required",
                "type": "string",
                "description": "First line of the beneficiary’s physical address. Maximum 80 characters."
              },
              {
                "name": "addressLine2",
                "kind": "optional",
                "type": "string",
                "description": "Second line of the beneficiary’s physical address. Maximum 80 characters."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Full name of the city where the beneficiary is located. Maximum 40 characters."
              },
              {
                "name": "stateProvince",
                "kind": "required",
                "type": "string",
                "description": "2-letter code for the state or province of the beneficiary. Maximum 2 characters."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code for the beneficiary's country. Maximum 2 characters."
              },
              {
                "name": "postalCode",
                "kind": "required",
                "type": "string",
                "description": "Postal or ZIP code of the beneficiary. Maximum 20 characters."
              }
            ]
          }
        ],
        "schema": [
          {
            "name": "accountNumber",
            "kind": "required",
            "type": "string",
            "description": "Account number initiating the payment. Maximum 20 characters. This is the same account number that you provided in the main body of the call."
          },
          {
            "name": "title",
            "kind": "required",
            "type": "string",
            "description": "Label for wallet (inline only). Maximum 255 characters."
          },
          {
            "name": "blockchain",
            "kind": "required",
            "type": "string",
            "description": "Blockchain network where payments will be sent (for example, Solana, Ethereum). Maximum 20 characters."
          },
          {
            "name": "address",
            "kind": "required",
            "type": "string",
            "description": "Destination wallet address. Maximum 255 characters."
          },
          {
            "name": "tag",
            "kind": "optional",
            "type": "string",
            "description": "Tag/memo/destination tag if the blockchain requires it. Maximum 255 characters."
          },
          {
            "name": "beneficiary",
            "kind": "required",
            "type": "object",
            "description": "Beneficiary KYC address block. The person or business that receives the payment. ",
            "children": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "Full legal name. Maximum 200 characters."
              },
              {
                "name": "addressLine1",
                "kind": "required",
                "type": "string",
                "description": "First line of the beneficiary’s physical address. Maximum 80 characters."
              },
              {
                "name": "addressLine2",
                "kind": "optional",
                "type": "string",
                "description": "Second line of the beneficiary’s physical address. Maximum 80 characters."
              },
              {
                "name": "city",
                "kind": "required",
                "type": "string",
                "description": "Full name of the city where the beneficiary is located. Maximum 40 characters."
              },
              {
                "name": "stateProvince",
                "kind": "required",
                "type": "string",
                "description": "2-letter code for the state or province of the beneficiary. Maximum 2 characters."
              },
              {
                "name": "countryCode",
                "kind": "required",
                "type": "string",
                "description": "2-letter ISO country code for the beneficiary's country. Maximum 2 characters."
              },
              {
                "name": "postalCode",
                "kind": "required",
                "type": "string",
                "description": "Postal or ZIP code of the beneficiary. Maximum 20 characters."
              }
            ]
          }
        ]
      },
      {
        "name": "originator",
        "kind": "optional",
        "type": "object",
        "description": "The person or entity who the payment is from",
        "": "The person or entity who the payment is from",
        "children": [
          {
            "name": "entityType",
            "kind": "required",
            "type": "string",
            "description": "The type of entity for this payment. Valid values are \"Person\" or \"Business\"."
          },
          {
            "name": "fullName",
            "kind": "required",
            "type": "string",
            "description": "Full legal name of the originator. Maximum 255 characters. Required if entityType is \"Person\""
          },
          {
            "name": "firstName",
            "kind": "optional",
            "type": "string",
            "description": "First name. Maximum 255 characters."
          },
          {
            "name": "lastName",
            "kind": "optional",
            "type": "string",
            "description": "Lastname. Maximum 255 characters."
          },
          {
            "name": "entityName",
            "kind": "optional",
            "type": "string",
            "description": "Entity name. Maximum 255 characters. Required if the entityType is \"Business\"."
          },
          {
            "name": "addressLine1",
            "kind": "optional",
            "type": "string",
            "description": "First line of the originator's physical address. Maximum 80 characters."
          },
          {
            "name": "addressLine2",
            "kind": "optional",
            "type": "string",
            "description": "Second line of the originator’s physical address. Maximum 80 characters."
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "Full name of the city where the originator is located. Maximum 40 characters."
          },
          {
            "name": "stateProvince",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state or province of the originator. Maximum 2 characters."
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code of the originator. Maximum 20 characters."
          },
          {
            "name": "countryCode",
            "kind": "optional",
            "type": "string",
            "description": "2-letter ISO country code for the originator's country. Maximum 2 characters. For a Business entityType, the country where it is registered. For an Person entityType, the country where they're based."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "If entityType is \"Business,\" date of registration. If entityType is \"Person\", date of birth. The date and time are in this format: \"yyyy-mm-dd\"."
          },
          {
            "name": "identificationType",
            "kind": "optional",
            "type": "string",
            "description": "- EIN (Employer Identification Number)\n- IncorporationNumber\nThis ID type is required for a \"Business\" entityType"
          },
          {
            "name": "identificationValue",
            "kind": "optional",
            "type": "string",
            "description": "The unique ID number for that identification type. Maximum 255 characters. This ID is required for a \"Business\" entityType."
          }
        ],
        "schema": [
          {
            "name": "entityType",
            "kind": "required",
            "type": "string",
            "description": "The type of entity for this payment. Valid values are \"Person\" or \"Business\"."
          },
          {
            "name": "fullName",
            "kind": "required",
            "type": "string",
            "description": "Full legal name of the originator. Maximum 255 characters. Required if entityType is \"Person\""
          },
          {
            "name": "firstName",
            "kind": "optional",
            "type": "string",
            "description": "First name. Maximum 255 characters."
          },
          {
            "name": "lastName",
            "kind": "optional",
            "type": "string",
            "description": "Lastname. Maximum 255 characters."
          },
          {
            "name": "entityName",
            "kind": "optional",
            "type": "string",
            "description": "Entity name. Maximum 255 characters. Required if the entityType is \"Business\"."
          },
          {
            "name": "addressLine1",
            "kind": "optional",
            "type": "string",
            "description": "First line of the originator's physical address. Maximum 80 characters."
          },
          {
            "name": "addressLine2",
            "kind": "optional",
            "type": "string",
            "description": "Second line of the originator’s physical address. Maximum 80 characters."
          },
          {
            "name": "city",
            "kind": "optional",
            "type": "string",
            "description": "Full name of the city where the originator is located. Maximum 40 characters."
          },
          {
            "name": "stateProvince",
            "kind": "optional",
            "type": "string",
            "description": "2-letter code for the state or province of the originator. Maximum 2 characters."
          },
          {
            "name": "postalCode",
            "kind": "optional",
            "type": "string",
            "description": "Postal or ZIP code of the originator. Maximum 20 characters."
          },
          {
            "name": "countryCode",
            "kind": "optional",
            "type": "string",
            "description": "2-letter ISO country code for the originator's country. Maximum 2 characters. For a Business entityType, the country where it is registered. For an Person entityType, the country where they're based."
          },
          {
            "name": "birthDate",
            "kind": "optional",
            "type": "string",
            "description": "If entityType is \"Business,\" date of registration. If entityType is \"Person\", date of birth. The date and time are in this format: \"yyyy-mm-dd\"."
          },
          {
            "name": "identificationType",
            "kind": "optional",
            "type": "string",
            "description": "- EIN (Employer Identification Number)\n- IncorporationNumber\nThis ID type is required for a \"Business\" entityType"
          },
          {
            "name": "identificationValue",
            "kind": "optional",
            "type": "string",
            "description": "The unique ID number for that identification type. Maximum 255 characters. This ID is required for a \"Business\" entityType."
          }
        ]
      },
      {
        "name": "currency",
        "kind": "required",
        "type": "string",
        "description": "Asset to send (for example, usdc). Maximum 10 characters.",
        "": "Asset to send (for example, usdc). Maximum 10 characters."
      },
      {
        "name": "feeType",
        "kind": "optional",
        "type": "string",
        "description": "Every crypto transaction requires a network fee. The fee can either be paid up front deducted from the payment amount, or taken later from a partner’s available balance.\n- Gross. Network fee will be deducted from the sent amount\n- Net. Network fee will be taken out from available balance. \nMaximum 10 characters.",
        "": "Every crypto transaction requires a network fee. The fee can either be paid up front deducted from the payment amount, or taken later from a partner’s available balance.\n- Gross. Network fee will be deducted from the sent amount\n- Net. Network fee will be taken out from available balance. \nMaximum 10 characters."
      },
      {
        "name": "feeLevel",
        "kind": "optional",
        "type": "string",
        "description": "Defines the blockchain fee level which will be paid for the transaction by the sender.\nRelevant for ETH and UTXO (for example, Bitcoin) tokens only.\nValid values are Low, Medium or High\nHigher fees result in faster transaction processing.",
        "": "Defines the blockchain fee level which will be paid for the transaction by the sender.\nRelevant for ETH and UTXO (for example, Bitcoin) tokens only.\nValid values are Low, Medium or High\nHigher fees result in faster transaction processing."
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. Maximum 50 characters.",
        "": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes. Maximum 50 characters."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier of the payment"
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "Unique Cross River reference ID for the payment. The reference ID always begins with the first letter of the rail. For Crypto the reference ID starts with 'CRP'.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the wallet parent account is based. Provided by Cross River.",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Account number initiating the payment",
      "children": []
    },
    {
      "name": "direction",
      "kind": "optional",
      "type": "string",
      "description": "\"Outbound\" for sending an onchain payment",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Created, Pending, Hold, Batched, Processing, Completed, Rejected, Canceled, ResearchRequired, Transmitted, Blocked, Returned",
      "children": []
    },
    {
      "name": "blockchain",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain network where payment was sent (for example, Solana, Ethereum)",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Asset sent (for example, USDC)",
      "children": []
    },
    {
      "name": "unit",
      "kind": "optional",
      "type": "string",
      "description": "Base unit used for the asset amount. For example, MWei.",
      "children": []
    },
    {
      "name": "amountNative",
      "kind": "optional",
      "type": "number",
      "description": "Amount in the currency to be sent, if provided/computed (system converts to chain base units).",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "number",
      "description": "Amount in blockchain base units (for example, 0.01 USDC = 10,000 on 6-decimals)",
      "children": []
    },
    {
      "name": "netAmountNative",
      "kind": "optional",
      "type": "string",
      "description": "Net after fees",
      "children": []
    },
    {
      "name": "netAmount",
      "kind": "optional",
      "type": "string",
      "description": "Net after fees in blockchain base units",
      "children": []
    },
    {
      "name": "feeCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Fee asset + unit (for example, sol/Lamport)",
      "children": []
    },
    {
      "name": "feeUnit",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "feeType",
      "kind": "optional",
      "type": "string",
      "description": "Every crypto transaction requires a network fee. The fee can either be paid up front deducted from the payment amount, or taken later from a partner’s available balance.\n- Gross. Network fee will be deducted from the sent amount\n- Net. Network fee will be taken out from available balance. ",
      "children": []
    },
    {
      "name": "feeLevel",
      "kind": "optional",
      "type": "string",
      "description": "Defines the blockchain fee level which will be paid for the transaction by the sender.\nRelevant for ETH and UTXO (for example, Bitcoin) tokens only.\nValid values are Low, Medium or High\nHigher fees result in faster transaction processing.",
      "children": []
    },
    {
      "name": "networkFeeNative",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "networkFee",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "serviceFeeNative",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "serviceFee",
      "kind": "optional",
      "type": "number",
      "description": "Platform fee",
      "children": []
    },
    {
      "name": "sourceAddress",
      "kind": "optional",
      "type": "string",
      "description": "On-chain addresses",
      "children": []
    },
    {
      "name": "sourceAddressUrl",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "destinationAddress",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "destinationAddressUrl",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "externalAddressId",
      "kind": "optional",
      "type": "string",
      "description": "A reference code for a saved externalAddress in UUID format. The payment is sent to this external address, if used in the request.",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Api, PartnerPortal, OpsPortal",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was created in the system. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was processed by Cross River. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm].",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the payment was systemically completed. This can only occur after the payment has successfully posted to the account. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "memoPostRemovedAt",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "postingMessage",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "postingStatus",
      "kind": "optional",
      "type": "string",
      "description": "Internal posting status (Pending, Posted, Failed, Canceled, Authorized, NotApplicable)",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "blockedAt",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "transactionHash",
      "kind": "optional",
      "type": "string",
      "description": "Blockchain transaction hash",
      "children": []
    },
    {
      "name": "transactionHashUrl",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "Payment, Mint, Burn, ReversePayment",
      "children": []
    },
    {
      "name": "referencedPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "originator",
      "kind": "optional",
      "type": "object",
      "description": "The person or entity who the payment is from",
      "children": [
        {
          "name": "entityType",
          "kind": "optional",
          "type": "string",
          "description": "The type of entity for this payment. Valid values are \"Person\" or \"Business\"."
        },
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Full name of the originator"
        },
        {
          "name": "firstName",
          "kind": "optional",
          "type": "string",
          "description": "Originator first name"
        },
        {
          "name": "lastName",
          "kind": "optional",
          "type": "string",
          "description": "Originator last name"
        },
        {
          "name": "entityName",
          "kind": "optional",
          "type": "string",
          "description": "Legal business entity name, if applicable"
        },
        {
          "name": "addressLine1",
          "kind": "optional",
          "type": "string",
          "description": "First line of the originator physical address"
        },
        {
          "name": "addressLine2",
          "kind": "optional",
          "type": "string",
          "description": "Second line of the originator’s physical address, if used"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Full name of the city where the originator is located"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state or province of the originator"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code of the originator"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code for the originator's country"
        },
        {
          "name": "birthDate",
          "kind": "optional",
          "type": "string",
          "description": "If entityType is \"Business,\" date of registration. If entityType is \"Person\", date of birth. The date and time are in this format: \"yyyy-mm-dd\"."
        },
        {
          "name": "identificationType",
          "kind": "optional",
          "type": "string",
          "description": "- EIN (Employer Identification Number)\n- IncorporationNumber"
        },
        {
          "name": "identificationValue",
          "kind": "optional",
          "type": "string",
          "description": "The unique ID number for that identification type"
        }
      ]
    },
    {
      "name": "beneficiary",
      "kind": "optional",
      "type": "object",
      "description": "The person or business that receives the payment",
      "children": [
        {
          "name": "fullName",
          "kind": "optional",
          "type": "string",
          "description": "Full legal name"
        },
        {
          "name": "addressLine1",
          "kind": "optional",
          "type": "string",
          "description": "First line of the beneficiary’s physical address"
        },
        {
          "name": "addressLine2",
          "kind": "optional",
          "type": "string",
          "description": "Second line of the beneficiary’s physical address, if used"
        },
        {
          "name": "city",
          "kind": "optional",
          "type": "string",
          "description": "Full name of the city where the beneficiary is located"
        },
        {
          "name": "stateProvince",
          "kind": "optional",
          "type": "string",
          "description": "2-letter code for the state or province of the beneficiary"
        },
        {
          "name": "postalCode",
          "kind": "optional",
          "type": "string",
          "description": "Postal or ZIP code of the originator"
        },
        {
          "name": "countryCode",
          "kind": "optional",
          "type": "string",
          "description": "2-letter ISO country code for the beneficiary's country"
        }
      ]
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-cryptov1payments",
  "legacyHash": "hWri18PfMpeIMzY9Vh22f"
}
```
:::


[title] Application Pav1 - (legacy)
[path] Lending/Untitled/

## Preapproval

:::hint{type="warning"}
The information below is for the older API set. Please refer to [Application decisioning](docId\:VwjhFeFwgjKJ9lggqLVW9) for the latest and greatest.&#x20;
:::

MPLs perform due diligence for every loan request they receive. An application can be submitted to the Preapproval API whether or not it has been approved or denied. If it hasn’t yet been approved, MPLs can revise the loan application later after a decision was **reached**, **approved**, or **denied** (this includes rejected applications), in accordance with the Fair Lending law.

:::hint{type="info"}
**IMPORTANT**
To access the links below you must have the following IP addresses allowlisted:

Sandbox - 66.206.202.39 , 66.206.202.12

Production -66.206.202.62 , 66.206.202.15
:::



- Swagger: [https://lendingsandbox.crbcos.com/preapproval/swagger](https://lendingsandbox.crbcos.com/preapproval/swagger)
- Base URL for sandbox: [https://lendingsandbox.crbcos.com/preapproval/v1](https://lendingsandbox.crbcos.com/preapproval/v1)
- Base URL for production:[https://lending.crbcos.com/preapproval/v1](https://lending.crbcos.com/preapproval/v1)
- API scope for sandbox is: CosLending\:PreApproval\:stg
- API scope for production is: CosLending\:PreApproval\:prd
- The sandbox UI is [https://lendingappsandbox.crbcos.com/preapproval/applications](https://lendingappsandbox.crbcos.com/preapproval/applications)
- The production UI is [https://lendingapp.crbcos.com/preapproval/applications](https://lendingapp.crbcos.com/preapproval/applications)

| API                                                                                 | Description                                                                  |
| ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| [POST /applications/approve](docId\:cLAKmWjP5vvaSKfvbaoN7)                          | Post an application marked as **approved**                                   |
| [POST /preapproval/v2/applications/\{id}/attachments](docId\:cLAKmWjP5vvaSKfvbaoN7) | Post file attachments to an existing application                             |
| [POST /applications/deny](docId\:cLAKmWjP5vvaSKfvbaoN7)                             | Post an application marked as **denied**, with a declination object attached |
| [POST /application](docId\:cLAKmWjP5vvaSKfvbaoN7)                                   | Post an application without the decisioning                                  |
| [POST /applications/\{id}/approve](docId\:cLAKmWjP5vvaSKfvbaoN7)                    | Update an existing application to **approved** status                        |
| [POST /applications/\{id}/deny](docId\:cLAKmWjP5vvaSKfvbaoN7)                       | Update an existing application to **denied** status                          |

**Notes:**

- During implementation, Cross River and the MPL will agree on additional fields to be passed to CR based on the MPL's unique operating model.
- During implementation, Cross River and the MPL will also agree on the content of the data using the Data Dictionary Monday board. Questions on specific fields should be posted there. If you don't yet have access, contact your Relationship Manager (RM).
- Data types and schemas are available directly in Swagger, which is the "source of truth".
- MPLs should send in their Final Decision using either POST /approve or POST /deny.
- The rules that run when sending in the PreApproval API, are informational. They do not change the status of the application automatically.

## Cross River rules on preapproval

When posting an application using the Preapproval API, Cross River checks the data against a set of regulatory rules and returns the rule results in the API response. The rules run on the Post /Application call (known in the Postman collection as *non-decisioned*). The rules will run on POST /applications/approve as well. The response body includes rule results in the ruleSetResults object, which includes information about the rule and the data used when running the rule. If one of the rules fails on Preapproval, you can assume it will also fail in Arix.

- Currently, there are no webhooks in preapproval.
- The results of the rules are returned synchronously in the response.
- Cross River Ops cannot manually override the result of a rule in pre-approval.
- Pre-approval rules do not alter the status of an application in pre-approval sent in by an MPL.

The following is an example of a `ruleSetResults` object that contains the Cross River Internal List Rule.

```json
"ruleSetResults": [
            {
                "status": "Success",
                "rulesProcessDate": "2023-09-06",
                "ruleResults": [
                    {
                        "ruleId": "92bc95b5-fa3c-468a-b28b-b06800bdb9d7",
                        "version": "v1",
                        "ruleName": "Internal List Check",
                        "ruleDescription": "Borrower information should not be on Bank's Internal List",
                        "passed": true,
                        "data": "Anita Loan 693952XXX,Scrooge McDuck 014512994,UNONX7ENMOKLDCOXSEAUXW28SERFP3XNELOLPL2KOPNZCQ9N8Y )}k;b,)Sv8jco_78(yh^eu4|B:",
                        "resultInfo": null
                    }
                ],
                "preApprovalLoanId": "693751f7-67ec-401a-b945-b0750068734e"
            }
        ]

```

## Data Dictionary

The Data Dictionary is presented to each MPL during the onboarding process. The content to be sent will be agreed upon between Cross River and the MPL before launch. If you can't access the Data Dictionary, contact your RM.

## POST /applications/approve

Use this API to send in a unique application that hasn't been submitted already, and mark it as **approved**. This is the preferred method for sending in an **approved** application.

- For applications that were approved, but not accepted, you should use this API and mark AcceptedByCustomer as **false**.
- For applications that were approved and accepted by the customer, you should use this API and mark AcceptedByCustomer as **true**.

The API returns a unique ID that represents this application in our system.

If the decision changes afterwards, you can update it using POST /applications/\{ID}/deny.

## POST /applications/deny

Use this API to send in a unique application that hasn't been submitted already, and mark it as **denied**. This is the preferred method of sending in an application that has a final status of **denied**. For **denied** applications, an ApplicationDeniedRequest Object containing the reasons for denial, must be sent in along with the application information.

The API returns a unique ID that represents this application in our system.
If the decision changes afterwards, you can update it using POST /applications/\{ID}/approve.

## POST /application

Use this API to send in a unique application that hasn't been submitted already, and where a decision hasn't yet been made yet about the loan application. We *do not* recommend this method of sending in applications unless you have a special use case that requires it.

The API returns a unique ID that represents this application in our system.

When a decision is made, you can update it using POST /applications/\{id}/deny, POST /applications/\{id}/approve.

## POST /applications/\{id}/approve

Use this API to approve an application that has already been submitted. If the application is missing any required fields for an **approved** application, then send the complete application again.

:::hint{type="info"}
This API only marks the application as **approved** and does not update other information.

- No Body is used in this call.
:::

## POST /applications/\{id}/deny

Use this API to mark as **denied** an application that has already been submitted.

An ApplicationDeniedRequest Object containing the reasons for denial and other denial information must be submitted along with the application information.

:::hint{type="warning"}
**IMPORTANT**
Deprecated: CSV File to SFTP folder

For partners who onboarded before 2021, you should continue dropping application tapes into the SFTP folder until you're ready to migrate to API.

- The file format is .csv.
- Naming convention: MplId\_ApplicationTape\_yyyymmdd.csv, where yyyymmdd is the date of file generation.
- Data in the report should be for prior-day applications.
- If a loan changes status (such as from denied to funded), you should include the updated loan record in the tape with the **UpdatedFlag**. The flag indicates that this record updates a previous credit decision for this loan.
:::

## POST/preapproval/v2/applications/\{id}/attachments

This new preapproval API allows you to upload supporting files associated with an application and further improves our compliance practices.

:::hint{type="warning"}
**IMPORTANT**
The zip file should contain the complete document package. This includes:

- The loan agreement
- AAN
- Credit report
- Relevant documents or responses from vendors used to decision the application according to your credit underwriting policy as well as your BSA-AML processes
- Any data point used as input to your model

For a list of acceptable attachment naming conventions, please refer to  [Add loan documents](docId\:uRkNIHuM7qYLQdCEE7tU-)&#x20;
:::

The API is available in the latest Postman collection and in the [Swagger documentation](https://lendingsandbox.crbcos.com/preapproval/v2/swagger/index.html).

[title] Webhook events: Checks
[path] Payments/Checks/

## Common events

When you work with Cross River accounts, cards and payments, you register for specific [webhooks](docId\:qF6bTOPBPNcpLPp9SAtWI) which have a specific [event format](docId\:OIUK28uoUrZIbRmT8i7RS).

This table presents common `checks` webhook events that are described in detail below.

| Event Name                                                                    | Description                                                                                                                      | Related endpoints                                              |
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| [Check.Payment.Sent](docId\:cWUBvaS0BDIfokyxu5LhQ)                            | A check deposit has been sent to the Federal Reserve for clearing                                                                | [Deposit check](docId\:xEOwz2w0C2wFSR3tV8mdy)                  |
| [Check.PrintedPayment.Submitted](docId\:cWUBvaS0BDIfokyxu5LhQ)                | A check has been sent for printing and delivery                                                                                  | [Print check payment](docId:2w_y2m0a0W0ol8Y05TGIG)             |
| [Check.PrintedPayment.Sent](docId\:cWUBvaS0BDIfokyxu5LhQ)                     | The printed check was sent                                                                                                       | [Print check payment](docId:2w_y2m0a0W0ol8Y05TGIG)             |
| `Check.PrintedPayment.Failed`                                                 | Submission of the check for printing failed                                                                                      | [Print check payment](docId:2w_y2m0a0W0ol8Y05TGIG)             |
| [Check.PrintedPayment.Returned](docId\:cWUBvaS0BDIfokyxu5LhQ)                 | The check that was mailed was not delivered and was returned to sender                                                           | [Print check payment](docId:2w_y2m0a0W0ol8Y05TGIG)             |
| [Check.PrintedPayment.Canceled](docId\:cWUBvaS0BDIfokyxu5LhQ)                 | Check printing was canceled and the check will not be sent                                                                       | [Print check payment](docId:2w_y2m0a0W0ol8Y05TGIG)             |
| [Check.Payment.Received](docId\:cWUBvaS0BDIfokyxu5LhQ)                        | A check drawn on an account in COS has been deposited at another bank and has been received from the Federal Reserve for posting | [Deposit check](docId\:xEOwz2w0C2wFSR3tV8mdy)                  |
| [Check.Payment.Rejected](docId\:cWUBvaS0BDIfokyxu5LhQ)                        | Outbound check could not be processed due to compliance reasons or was rejected by the Federal Reserve                           | [Deposit check](docId\:xEOwz2w0C2wFSR3tV8mdy)                  |
| [Check.PositivePay.Created](docId\:cWUBvaS0BDIfokyxu5LhQ)                     | Incoming check authorized for Positive Pay                                                                                       | [Authorize check](docId\:touxH7X9EeSpTKw6VXI4l)                |
| [Check.PositivePay.Revoked](docId\:cWUBvaS0BDIfokyxu5LhQ)                     | Incoming check's Positive Pay status revoked                                                                                     | [Revoke authorization](docId\:YGpxhOjsGdGgo24Udz8lo)           |
| [Core.Transaction.Completed (inbound forward)](docId\:cWUBvaS0BDIfokyxu5LhQ)  | Transaction completed successfully for an incoming check                                                                         |                                                                |
| [Core.Transaction.Completed (outbound return)](docId\:cWUBvaS0BDIfokyxu5LhQ)  | Transaction completed for simulated inbound return                                                                               | [Simulate inbound check return](docId\:RTk-hNjDYEP4Uma9yv1vq)  |
|                                                                               | Transaction completed for print check                                                                                            | [Print check payment](docId:2w_y2m0a0W0ol8Y05TGIG)             |

## Event examples

### Check.Payment.Sent

:::CodeblockTabs
Sample Event

```curl
{
  "id": "bfdf9c39-633f-4cf2-be4a-b2e201334528",
  "eventName": "Check.Payment.Sent",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T14:38:44.177+00:00",
  "resources": [
    "checks/v1/payments/9a2975ce-2466-4c4b-87a0-b2e201330da8"
  ],
  "details": [
    {
      "paymentId": "9a2975ce-2466-4c4b-87a0-b2e201330da8",
      "paymentType": "Forward",
      "coreTransactionId": "2ccddeaf-a957-4936-8837-b2e201330da8",
      "memoPostId": "879645d9-ec6e-4ffe-beeb-b2e201330da8",
      "accountNumber": "2207975570",
      "depositBusinessDate": "250519",
      "postingCode": "OK",
      "amount": "15000",
      "recognizedAmount": "100",
      "payerRoutingNumber": "314074269",
      "payerAccountNumber": "28293886",
      "checkNumber": "1237",
      "checkType": "Standard",
      "sequenceNumber": "5894754816",
      "micr": "1237",
      "purpose": "SKIP_IQA",
      "clientIdentifier": null,
      "schedule": "0,15000",
      "policy": "Standard",
      "rejectionReason": null,
      "isRedeposit": "False",
      "originalPaymentId": "9a2975ce-2466-4c4b-87a0-b2e201330da8"
    }
  ]
}
```
:::

### Check.PrintedPayment.Submitted

:::CodeblockTabs
Sample event

```json
{
  "id": "519b80ca-4f34-43b1-adfd-b4a200db4f11",
  "eventName": "Check.PrintedPayment.Submitted",
  "status": "Pending",
  "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
  "createdAt": "2026-08-10T09:18:28.743-04:00",
  "resources": [
    "checks/v1/printed-payments/db2c7bbc-abb2-43b4-8889-b4a200db44b9"
  ],
  "details": [
    {
      "transactionId": "db2c7bbc-abb2-43b4-8889-b4a200db44b9",
      "checkNumber": "1002",
      "amount": "50000",
      "status": "Submitted",
      "memo": "Test check print",
      "fundingAccountNumber": "2136870751",
      "stubText": null,
      "postageCode": "UspsFirstClass",
      "payeeName": "Frank Wright",
      "clientIdentifier": null
    }
  ]
}
```
:::

### Check.PrintedPayment.Sent

:::CodeblockTabs
Sample event

```json
{
  "id": "e184494e-1103-4b9e-835b-b4a201003c02",
  "eventName": "Check.PrintedPayment.Sent",
  "status": "Pending",
  "partnerId": "a3b921b9-f892-4b5a-9330-b41000fc29ad",
  "createdAt": "2026-08-10T11:32:55.26-04:00",
  "resources": [
    "checks/v1/printed-payments/a9f09ef1-b399-4630-9bb8-b4a200ff0934"
  ],
  "details": [
    {
      "transactionId": "a9f09ef1-b399-4630-9bb8-b4a200ff0934",
      "checkNumber": "1000",
      "amount": "1313",
      "status": "Mailed",
      "memo": "testing print check",
      "fundingAccountNumber": "169726919452",
      "stubText": "",
      "postageCode": "UspsFirstClass",
      "payeeName": "Jon West",
      "clientIdentifier": "test1 check"
    }
  ]
}
```
:::

### Check.PrintedPayment.Returned

:::CodeblockTabs
Sample event

```json
{
  "id": "2b57ddc9-f6b8-4e51-9d15-b4a201008233",
  "eventName": "Check.PrintedPayment.Returned",
  "status": "Pending",
  "partnerId": "a3b921b9-f892-4b5a-9330-b41000fc29ad",
  "createdAt": "2026-08-10T11:33:55.143-04:00",
  "resources": [
    "checks/v1/printed-payments/a9f09ef1-b399-4630-9bb8-b4a200ff0934"
  ],
  "details": [
    {
      "transactionId": "a9f09ef1-b399-4630-9bb8-b4a200ff0934",
      "checkNumber": "1000",
      "amount": "1313",
      "status": "Returned",
      "memo": "test print check",
      "fundingAccountNumber": "169726919452",
      "stubText": "",
      "postageCode": "UspsFirstClass",
      "payeeName": "Jon West",
      "clientIdentifier": "test1 check"
    }
  ]
}
```
:::

### Check.PrintedPayment.Canceled

:::CodeblockTabs
Sample event

```json
{
  "id": "69bb3264-53db-4a6e-aa85-b4a20100a55a",
  "eventName": "Check.PrintedPayment.Canceled",
  "status": "Pending",
  "partnerId": "a3b921b9-f892-4b5a-9330-b41000fc29ad",
  "createdAt": "2026-08-10T11:34:25.143-04:00",
  "resources": [
    "checks/v1/printed-payments/a9f09ef1-b399-4630-9bb8-b4a200ff0934"
  ],
  "details": [
    {
      "transactionId": "a9f09ef1-b399-4630-9bb8-b4a200ff0934",
      "checkNumber": "1000",
      "amount": "1313",
      "status": "Canceled",
      "memo": "test print check",
      "fundingAccountNumber": "169726919452",
      "stubText": "",
      "postageCode": "UspsFirstClass",
      "payeeName": "Jon West",
      "clientIdentifier": "test1 check"
    }
  ]
}
```
:::

### Check.Payment.Received

The `coreTransactionId` here is the same as the `transactionId`, and the `paymentId` is the same as the `railId`, in the related [Core.Transaction.Completed](docId\:cWUBvaS0BDIfokyxu5LhQ) event.

:::CodeblockTabs
Sample Event

```curl
{
  "id": "d833908c-2248-47bd-b20a-b440010f078f",
  "eventName": "Check.Payment.Received",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2026-05-04T12:26:47.3-04:00",
  "resources": [
    "checks/v1/payments/b5186a19-d6be-424c-b4cf-b440010eed46"
  ],
  "details": [
    {
      "paymentId": "b5186a19-d6be-424c-b4cf-b440010eed46",
      "coreTransactionId": "024ae28e-9f37-4505-a6db-b440010eed46",
      "accountNumber": "105722736391",
      "checkNumber": "1253",
      "bofdRoutingNumber": "061000146",
      "payeeName": "Verizon Wireless",
      "checkType": "Unknown",
      "sequenceNumber": "3762766875",
      "clientIdentifier": null,
      "positivePayResult": null,
      "positivePayMatchId": null,
      "amount": "6999"
    }
  ]
}
```
:::

### Check.Payment.Rejected

:::CodeblockTabs
Sample Event

```curl
{
  "id": "fecaad6b-a2be-40e3-a4ad-b2e20133afcc",
  "eventName": "Check.Payment.Rejected",
  "status": "Pending",
  "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
  "createdAt": "2025-05-19T14:40:15.167+00:00",
  "resources": [
    "checks/v1/payments/a0a8c33b-9e30-4356-8c13-b2e201338f14"
  ],
  "details": [
    {
      "paymentId": "a0a8c33b-9e30-4356-8c13-b2e201338f14",
      "paymentType": "Forward",
      "coreTransactionId": "2c951cb5-b9f1-4455-b1b9-b2e201338f14",
      "memoPostId": "79c6727e-2fb8-4d8f-a207-b2e201338f14",
      "accountNumber": "2207975570",
      "depositBusinessDate": "250519",
      "postingCode": "OK",
      "amount": "75000",
      "recognizedAmount": "100",
      "payerRoutingNumber": "314074269",
      "payerAccountNumber": "28293886",
      "checkNumber": "1237",
      "checkType": "Standard",
      "sequenceNumber": "6017013176",
      "micr": "1237",
      "purpose": "SKIP_IQA",
      "clientIdentifier": null,
      "schedule": "0,7500,67500",
      "policy": "Standard",
      "rejectionReason": "NotSpecified",
      "isRedeposit": "False",
      "originalPaymentId": "a0a8c33b-9e30-4356-8c13-b2e201338f14"
    }
  ]
}
```
:::

### Check.PositivePay.Created

:::CodeblockTabs
Sample event

```curl
{
  "id": "8cdc3968-503b-4097-ad42-b4a200dd4629",
  "eventName": "Check.PositivePay.Created",
  "status": "Pending",
  "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
  "createdAt": "2026-08-10T09:25:38.047-04:00",
  "resources": [
    "checks/v1/positive-pay-authorizations/80131866-a232-4df3-8562-b4a200dd23b3"
  ],
  "details": [
    {
      "positivePayId": "80131866-a232-4df3-8562-b4a200dd23b3",
      "accountNumber": "2640511503",
      "amount": "100000",
      "checkNumber": "1238",
      "payeeName": "John Strong",
      "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
      "productId": "83bed086-8182-4151-a1e3-af5b01362783"
    }
  ]
}
```
:::

### Check.PositivePay.Revoked

:::CodeblockTabs
Sample Event

```curl
{
  "id": "6a78c762-8b8d-42e9-9e4f-b4a200dd8f48",
  "eventName": "Check.PositivePay.Revoked",
  "status": "Pending",
  "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
  "createdAt": "2026-08-10T09:26:40.447-04:00",
  "resources": [
    "checks/v1/positive-pay-authorizations/80131866-a232-4df3-8562-b4a200dd23b3"
  ],
  "details": [
    {
      "positivePayId": "80131866-a232-4df3-8562-b4a200dd23b3",
      "accountNumber": "2640511503",
      "amount": "100000",
      "checkNumber": "1238",
      "payeeName": "John Strong",
      "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
      "productId": "83bed086-8182-4151-a1e3-af5b01362783"
    }
  ]
}
```
:::

### Core.Transaction.Completed (inbound forward)

Note the `transactionCode` here is **Check**.

:::CodeblockTabs
Sample Event

```curl
{
  "id": "61bd2058-cd8a-489a-a4ac-b440010f078e",
  "eventName": "Core.Transaction.Completed",
  "status": "Pending",
  "partnerId": "ba9d0234-26e9-43a2-9070-aedd0108eadb",
  "createdAt": "2026-05-04T12:26:47.287-04:00",
  "resources": [
    "core/v1/transactions/024ae28e-9f37-4505-a6db-b440010eed46"
  ],
  "details": [
    {
      "transactionId": "024ae28e-9f37-4505-a6db-b440010eed46",
      "transactionCode": "Check",
      "debitSubAccount": "105722736391",
      "debitMasterAccount": "105722736391",
      "debitResult": "OK",
      "creditSubAccount": "26250000095",
      "creditMasterAccount": "26250000095",
      "creditResult": "OK",
      "rail": "Checks",
      "railId": "payment/b5186a19-d6be-424c-b4cf-b440010eed46",
      "amount": "6999",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "CHECK #1253 REF: C124NP2035YA",
      "proposedAt": "05/04/2026 12:26:24",
      "executedAt": "05/04/2026 12:26:25",
      "schedule": ""
    }
  ]
}
```
:::

### Core.Transaction.Completed (outbound return)

Note the `transactionCode` here is **Reversal**.

:::CodeblockTabs
Sample event

```json
{
    "id": "b431bf23-0949-48f6-89ff-b48c006d4f12",
    "eventName": "Core.Transaction.Completed",
    "status": "Pending",
    "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
    "createdAt": "2026-07-19T02:37:58.957-04:00",
    "resources": [
        "core/v1/transactions/7153b673-bf50-4b9b-b097-b48c006d4d1f"
    ],
    "details": [
        {
            "transactionId": "7153b673-bf50-4b9b-b097-b48c006d4d1f",
            "transactionCode": "Reversal",
            "debitSubAccount": "2203250853",
            "debitMasterAccount": "2203250853",
            "debitResult": "OK",
            "creditSubAccount": "20020020027",
            "creditMasterAccount": "20020020027",
            "creditResult": "OK",
            "rail": "Checks",
            "railId": "payment/3366874c-b887-4532-aec7-b48c006d4d1f",
            "amount": "10000",
            "currency": "usd",
            "clientIdentifier": null,
            "description": "RETURNED CHECK #1237 REF: C200R1684TDQ",
            "proposedAt": "07/19/2026 02:37:57",
            "executedAt": "07/19/2026 02:37:57",
            "schedule": ""
        }
    ]
}
```
:::

### Core.Transaction.Completed (print check submitted)

Note the `transactionCode` here is **Account Transfer**. This indicates that the funds were received from the customer account to the check printing account. A new [Core.Transaction.Completed](docId\:cWUBvaS0BDIfokyxu5LhQ) fires when the check is presented for payment.

The `transactionId ` in this event is the same as the `printedPaymentId`.

:::CodeblockTabs
Sample event

```json
{
  "id": "7c0c3709-6feb-44ca-8d94-b4a200db4ef7",
  "eventName": "Core.Transaction.Completed",
  "status": "Pending",
  "partnerId": "cd9c12f4-7691-424a-b38b-af5b0134c611",
  "createdAt": "2026-08-10T09:18:28.66-04:00",
  "resources": [
    "core/v1/transactions/db2c7bbc-abb2-43b4-8889-b4a200db44b9"
  ],
  "details": [
    {
      "transactionId": "db2c7bbc-abb2-43b4-8889-b4a200db44b9",
      "transactionCode": "Account Transfer",
      "debitSubAccount": "2136870751",
      "debitMasterAccount": "2136870751",
      "debitResult": "OK",
      "creditSubAccount": "2532597750",
      "creditMasterAccount": "2532597750",
      "creditResult": "OK",
      "rail": "Checks",
      "railId": "printed/db2c7bbc-abb2-43b4-8889-b4a200db44b9",
      "amount": "50000",
      "currency": "usd",
      "clientIdentifier": null,
      "description": "Test check print",
      "proposedAt": "08/10/2026 09:18:19",
      "executedAt": "08/10/2026 09:18:19",
      "schedule": ""
    }
  ]
}
```
:::


[title] Loan funding - payment rails
[path] Lending/

## Fund transfer methods

A payment rail is the method by which Arix transfers funds. Arix uses these rails:

- [ACH / Same Day ACH](docId\:AmGQAO1V8_1JJlzlX3JHA)&#x20;
- [Physical checks](docId\:DbSSCTmmsCExM9uObFa4n)&#x20;
- [RPPS](docId\:UPlD8R5oTHB3PDnL_CJrL)&#x20;
- [Internal transfer (XPay)](docId\:NBgK9WdJhe6Dy7iMKO-W-)&#x20;
- [RTP](docId\:GIvRmOlnPEgzvdXOiKQW6)&#x20;
- [Card](docId\:f6s7wNyFtdq1mMgxPPnzM)&#x20;
- [Wire](docId:3KsA-jsyJ0pCqtDdHl8sp)&#x20;

:::hint{type="warning"}
**IMPORTANT**
To track rails, use the RailId you receive back after the API call.
Funding is an automated process.
It is your responsibility to review your records before you create any loans or requests for funding.
:::

## PUT /Loan/\{Id}/FundingInfo

Use this call to add new payment rails for a particular loan. This API call replaces rails that haven't been successfully funded.

:::hint{type="info"}
Request URL https\:// .../Loan/\{ld}/FundingInfo
:::

You can use this call to:

- Attempt disbursements to the borrower in case of returns or failures
- Make multiple disbursements, one or more rails, as needed
- Add rails

Funds can be sent as one net sum or in multiple disbursements. Arix automatically calculates the sum of the loan and adjusts the amount down (if necessary) so that no funds that exceed the approved loan amount are sent.

:::hint{type="warning"}
**IMPORTANT**
When you send a PUT call to update loan information, already processed rails and rails that are in the process of being funded aren't affected.
:::

## Sample request in JSON - PUT /Loan/\{Id}/FundingInfo

In this sample request, we used this API to request one disbursement of $7,000 using the RPPS rail.

```json
{
    "FundingInfoUpdate": {
        "Rails": [
            {
                "RailType": "RPPS",
                "Priority": 1,
                "Amount": 7000,
                "RPPSFields": {
                    "BillerID": "132654654632135423452",
                    "BillerName": "Anita Loan",
                    "ConsumerNameAtBiller": "TestNameAtBiller",
                    "ConsumerAccountNumberAtBiller": "5454546498195454"
                }
            }
        ]
    }
}
```

## Sample response in JSON - PUT /Loan/\{Id}/FundingInfo

```json
"Rails": [
    {
        "RPPSFields": {
            "BillerID": "132654654632135423452",
            "BillerName": "Anita Loan",
            "ConsumerNameAtBiller": "TestNameAtBiller",
            "ConsumerAccountNumberAtBiller": "5454543427795454"
        },
        "Id": "a974ce4a-e7b3-4310-bc2b-ac6900e79b1a",
        "RailType": "RPPS",
        "Priority": 1,
        "Amount": 7000,
        "LoanId": "ca485557-20c3-4a5b-b123-ac6900da4728",
        "MPLId": "TST",
        "IsFailed": false,
        "LoanType": "Undefined"
    }
]
```

## RailTransaction attributes

These properties are returned for rail transactions.

Every rail includes a **GUID**, which is a unique identifier for the rail which you can use to match the rail request to the rail response.

| Attribute                                                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `RailId`<br />GUID                                               | Unique identifier for a rail                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `LoanId`<br />string                                             | Unique identifier for a loan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `RailType`<br />[RailType](docId\:hpq_QWOAKV9JprqwkFR1I) or null | Type of rail for payment<br />Select the RailType Enum:<br />* [COSACH](docId\:AmGQAO1V8_1JJlzlX3JHA)&#x20;
* [COSACHSD](docId\:AmGQAO1V8_1JJlzlX3JHA)&#x20;
* [AdjustmentAction](docId\:cznQ0DC0THwigHpVv_ipG)  (Not a payment rail)
* [Check](docId\:DbSSCTmmsCExM9uObFa4n)&#x20;
* [RPPS](docId\:UPlD8R5oTHB3PDnL_CJrL)&#x20;
* [Internal Transfer (XPay)](docId\:NBgK9WdJhe6Dy7iMKO-W-)&#x20;
* [RTP (Instant Payments)](docId\:GIvRmOlnPEgzvdXOiKQW6) &#x20;
* [Wire](docId:3KsA-jsyJ0pCqtDdHl8sp)&#x20;
* [Card](docId\:f6s7wNyFtdq1mMgxPPnzM)  &#x20; |
| Priority<br />integer or null                                    | Order the rails should be processed - starts with number 1.<br />If all the rails have the same number, Arix processes them in the order they were received.                                                                                                                                                                                                                                                                                                                                                                                                 |
| Amount<br />decimal<br />                                        | Amount attempted to process on this rail. If left blank, Arix attempts to process the full balance.                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `MPLId`<br />string                                              | ID of the MPL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `IssuingBankId`<br />string                                      | ID of the issuing bank                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `IsFailed`<br />boolean                                          | Indicates if the loan transmission failed.<br />True or false.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `LoanType`<br />string                                           | Type of loan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `AmountFunded`<br />decimal                                      | Dollar amount funded                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `RailTransactionId`<br />string                                  | Unique identifier for a rail transaction<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `FundResultRailResultType`                                       | Result of the funding. See [Enums](docId\:hpq_QWOAKV9JprqwkFR1I).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `Message`<br />string                                            | Message returned                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `ProcessedAt`<br />DateTime                                      | Date the rail was processed                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `TransactionGroupId`<br />GUID                                   | Unique identifier of the transaction group                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

## Rail cutoff times

- The bank reserves 1.5 - 2 hours for pre-processing of funding before the network cutoff times below.&#x20;
- Only loans that completed all underwriting checks are funded.&#x20;
- Loans that miss a cutoff will auto-roll to the next processing window.&#x20;
- Cut off times noted below are in Business Days, unless 24/7 is noted.

| Rail type                                                          | Cutoff times                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ACH                                                                | Cutoff is 16:00 EST. The Fed accepts submissions until 18:00 EST.                                                                                                                                                                                                                                                                                             |
| ACH SD (Same Day)<br />Limited to $1,000,000 per transaction       | Cutoff is 13:00 EST. The Fed accepts submissions until 14:45 EST.<br />Extended Same Day cut off is 14:30 EST. The Fed accepts submissions until 16:45 EST.                                                                                                                                                                                                   |
| Cards                                                              | 24/7 (no cutoff times)                                                                                                                                                                                                                                                                                                                                        |
| Checks                                                             | Cutoff is 11:00 EST                                                                                                                                                                                                                                                                                                                                           |
| Mastercard RPPS                                                    | Support for 3 MC RPPS processing cycles:<br />03:00 EST – 05:00 EST<br />13:00 EST – 15:00 EST<br />21:00 EST – 23:00 EST<br />To have a transaction included in a processing cycle, it has to be submitted no later than 50 minutes before the cutoff. Any transactions submitted later than 50 minutes before the cutoff time, will flow to the next cycle. |
| Internal Transfer (XPay)                                           | 24/7 (no cutoff times)                                                                                                                                                                                                                                                                                                                                        |
| RTP (Real Time Payment)<br />Limited to $1,000,000 per transaction | 24/7 (no cutoff times)                                                                                                                                                                                                                                                                                                                                        |
| Wires                                                              | Cutoff is 17:00 EST. Wires are released to the Fed once an hour. The last release is at the cutoff time.                                                                                                                                                                                                                                                      |

## ACH return cutoff times

ACH returns are received in batches, with the following cutoff times:

| ACH returns | 1. First Batch: 12:00 AM EST<br />2. Second Batch: 3:00 AM EST<br />3. Third Batch: 11:30 AM EST<br />4. Fourth Batch: 3:30 PM EST<br />5. Fifth Batch: 4:30 PM EST |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


[title] Enums
[path] Lending/

## LoanStatusEnum

These enums communicate the status of a loan.

| Enums                       | Enum number | Description                                                                                                                                                                                            |
| --------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Received`                  | 1           | Arix received a new loan application.<br />Send attachments as the next step in the process.                                                                                                           |
| `DocsComplete`              | 2           | All required documents were received                                                                                                                                                                   |
| `PassedCompliance`          | 3           | Loan successfully passed compliance                                                                                                                                                                    |
| `Approved`                  | 4           | Loan was approved for funding                                                                                                                                                                          |
| `InFunding`                 | 5           | At least 1 rail was submitted for funding                                                                                                                                                              |
| `Funded`                    | 6           | Full loan amount was funded                                                                                                                                                                            |
| `AccountingEntriesComplete` | 7           | An internal Cross River process. Confirms that account entries are complete.                                                                                                                           |
| `ReadyToSell`               | 8           | Loan finished the seasoning period and is ready to be sold <font color="#ae2138">(not in use)</font><br />Use the `ReadyForPurchase` status from [LoanSaleStatusUpdated](docId\:hpq_QWOAKV9JprqwkFR1I) |
| `Sold`                      | 9           | Loan was sold <font color="#ae2138">(not in use)</font><br />Sale info is on the post-purchase report in SFTP                                                                                          |
| `Settled`                   | 10          | Loan was paid back by end user <font color="#ae2138">(not in use)</font>                                                                                                                               |
| `AwaitingFunding`           | 11          | All compliance rules were passed and the system is waiting for the funding information. Once in this status, only a `PUT /FundingInfo` will get the loan funded.                                       |
| `InReverse`                 | 80          | A return/ cancel has been requested, and the funding is being returned to the originating account.                                                                                                     |
| `AccountingEntriesReversed` | 90          | *Internal status*<br />Loan was canceled or fully returned and accounting entries were reversed.                                                                                                       |
| `Cancelled`                 | 100         | Issuing bank canceled the loan. **Terminal State**                                                                                                                                                     |
| `ComplianceFailed`          | 101         | Loan failed the compliance check                                                                                                                                                                       |
| `Rejected`                  | 102         | Issuing bank didn't approve - possible only prior to funding. **Terminal State**.                                                                                                                      |
| `Returned`                  | 103         | All rails that were successfully funded came back as returned                                                                                                                                          |
| `NotFullyFunded`            | 104         | Funding was attempted, but a balance remains to be funded                                                                                                                                              |

## FundingResult enums

These enums communicate the results of a funding attempt.

| Enums            | Enum number | Description                                        |
| ---------------- | ----------- | -------------------------------------------------- |
| `Success`        | 0           | All funded                                         |
| `PartialFailure` | 1           | Some funds were sent successfully, but some failed |
| `FundingFailed`  | 2           | Funding failed and nothing was funded              |

## RailResultType enums

These enums communicate the results of a rail transaction as part of the funding attempt.

| Enums                                | Enum number | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `NotAttemptd`                        | 0           | Rail wasn't attempted                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `Requested`                          | 1           | API call was successful and the funds are pending transmission                                                                                                                                                                                                                                                                                                                                                                                             |
| `Success`                            | 2           | Full requested amount has been funded and released on the rail.<br />**Note:** There is lag time between the time an ACH is sent and when it is received (by the receiving bank), usually 1 business day (unless it was sent as a same-day ACH).<br />Cross River considers the rail a `success` if and until we receive a notice from the receiving bank that the rail failed. At that time, the status of the rail changes from `Success` to `Returned`. |
| `RequestFailure`                     | 3           | The request to fund failed immediately upon request (usually due to a mistake in the API instructions.)                                                                                                                                                                                                                                                                                                                                                    |
| `Rejected`                           | 4           | The rail was rejected                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `Returned`                           | 5           | The rail that was sent and marked as `success` was returned.                                                                                                                                                                                                                                                                                                                                                                                               |
| `Skipped`                            | 6           | A rail was skipped. No need to reattempt the funding.                                                                                                                                                                                                                                                                                                                                                                                                      |
| `ValidationFail`                     | 7           | The rail failed because it could not be validated                                                                                                                                                                                                                                                                                                                                                                                                          |
| `CosAchPaymentRejected`              | 8           | Arix received a notification that a specific ACH rail was rejected<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                   |
| `CosAchPaymentCanceled`              | 9           | Cross River Ops canceled the ACH payment<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                                             |
| `CosAchNocReceived`                  | 10          | A Notice of Change (NOC) was received. Relevant for recurrent disbursements.<br />(*Internal Ops*)<br />Contact customer for updated instructions.                                                                                                                                                                                                                                                                                                         |
| `CosAchHoldEscalated`                | 11          | Cross River Ops put the ACH transaction on hold<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                                      |
| `CosCoreTransactionCompleted`        | 12          | COS Core (part of XPay) transaction was completed successfully<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                       |
| `CosCoreTransactionRejected`         | 13          | COS Core (part of XPay) transaction was unable to complete<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                           |
| `CosXPaymentReceived`                | 15          | Inbound payment request has been received and is awaiting approval<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                   |
| `CosXPaymentCanceled`                | 16          | Payment canceled at the sender's request or has expired<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                              |
| `CosXPaymentRejected`                | 17          | Payment was rejected by the receiver<br />(*Internal Ops*)<br />                                                                                                                                                                                                                                                                                                                                                                                           |
| `CosXPaymentFailed`                  | 18          | Payment failed to post to either the sender or receiver's account.<br />Most commonly due to insufficient funds (*Internal Ops*)                                                                                                                                                                                                                                                                                                                           |
| `CosXPaymentCompleted`               | 19          | Payment has been posted to both the sender and receiver's accounts<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                   |
| `CosCoreTransactionCompletedReverse` | 20          | COS Core (part of XPay) reversal transaction has been completed<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                      |
| `CosXPaymentRejectedReverse`         | 24          | COS XPay requested reversal hasn't been approved<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                                     |
| `CosXPaymentFailedReverse`           | 25          | COS XPay requested reversal was unable to be reversed<br />(Internal Ops)                                                                                                                                                                                                                                                                                                                                                                                  |
| `CosXPaymentCanceledReverse`         | 26          | COS XPay reversal was canceled<br />(*Internal Ops*)                                                                                                                                                                                                                                                                                                                                                                                                       |
| `CheckCashed`                        | 27          | Check was cashed                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `CheckPrinted`                       | 28          | Check was printed <br />(Not in use)                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `DigitalCheckPrinted`                | 29          | A digital check was printed<br />(Not in use)                                                                                                                                                                                                                                                                                                                                                                                                              |
| `CheckMailed`                        | 30          | The check was mailed                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `Failed`                             | 31          | The check was not able to be cashed                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `Cancelled`                          | 32          | Rail was cancelled                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `OnHold`                             | 33          | Payment is on hold.                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `PullReturned` <br />                | 34          | The Pull Funding was returned. This will cause the balance of the loan to increase. **The partner should review this loan and check for over funding by looking at the total amount of rails sent out. Contact Cross River if this is the case. &#x20;**<br />**Additional information:**[Pull funding (ACH debit) rail](docId\:WBnY56dNE7PhLG2XJqPOq)                                                                                                     |
| `ShippingTrackingAdded`              | 35          | A tracking number has been added for the Check that has been sent.                                                                                                                                                                                                                                                                                                                                                                                         |

## RailType enums

These enums communicate the type of rail used to make the transactions.

| Enums              | Enum number | Description                               |
| ------------------ | ----------- | ----------------------------------------- |
| `RPPS`             | 4           | RPPS rail                                 |
| `NF`               | 7           | No funding                                |
| `COSACH`           | 8           | Next day funding via ACH                  |
| `COSACHSD`         | 9           | Same day funding via ACH                  |
| `COSXPay`          | 10          | Internal transfer between CR accounts     |
| `AdjustmentAction` | 20          | Adjustments to a loan after it was funded |
| `Check`            | 30          | Physical check                            |
| `RTP`              | 40          | Real Time Payments                        |
| `Card`             | 50          | Card                                      |
| `Wire`             | 60          | Wire                                      |

## RPPS enums

RPPS uses enums to return funding attempt results.

| Enum name   | Enum number | Description                               |
| ----------- | ----------- | ----------------------------------------- |
| `Received`  | 1           | The funding attempt was received by RPPS  |
| `Submitted` | 2           | The funding attempt was submitted by RPPS |
| `Pending`   | 3           | The funding attempt is pending            |
| `Approved`  | 4           | The funding attempt was approved by RPPS  |
| `Rejected`  | 5           | The funding attempt was rejected by RPPS  |
| `Failed`    | 6           | The funding attempt failed in RPPS        |
| `Returned`  | 7           | The rail was returned by RPPS             |

## LoanSaleStatusUpdated

These enums communicate the status of the loan within CRB financial warehouse.

| Enum name                               | Enum number | Description                                                                                       |
| --------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------- |
| `Pending`                               | 0           | Loan seasoning is pending                                                                         |
| `InSeasoning`                           | 1           | The loan has been funded and is in seasoning                                                      |
| `ReadyForPurchase`                      | 2           | Loan seasoning completed and the loan is available for purchase                                   |
| `PurchaseRequested`                     | 3           | Purchase has been requested but is not yet complete                                               |
| `RemovedFromSeasoning`                  | 4           | The loan was removed from seasoning, transitioning to `ReadyForPurchase`                          |
| `Purchased`                             | 5           | The loan has been purchased                                                                       |
| `Canceled`                              | 6           | The loan was canceled                                                                             |
| `AwaitingInvestorAllocation`            | 7           | The loan is pending allocation                                                                    |
| `InGroomingAwaitingAccounts`            | 10          | A change to the loan financial arrangement (loan type) was requested, awaiting accounts           |
| `InGroomingAwaitingRetroactiveInterest` | 11          | A change to the loan financial arrangement (loan type) was requested, interest being recalculated |


[title] Attachments by appID
[path] Lending/Application decisioning/

## Preapproval API: Upload supporting files

This new preapproval API allows you to upload supporting files associated with an application.&#x20;

The identifier of the application set is the application\_id that is created for each application in the partner's system, and has been sent in to pre-approval.&#x20;

:::ApiMethodV2
```json
{
  "name": "Endpoint: /v2/applications/by-app-id/{id}/attachments",
  "method": "POST",
  "url": "https://lendingsandbox.crbcos.com/preapproval/v2/applications/by-app-id/{application_ID}/attachments",
  "description": "Upload a collection of attachments to an application that has been sent into pre-approval v2",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "L44lyBpEkPvvxd2s4ITGR",
        "language": "curl",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "2zw9pMCFKGqgVkmpC-ZZ1",
        "language": "nodejs",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "YTvnprg_S9ZNG3Kp9WT4k",
        "language": "python",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "q9wGW9osNCsqCp68UDZ0n",
        "language": "ruby",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "UAmstoP2fDbrAiUdxN9ci",
        "language": "go",
        "code": "",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "L44lyBpEkPvvxd2s4ITGR"
  },
  "results": {
    "languages": [
      {
        "id": "_qq8_titI2NzDm7PhXHyr",
        "language": "200",
        "customLabel": "",
        "code": "OK"
      },
      {
        "id": "qjrEFaPuKavXc3UC1LWA5",
        "language": "400",
        "code": "Bad Request",
        "customLabel": ""
      },
      {
        "id": "mNKWoSGW_1na1Xf4LHQmw",
        "language": "401",
        "code": "Unauthorized",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "_qq8_titI2NzDm7PhXHyr"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "The identifier of the application set is the application_id that is created for each application in the partner's system, and has been sent in to pre-approval.",
        "": "The identifier of the application set is the application_id that is created for each application in the partner's system, and has been sent in to pre-approval."
      }
    ],
    "formDataParameters": [
      {
        "name": "attachment",
        "kind": "required",
        "type": "string",
        "description": "The zip file (see important note below) should include all documents that a client submits with an application and all documents the partner sends back to the client for this application.",
        "": "required"
      }
    ]
  },
  "currentNewParameter": {
    "label": "Form Parameter",
    "value": "formDataParameters"
  },
  "autoGeneratedAnchorSlug": "endpoint-v2applicationsby-app-ididattachments",
  "legacyHash": "tgQRBebkaP-DPVVBWYCxR"
}
```
:::

:::hint{type="warning"}
**IMPORTANT**
The zip file should contain the complete document package. This includes:

- The loan agreement
- AAN
- Credit report
- Relevant documents or responses from vendors used to decision the application according to your credit underwriting policy as well as your BSA-AML processes
- Any data point used as input to your model

For a list of acceptable attachment naming conventions, please refer to  [File Naming convention](docId\:uRkNIHuM7qYLQdCEE7tU-)&#x20;
:::

The API is available in the latest Postman collection and in the [Swagger documentation](https://lendingsandbox.crbcos.com/preapproval/v2/swagger/index.html).

[title] Cancel a loan
[path] Lending/

## PUT /Loan/\{\{loanId}}/Cancel

Use this call to cancel a loan by using its ID.

If you want to cancel a loan the amount funded has to be zero, **amountfunded** = 0. If any of the rails have funded, it can no longer be canceled via API until all rails have been returned.

Once you cancel a loan, it goes into a terminal state of canceled and it can no longer be changed.

:::hint{type="warning"}
**IMPORTANT**
Once a loan is canceled, it stays forever canceled and cannot be changed. Loans that were canceled, can continue to write status updates, but they won’t change the loan.
:::

Confirmation of the cancellation is received when you receive a [LoanStatusUpdated](docId\:jXGfRbtNHOshrZJYHYKTo)   webhook, with the status 100 (canceled).

:::hint{type="info"}
**Request URL**
https\:// ... /Loan/\{\{loanId}}/Cancel
:::

**A body should not be submitted with this API call.**

## Loan statuses in which the Cancel API can be called successfully

| Loan Status              | Condition needed in order to call Cancel API                                                  |
| ------------------------ | --------------------------------------------------------------------------------------------- |
| Received                 |                                                                                               |
| DocsComplete             |                                                                                               |
| ComplianceFailed         |                                                                                               |
| Approved                 |                                                                                               |
| AwaitingFunding          |                                                                                               |
| InFunding                | amountfunded = 0 AND The only rail requested is ACH/ACHSD. (This will cancel the ACH request) |
| NotFullyFunded           | amountfunded = 0                                                                              |
| Returned                 |                                                                                               |
| Funded                   | Should not call the API; contact MPL Ops                                                      |
| ReadyToSell              | Should not call the API; contact MPL Ops                                                      |
| Sold (Not shown in Arix) | Should not call the API; contact MPL Ops                                                      |


[title] Add loan documents
[path] Lending/

## Purpose of call

Use this call to:

- Post loan documents
- Add loan documents upon Cross River request

## POST /Loan/\{loanId}/Attachments

:::hint{type="info"}
Request URL : https\:// ... /Loan/\{Id}/Attachments [(endpoint below)](docId\:uRkNIHuM7qYLQdCEE7tU-) &#x20;
:::

**To add attachments:**

1. Zip all the relevant documents
   - You can send multiple zip files
   - Zip max size is set at 120 MB
   - Files within the zip folder have to follow the naming convention
2. Name the file with the **\{Arix GUID}**.zip
3. **POST** the documents

:::hint{type="warning"}
**IMPORTANT**
The status of a loan remains **Received** until all the required documents are received by Arix. No webhook is sent to report that docs are incomplete.
:::

## File Naming convention

The naming convention requires that the end of a file name (before the file extension), ends with a dash (-) followed by a document-type code.&#x20;

:::hint{type="warning"}
The maximum filename length is 255 characters.
:::

**Example**

\- Loan agreement \{JoesCreditReport}-LA.pdf

\- Social Security card \{JoesCreditReport}-SC.pdf

### Identification documents

| Type                                                        | Suffix                  |
| ----------------------------------------------------------- | ----------------------- |
| Certificate of Citizenship                                  | -CertificateCitizenship |
| Court approved name change                                  | -NameChangeCert         |
| Credit card<br />\*As a secondary form of ID only           | -CC                     |
| Credit report                                               | -CR                     |
| Debit card<br />\* As a secondary form of ID only           | -DC                     |
| Drivers license                                             | -DL                     |
| Insurance card                                              | -InsuranceCard          |
| Marriage Certificate                                        | -MarriageCert           |
| Military ID                                                 | -MilitaryID             |
| Miscellaneous ID documents                                  | -MID                    |
| Passport                                                    | -PP                     |
| Permanent resident card                                     | -RC                     |
| Proof of address<br />jpeg, jpg, png or pdf provided as POA | -POA<br />              |
| Rental lease agreement                                      | -LeaseAgreement         |
| Selfie<br />Used to verify the ID                           | -SLF                    |
| Social Security card<br />\*As a secondary form of ID only  | -SC                     |
| State Issued ID                                             | -SID                    |
| Utility Bill                                                | -UtilityBill            |
| Work visa                                                   | -WorkVisa               |

### Credit documents

| Type                             | Suffix               |
| -------------------------------- | -------------------- |
| Bankruptcy Watch                 | -BankruptcyWatch     |
| Credit memo                      | -CreditMemo          |
| Credit report                    | -CR                  |
| Credit report (hard pull)        | -CR\_HP              |
| Credit report (soft pull)        | -CR\_SP              |
| Credit report( MLA)              | -MLA                 |
| Edge Focus Decision              | -EF.json             |
| Experian Instant Prescreen       | -EXPInstantPrescreen |
| Pagaya credit model              | -CRM\_PGY            |
| Scienaptic.ai credit decisioning | -Scienaptic          |
| Underwriting Checklist           | -UWChecklist         |

### Loan documents and disclosures

| Type                           | Suffix                                                                 |
| ------------------------------ | ---------------------------------------------------------------------- |
| Adverse Action Notice          | -AAN.pdf                                                               |
| Credit Score Disclosure Notice | -CreditScoreDisclosure                                                 |
| Debt Resolution Program        | -DRP.pdf                                                               |
| Loan agreement                 | -LA.pdf<br />(Contains Truth in Lending agreement and Promissory Note) |
| Loan Application               | -LApp                                                                  |
| Loan Transition Letter         | LoanTransition.pdf                                                     |
| Miscellaneous loan documents   | -MiscLoanDocs                                                          |
| Notice of Incompleteness       | -NOI.pdf                                                               |
| Preauthorized Transfer<br />   | -PreAuthTrn<br />(for customer facing authorization requests)          |
| Promissory note                | -PN.pdf                                                                |
| Truth in Lending agreement     | -TL.pdf                                                                |

### Income-verification documents

| Type                                  | Suffix                    |
| ------------------------------------- | ------------------------- |
| Additional pay stub                   | -PayStubAdditional        |
| Bank statement                        | -BS                       |
| Bank transaction history              | -BankTransactionHistory   |
| Business Tax Return                   | -BusinessTR               |
| Credit card balances                  | -CreditCardBalances       |
| Credit card statement                 | -CreditCardStatement      |
| Form 1099                             | -MI                       |
| Customer's payment history            | -CustomerPayments History |
| Form W2                               | -W2                       |
| Pay stub                              | -PS                       |
| Pension/retirement benefit statement  | -RS                       |
| Plaid Assets                          | -PlaidAssets              |
| Plaid Income Verification             | -PlaidIncome              |
| Point Predictive Income Validation    | -PointPredicitveIncome    |
| Previous pay stub                     | -PayStubPrevious          |
| Social Security Award letter (SSA)    | -SS                       |
| Tax lien release                      | -TaxLienRelease           |
| Personal Tax Return                   | -TR                       |
| The Work Number Suffix                | -TWN                      |
| Truv Income and employment            | -truvi                    |
| Various income verification documents | -IV                       |

### Other documents for verification

| Type                           | Suffix                       |
| ------------------------------ | ---------------------------- |
| Call Center call Log           | -CallLog                     |
| Carta Borrower Stock Ownership | -CartaBorrowerStockOwnership |
| Carta Secured Collateral       | -CartaSecuredCollateral      |
| Education-related documents    | -ED                          |
| Voided check                   | -VC                          |

### Trusted 3rd-party documents

| Type                                                   | Suffix                 |
| ------------------------------------------------------ | ---------------------- |
| Alloy Identity Decisioning Platform                    | -ALY                   |
| Bureau Van Dyke - Review                               | -BVDReview             |
| Clarity                                                | -CTY                   |
| Cognito Identity Verification and Watchlist Screening  | -CGNTIDWS              |
| Comply Advantage                                       | -CmplyAdvt             |
| DecisionLogic Income Verification                      | -DcsnLgcIV             |
| Ekata account opening                                  | -EkataAccount          |
| Equifax eID                                            | -EID                   |
| Experian PreciseID                                     | -PID                   |
| GBG PLC Identity Data Verification                     | -GBGDataVerification   |
| GIACT                                                  | -GCT                   |
| GIACT gAuthenticate                                    | -GAuth                 |
| GIACT gIndentity                                       | -GI                    |
| GIACT gVerify                                          | -GV                    |
| idiCORE                                                | -idiCORE               |
| Innovis Identity Verification Solutions                | -Innovis               |
| Inscribe fraud document detection                      | -Inscribe              |
| LexisNexis                                             | -LN                    |
| LexisNexis Emailage                                    | -LNEmail               |
| LexisNexis Fraud Intelligence                          | -LNFraudIntel          |
| LexisNexis FraudPoint                                  | -LNF                   |
| LexisNexis InstantID                                   | -LNI                   |
| LexisNexis OFAC                                        | -LNO                   |
| LexisNexis RiskView Credit Solutions                   | -LNRiskView            |
| LexisNexis Small Business Credit Report with SBFE Data | -LNSmallBusinessCRSBFE |
| Middesk Verification                                   | -MiddeskVerfication    |
| Onfido Facial Similarity                               | -OFS                   |
| Oscilar for ID verification and fraud prevention       | -Oscilar               |
| PassFort                                               | -PassFort              |
| Persona Verifications                                  | -Persona               |
| PinWheel Employment Verification                       | -PEV                   |
| Plaid Auth Bank Accounts                               | -PlaidAuth             |
| Prove Trust Score                                      | -ProveTrustScore       |
| SentiLink eCSBV service                                | -eCBSV                 |
| SentiLink Synthetic-Fraud-Scores                       | -SNTLF                 |
| Socure                                                 | -SO                    |
| Thomson Reuters Clear ID                               | -TRCID                 |
| TransUnion TLO                                         | -TLO                   |
| TransUnion IDVision                                    | -IDV                   |
| TransUnion TruValidate                                 | -TVAL                  |
| Yodlee                                                 | -YOD                   |

## Sample request and response- POST/Loan/\{Id}/Attachments

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/HCIek7I0UxvyNHQ0EFzVX-Gatapg2TF2PBMjzbz6l6K-20240814-110612.png" size="88" width="695" height="390" position="flex-start" darkWidth="695" darkHeight="390" showCaption="false"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/HCIek7I0UxvyNHQ0EFzVX-Nfqv9yQn7YaWsM1slWukO-20240814-110613.png" size="94" width="674" height="197" position="flex-start" darkWidth="674" darkHeight="197" showCaption="false"}

## Required parameters

- For multiple types of any single document listed above, add the numerical value to the name.&#x20;
  **Example**: For multiple paystubs (PS): 179317-PS1 and 179317-PS2
- You can submit an additional 99 files as needed for underwriting, by following the convention, F1 - F99.
- If you want to submit an --F3 file, notify CR ahead of time so we can identify F3 as a security video.
  **Example**: MyRandomFile-F3.mov

## FAQs

### Loan stuck in the status Received

A loan stays in Received for these reasons:

- The file wasn't named correctly based on regex verification
- Some or all required documents weren't received
- There was a problem unzipping the files. If a file is corrupt, Arix won't be able to unzip it. Fix it and resend a POST with the attachments.

### Confirming document status

To confirm the document status for a loan, call [GetLoanDetail](docId\:ww_oBJr2UgusLpjPU4RAu)  and use these collections:

- `RequiredDocs` - to see which documents are required for a loan and if they were received.
- `Attachments`- to see which documents were received by Arix

### Adding loan documents

You can add documents if a loan is in one of the statuses below. If a document is sent after the loan is funded, Arix will store it, but it won't parse it or run it through compliance.

| Status | Description      |
| ------ | ---------------- |
| 1      | Received         |
| 2      | DocsComplete     |
| 3      | PassedCompliance |
| 4      | Approved         |
| 11     | AwaitingFunding  |
| 101    | ComplianceFailed |


[title] Revoke authorization
[path] Payments/Checks/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for these webhooks:

- [Check.Payment.Received](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;
- [Check.PositivePay.Revoked](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;

## API reference

Revokes [Positive Pay](docId\:qMy-Hnem-DnbIioD8z2jS) authorization already given for a specific check. You can only revoke authorization prior to the authorization expiration date.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/positive-pay-authorizations/{id}/revoke",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/checks/v1/positive-pay-authorizations/{id}/revoke",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "C57PnRkRzpPg0u7vhM1aA",
        "language": "curl",
        "code": "curl --location --request POST 'https://sandbox.crbcos.com/checks/v1/positive-pay-authorizations/bf50797f-bdd7-4cc9-8efc-b30d008043d3/revoke' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "2JDChadtjSFrvkleIG1sL",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/positive-pay-authorizations/bf50797f-bdd7-4cc9-8efc-b30d008043d3/revoke',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "PZPajjvm95krJMSi4SJ70",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"POST\", \"/checks/v1/positive-pay-authorizations/bf50797f-bdd7-4cc9-8efc-b30d008043d3/revoke\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "UhE3WsQed3xik4pOSsJh8",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/positive-pay-authorizations/bf50797f-bdd7-4cc9-8efc-b30d008043d3/revoke\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "5vy8Er-NjMCaBEhoxMyuf",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/positive-pay-authorizations/bf50797f-bdd7-4cc9-8efc-b30d008043d3/revoke\"\n  method := \"POST\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "C57PnRkRzpPg0u7vhM1aA"
  },
  "results": {
    "languages": [
      {
        "id": "UMLrTwLcOrwmKN6RHJT6G",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"bf50797f-bdd7-4cc9-8efc-b30d008043d3\",\n    \"status\": \"Revoked\",\n    \"accountNumber\": \"2640511503\",\n    \"payeeName\": \"John Strong\",\n    \"checkNumber\": \"64958137456\",\n    \"amount\": 10000,\n    \"createdAt\": \"2025-07-01T03:46:59.903-04:00\",\n    \"expiresAt\": \"2025-07-19T08:12:27.27-04:00\",\n    \"revokedAt\": \"2025-07-01T03:54:23.1845224-04:00\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-07-01T03:54:23.2001547-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "UMLrTwLcOrwmKN6RHJT6G"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "Positive pay authorization ID received in the initial authorization response (id attribute).\nTo revoke a check issued using the print check payment API (POST /checks/v1/printed-payments), use the ID returned in the response.",
        "": "Positive pay authorization ID received in the initial authorization response (id attribute).\nTo revoke a check issued using the print check payment API (POST /checks/v1/printed-payments), use the ID returned in the response."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Positive pay authorization ID.\n\nSave this GUID format ID as proof that the check was authorized using Positive Pay, and for use if you revoke authorization.Positive pay authorization ID.\n\nSave this GUID format ID as proof that the check was authorized using Positive Pay, and for use if you revoke authorization."
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the positive pay record:\n\n- Authorized\n- Paid\n- Revoked",
      "children": []
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account the check is drawn on",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "relatedPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the check payment",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time the record was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "expiresAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time the authorization expires. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "revokedAt",
      "kind": "optional",
      "type": "string",
      "description": "The date and time authorization was revoked. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1positive-pay-authorizationsidrevo",
  "legacyHash": "bPjFtsT3ikq2sRe8U3uPP"
}
```
:::


[title] View check
[path] Payments/Checks/APIs/

## API reference

Returns the Base64-encoded image of the requested side of the check.
Use a Base64 decoder to view the requested check side as a human-visible image.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments/{id}/images/{view}",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/checks/v1/payments/{id}/images/{view}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "DE5B0gypjMCcu-y-GzHvC",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/images/Front'",
        "customLabel": ""
      },
      {
        "id": "bof_zOMOtp8IEHUSesXMd",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/images/Front',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "W5ypkkYUxRa9kWd1wiSDJ",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"GET\", \"/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/images/Front\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "bSrGRd0gRwUM1uXDIsu28",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/images/Front\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "quTmAhtlEveiFGP0w5bwD",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/images/Front\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "DE5B0gypjMCcu-y-GzHvC"
  },
  "results": {
    "languages": [
      {
        "id": "BveQGQ3groZSx9zTieSlq",
        "language": "200",
        "code": "{\n    \"content\": \"data:image/png;base64,iVBOKGgoAAAANSUhEUgAABLAAAAImCAYAAABDznOrAAAABHNCSVQICAgIfAhkiAAAIABJREFUeJzt3evSq7aSAFA7td//lT0/Mj5xCAhdWkKCtapSc2Z/thAXc2larffn8/m8AAAAAGBSf13dAQAAAABIEcACAAAAYGoCWAAAAABMTQALAAAAgKkJYAEAAAAwNQEsAAAAAKYmgAUAAADA1ASwAAAAAJiaABYAAAAAU/tzdQcAYFbv9/v1+XxCv/N+v3f/fe87uZ89+lxru736cPVnU5/bfv7ss7ntlvS1R7sl+7alDyXbtqTd1GdL163HcZ7bZsm54eizNeclALiD98cVEACYWO6D/WpKAxHf7dBr/Xu3DwDQQgALAAAAgKmpgQUAAADA1ASwAAAAAJiaABYAAAAAUxPAAgAAAGBqAlgAAAAATE0ACwAAAICpCWABAAAAMLU/V3cAAAAAVvN+v//1/38+n9PPHH2uZx9y+rT1bSfnsxFqt0l0/377EdH26O14lc/nc7qOEcf9+xP56wEAAKDY0cPf9nGt54Pw3kPo9t9yHlQBjrSEoKoDWE5aANzV9m1Z7c16yfdalvF6pa/LqbeJvd4C177BTPXn/X7/bzud9TvnMy1+j43WNo7aOXuI3P5t7zup9n8/P8sb4ln6AbPx2wDuYmgAy0kTAAAAgFItAaziIu5GHAIAAABQojWeVDULoSAWAAAAADki4khVASwAAAAAGOVP7Rejp5cEAACY1R2ef64oBr9CAfqcCUJ6Tw6SWkbuRC01y8tpo+cEMFCiehZCYH4ls5+lPr83ffLR53//9nszMPNNCwBQb/s4kTtbZu5Ds8cVAF4vASwAJjfijecKfcix94b07EGypL297+4Ft4/aOXurHLWNz94Up4Lv28+V9KllWx+1lZvxUbpPcpc5G1kAAPBcAlgAAAAATK26BhYAAABADzmZx6UlU3KXWfr5Gc1Wty8idyo0A6t1o6Q2cElq/Aw7p0VuHYGcNs6+m1uj6KhmQU7fzooh1thb/t46lA6Rqf2RRycy9hoi0WOoDgDATH7vV0vqbY14rji7z494Dthb5pXPRysUcQfGaZp4oCWA5SQEQLRRN7olN/QjAr6j62ytUO+INUQeuzUvxnr/dlpfaJ1NeAIAT1N73a4OYLngAgAAAFCiNoD1V3A/AAAAACBUVQBL9hUAAAAAo1QFsNTLAAAAACDX5/Npiif9aVnw6yUbCwAA4GlyZnb8fu7omXHGxAizdsO8mmYhhBWkZv85+ntvI6Zp3i5HsBkA4NzeTJdHfztzFrgRLAHIJ4AFAAAAwNTMQggAAADA1ASwAAAAAJiaABYAAAAAUxPAAgAAAGBqAlgAAAAATE0ACwAAAICpCWABAAAAMDUBLAAAAACmJoAFAAAAwNQEsAAAAACYmgAWAAAAAFMTwAIAAABgagJYAAAAAExNAAsAAACAqQlgAQAAADA1ASwAAAAApiaABQAAAMDUBLAAAAAAmJoAFgAAAABTE8ACAAAAYGoCWAAAAABMTQALAAAAgKkJYAEAAAAwNQEsAAAAAKYmgAUAAADA1ASwAAAAAJjan6s7AAAAADzX+/1+fT6fpu//qm2rtp3f75V8p2Wdn+j9scUAAACAwVoCT9vv7slpL6edo7Zyv1vaLvsMIQQAAACWkRs4er/fyc+WBKAiglW0EcACAAAAhqoNCEUFkmraiRqqSB01sAAAAIDuWoNPR9//DSS1LKOmne93Un2TvRVDDSwAAACgq4iaVXtt5NamOgtO1bRTIrKtpzKEEAAAALiN0sDQ0ed7BpgEr8oJYAEAAABdtQZsVs5gUjsrhhpYAAAAQHfbwM1VtaGuDCAJXtWTgQUAAABM7Tfw8/l8hgSCIjKnFHCPIwMLAAAAmF5uAKnXbIet7ci+aiOABQAAANxCS62syGwpmVfxDCEEAAAAljdz0Ej2VTsBLAAAAGBZ7/f7MHhVEjg6q62VGyCbOZC2MgEsAAAAYEmpYFFt1lMqkCU4dR01sAAAAICl9Ahc7bUTEbAyfDCGDCwAAABgGa3Bq++Qw5zgVGnwSYZWPzKwAAAAgCW0zDJ41J4MqTXIwAIAAACmFx28ql1myWcFx+IIYAEAAABT6xkcOgpSGQ44F0MIAQAAgOWcDf/7BqBy62LlkFF1HQEsAAAAYKi9gFFNPaqcwNO23drZBQWvrmUIIQAAAPAopcEowavrvT/2wn9sI7Gtm+goshu96c/SI3PTJ1unJD3z2/4Vh9+o5dds7983AX6aAADAnZU+e9fWpGptN/fZLDqWwL8JYG1EBZtKflg5Y3ZLPrf32dwfUu9xv71OOK19yN0eZ9v1TPT3jzhxAgAAK/ACn1yGEHZQGpR4v9+H439z2q0JCuUsr/T7PUUtr7Wd3+9HthX5naN9awYNAABgNp/PR/CKLAJYvF6vfsGUSBHLKzkxpjK1rgwGCUQBAADwNGYhDJZbPypqxoWezvq76rIipGataN2HMwTJAAAAYCYysAbYS4mcKVCVo2d/Z9g2UcGiqODV939H114TFAMAAGBFAlidpQIQUYGaUQGfb0Dl97+ey5qt7bPvRQavItsFAACA1QlgbTw1WLC33gp/l+k1I2HLPjjarwAAALASNbAeqqWYeXSQb1v7q1dtqW1be7M8ttafKul77YyCudvh+7lUvS4AAABYgQDWxWYKLuT2pUex+bPlXp0Z17r83G3WcizMchwBAABANEMIL7aXBXSl3NpWdxheuGJQLKrPq+87AAAAnkUG1mS2s9BdFWiYKTNspB7rHBkoO8rk2uv3E/cfAAAA9ySA9VA5Q9py6lJFDCfMCcj0GLbYQ/S26BmEWmWbAgAAgCGEnY3IgolYxndI4NHQwBkCHVdlR1257mYRBAAAABlY2VJBg7MAx/e7ORlNOf2IaKd0OTPqPTsiAAAAMAcBrAC/wZ5U7aioYNOoDJy9wNsoZzW4jmo+1RZGH7FvardjzbbI+d73uwJ/AAAAzM4QwiC/gYKWQEXOv9W00/Kd1IyDEcGPmYfERRdg/13XqKGfe34DqmczS868/QEAAOD1EsDqpjTwkfp8SVstAZfIPl/RzutVH4y5UxbS0brcaR0BAAB4lvfHU+2u0kDI0WY8a6d080dkQuUMG4vu91H7pf04q/81ql+pPqSkZhnMWebRvivpt9phAADzcG8GkEcACwAA4AKzzv4NMCNDCAEAAAZThxSgjAAWAADAQD0nSAK4qz9XdwAAAPgvtZGexf4FSJOBBQAAMIi6VwB1ZGABAMBkWuojCZDMy74BqCeABQAAN/d+vy8LlBgK+TfBK4A2AlgPcPYGL3XhTH337IJbu9yai/v3O603AVHtXKX25rRkm5e8EV51OwIAMfbuG64Mpl1F8Aqg3fvjzPkvvxeXHpumtP3WN1YtwYbc7+71qfa7NUGvnG2Us91LtnVuoOvsc7nHQ9Q6nrV75Lc9ASwA6Csi2DFDwMRMe3+bYV8A3IEMrB/bi0tO9lFJwOWs/ZwgQUSA7ajvv2/DSoIUEW/RcpeXs6yot3pH7ZT0teTvJcsbuc0BgGsJdqxL8AogjgDWIDnBgm9Qomdg4feCWbqsVHDrLKBSeqGuzfipNXMwJ2c/jex/TZATAOD1elbwRvAKIJYA1o+9QEEqeNCjIOXooEBuEGsb+Hq92oYYlvjtY8nQuJlvECL2c/Q61gzndGMGALHu8oLoLutR6+nrD9DDX1d3YDafz+df/x19JmoZEf1pEVWboHfQomb9o4JEvZcR0V6P4GnONt/+XfAKAOrd5cXQ02tfPX39AXqRgXWiprD33mdzL1i1MwLmaplVsLYvNRfxlWYDvPINW/Sw072srtLjYoV9BgBPM+r6/PTMI8ErnmyVZ4FRz5orPdOuQgCro1V+wDl61+c6arv1R59b9P23H9t/67kfS5e3t51asrZS2/y3fwAALZ56TzFi1nFIyQ2qtmaAfr+fezwfPeedfb80SJx6Vko9a7bOOr99vstpi3OGECac/XhaDsD3+1304468sB0NDRs5XG5v+WcZWbm1ukprOZV+NnL2v5pt2rPu1Vbuds9tDwC4r6dnH5Xe1x3dZz09i404OcGb1P1+xOzrucd4zu+h128jlSBQum41/04+GVgHWgqUn2XTlES3Ww/ybZZNSzH21n6Ufq5mtsNSETcNNcHAVpHZcDkzPuZu9ztlHQIA+QSvYu/vW++pZNST44qAyqhl9l6OINU1BLA6KJm58Pv51s9GORoq2BKkqe3zUYAt54IePdyx9CYiZ3je2b+NuNnYprOODGoCAGmrBB6eft/Q6+V0zf3glfeVzC3nPr/2WSCVsFFbC/osC6rl2exsPaOeJUeXp3kCQwgzRQwbmz14VSonc+fsb7+f+f3vaDkRVr7J6vU2rTZgWZJWvPJ2B4ArRL+MG222e9cecu/ZU/dCvWYbh9Igz97/nuE81Fo+5/t/f39rLesVMWKHOjKwdtSO9U1lDEUsv6b4Wyp7KfpGJhVN3svsOqt51drPs8j5WdDmaNvV9Cc3rX5kdP7oOD1ax4i+1BzDAECZ1pIAEcsq/e6K9wat9YH26uv2eKhecdsSJyIYlZO1dfbZ6NI4LUkPXqyvSwZWoKPsoZzi5CUZKq3ZLDnf73GhOwqYpE5yozLRSovKz7LMEftp9PIBgH9EvQjtoeSh9m5qXk6mPtfL3fcDc6s9/lqD2z3Pg4Jf1xLA2lE7Tnf08nu0dZQ62lNJ2nRp0Kf2b7nL67nsmv60ttX6WTdJAFAvlcme+1+q7d4T4fwuq/T7Kz0UtgSveg0XXKH8CNcb8dxQqmW0zUzro2TKGIYQZoj4YZQUzfv+76gfwFlbLYGW37Zb+5/aRjn9yGl3L1U7p18RhQOP+pD6bO6ySto/W9be38/acLIGgOdove73KGPx64qH7doXoxEErxihJjBdozb7qrRkjWeYNQlgHeiVcdIj62V0W7ltzxQRb223JvDV8r3Sz7Z8p+V7ud93EwUAeVZ/qBp1zT+rczry3mPGe1d4vWLqzEV9L+fcNmroX9Rz4V7wfOXz9woEsAAAYCJ7D1el9Ut7PURFDx0s+e7Z8nsrzXQqfUiOmihI4Is9Z4Hd1km0cr6Tav/o375BodJz3Nm6Rqs5b1NOAAsAACY3Q1Di6oexlYJXMINtRtBZxtAVv7Gz39E2c+rqiRG2yyzNwnLeaKOIOwAA0CSyVMOeK2djnDV4NWu/WMuoiaci2s1p76i4e4/1LG3P77Pd+2MrAgDAbfQIbERkFJRmThytR25wKuIxZ2SQqKQYveAVs9mb2AuiGUIIAAAc6jmsKGKCm5oZnHPMGrzaI2jA1RyDjCCABQDAdEoKApN2xWzUrd892v+tgZ4cV9fYcVwD7FMDCwCAJV1dVHxWkQGQqGLEJfuqNXi1WgCotb7XausLUEsGVkLkNMG5syvkvImqvUjlfr9mOaUX3txpRnP6OiqV+6tnDYkzuTUi3MgAsLqjWkfb4WLRw8buotcQulmMvP/reVzNvI0BZiMD68DZxaT076nPb6cu3fts6/Smud/P6cvZ32r6VrOc3xvX0u+3rNtsUzj36M93G+S2vf18zu+jdBkryFmXmu0KwN+2M03Rz9n1p/VFZ+TQw6jr5QyF0UtrgvkdAE8iA2tHycPlCheNo6BHyYwxqcyflm0Qua1r+rn99xX2/e+yI2+0ctP1t8s5CtbuZfKlllFSB2PvxvVI68xIqXZSAcWz9S7JdDSrC8D+OXCbpRVxfZbRFRu8qpGaafBs2ZH3Qb3XsyaD3ost4MlkYG30vChEjP2f1fcNUOrCu/1M6sYkN1gQqfRGqXd/UttzluMj8pjutU6RmYIl7ZYEQ1u+D/B0JS81zjj3zivn/nCl4BUA5WRgZYi8MZpJVBbW1t5bs5zvbj+Tevt2JDIzam+Ywl4Qo3Wa47NtdZbplPpubb9+M35al9P6e4kIFJVmeNX06WhbRbQNQLuz61luxnptZtBdmImvD9lXAOdkYG3kBlpGZMf0Gss/Y1u5s8jkBitG9WekXinzR2192+tRiyEnY+/1Kt+Xue1Gt/O7rVIPQ0ftGq4CwCxGBEmirnUr171y7QcoJwMrQ0v9mbPhcpyrycQqcYd9M3J2nG1m2rb2yMi+RYnuY01dte3373BcAlxtL0iQyqA6CiqUtLOyq2tfzWCV4NUT9gXAlgysAjkznLT+fS8zI/IGqXU45B1v1lYy+malZihoS/u5f8v5TERfS+tYlfw+RmbUAawoMkNlryxA7uef4uyaOts2ibhHueK+VuYVQD0ZWDt6zB5WuvxeKdE1Q7K235sxiLXtZ88+PiU75qqi+XtW2OYjjj0A8vWaJGPVbONakbM6Run1gq3X0MaI+xj3FwACWKdSaeK1BcMjC41HmK0/s7vyBuIuNy+lhXRLZwCsXW5tGwDEapnlNjUUsGaZTyja/oR13PN7rPTM3E79e0uJEoCnMYRwx96wvZypeyPNdmG6sj+Rw7Lu6qqCqzlFynvPnpgrdfOYe+N+1Peo4vEAtImeHORoGc73+Xpvq6iJW1q0lPz4fje6bAjAHQlgbbQUpG55Wxht9gtgbi2u2iGYM/UnSmt9tRmMDF7V1Hc7Cl4DMKdesxMfedI1ode6Rs+afKUeQacV7ucArmII4UbOrGrbz+f+rXQYVGTdn7PsmZwU5ug6RKltfbSskTcqOet6NkNRz77sbaOo4aDRdRpqa6+dtbF3DB2t/9G/nw0Pjjzme7UL8DTRLxlzr6dPKbsQuY53vN6l7knO7v9zXpo+5TgDKCUDK0hO1kbuv0X3pff3ehgZvPq2W9r+WbH/KKltMXJYa46aN5G1by+PtkFpe6nAVs5xWBLwrukfwNMcPdAf/X30kL67D/maPXBSet3tufytyHpWV68nwIzen9mvUhcpzb7Zfic322ObjZHzvdLZD3PfSG4DMi19KRmGVbOtt9/Nrc+097fc4YOp/rQG3Fr3f/Swt8j9V5JxlFu7pHSfRc0YWhq0zF33iN8RwB1EZOzutbN3Pi65j4vO+LrifB61bWvaWt3ZKISSzPE9R22n7iOiR0akuP8AZiGAlXB2MRnt7unEvbKuardb641HjwBWzs1k1DFSEjTN/a1EBLFa+1DTxlE7JZ+v6V/PYakAM4q8TqReepSeU+8QwHq9nhd4GiX6mv/7+Rn2mXsQYBYCWBBApgwAtHM9vU5N9v6eEfus53GSOwphKxVsGlWf1O8FuDsBLAjiphsA4N4ih2JGL9e9J3B3irhDkN+bBjcQAAD3k3uPFz25wFlb7j2BJxDAgkCjZ0ICAGAswSSAaxhCCAAAUCh6Ap3S5X55nAOeQgALAAAAgKkZQggAAADA1ASwAAAAAJiaABYAAAAAUxPAAgAAAGBqAlgAAAAATE0ACwAAAICpCWABAAAAMDUBLAAAAACmJoAFAAAAwNQEsAAAAACYmgAWAAAAAFMTwAIAAABgagJYAAAAAExNAAsAAACAqQlgAQAAADA1ASwAAAAApiaABQAAAMDUBLAAAAAAmJoAFgAAAABTE8ACAAAAYGoCWAAAAABMTQALAAAAgKkJYAEAAAAwNQEsuND7/X693++ruwEAAABTE8CCC2wDV4JYAAAAcEwACwAAAICpCWDBYLKtAAAAoIwAFrvUZurjaJt+Pp/BPQEAAIB1/Lm6A1c4C8w8PZiwV5vp6dsEAAAAuI4MrB2yj+hB9hUAAADUEcD6sQ0kCGLRm+AVAAAAnHtkAGsvaCCQ8I/ttrBt2u0FQ21XAAAAyPPIANbWbyBhliys7zDG3sMZDZfsT/AKAAAA2jyyiHuJKwINIwJKucsQaGkjOJi23T53Pt7e7/et1w8AAKAnAawCOUW4fz9z9O/bv+UsY/vw21IQfO+7OQ/XR+t21vZTH9oFr9Jqj8OVbNfxbusHAAAwyiOHEEYHFr7tjcqc6r2c2vZTwbenSa2zAAa9PfE3BwAA3NsjA1hHUsGhb+bE9789uYGJ1OeOCszn/nvOg+tekfbSjLCjzwnOCF5xbOT+H1FDDwAAYBQBrAPfoM73AbDmwTPiwTEnWHZ1UORseOTV/ZtBKkgIkQSsAACAOxLA+pHKsIrKqmkJYkQ9mKbaSQWjcrbLk4pybx1luzxpG5Q4yiq8iyt+C44/AADgrh4XwKp9qMwdNrg3pK/38LqWwFZJn0qGEz4t46ilqP6T2T5xZF4BAAB3ZhbCCqUPihEP6bnLjAwI1NT6elpAQr2rdt+husRzDAIAAHchgJVwxUP1LA/yEcXhn8y2KHO37TV6+KChgwAAwN0JYGX6Dovbq/nU80Gxd0Crpv9H3+m9LXqLCtKtvA1Yj+AVAADwBI+qgdVzVsCr/K7T6L7tbc9vza9ZMsly1fR3tXXkfgSvAACAp3hMBlZNsOE342o7G19uYfbWh8nf7/+uw5Wz/X2XdZfaRWfb8ihQt0fwgFEErwCAWle+BAeo9agMrBqpQuZHw+jOvpu7vLMZDluWk1pGSZH2Hn0aqTQQqGj7en6zAlfMDtwjeAUA1NoriQKwgvfHU08obzPWUBIAUMB+XVcFHHtmSF4dvHKOA4B2V11Pz+5rXduBmT1mCGFvVw7pI1/pw/8swSvHV5mc/dZr0oGebzGvekN6tFwZiQCwhtx7iJlfVOWWcAHuSwArgODCGno8/F+1r1ef8fHOetWGuyrzqnZd1IkDgDw97+ta7klmut/c1gKepV/AWAJYF5n57UbKqm8+ah6mr8wuyc0giu5LaZszHg+pQM+qNR6iglcz7C83nQBQNilUrYj7nhmu20cTKl3dL2A8AaxX+1jw0gvQXuHE2U/AK/b5TG3/Zwhe7X2+pV81Nzgzvgm7uj5UD63rlJpFs3WiibPlpPq0+n4BgJmd3T8cvUxf9WUf8AyPD2BF1copeRjrNcSoh1X6GW214Vrf766WWRP55lHwKu/7pXID9BGBraPvrr4fAeBqudfSVZ5T3BvAMz02gJXzYDhjhsmVVl3/3CDA1QWpS24W7vCmLOr31VJraebfdUvwaqZjovZG2PkXAK7hmgvM6q+rO3CF3AfDVEAr0goXiRX6WOL9fv9vf/7+71Wk0r5rhyDutZcSPWQxch9cfby2bpsR2WSlWaOvV9w+aqnfBQAAPNPjMrBmGGa0yoPYKv08k8oAOToeRq97KohU0vfW5a5mht9zpN4z90UN1Rw9jBEAaCObuc3IWefNcA/HHhfA2iop0H7F8o8uNtvaMNG1Yu5WtD1nP/6u3+92Hb3e2+Xt1SA6W5dUv6OGSl4dmFjp4n52HEUOX+0dBGtVM9EFANDO9bVO9IQ4JcsB/u1RAazIk0JJMKR1SNfvCfLob7//f+2D8ncZd1U7XXHvIFbNcTkqQ6vEqGOnJetqZHbddlnbYZ85/Vg9eBUZZLzzuQkAoq1SjL3GTPcEUfc6qX21eiIBRHpkDayvEXVYfgMmIzIPnNzScvfDSLP150xEzbDa395dhgz2CF71bqdU7Q3dLAFZAFjdqOePnmbu257WiWuAtEdlYEUomUa+tr7SXnZNzfT1W6nC32dWDBKsquQtS/QFr3boYY2cjMKcNiKW20tt8fPZgle9JwbIbf/oHAYAHKvJ3C+5F73zNXlvu7SU8jhrP6JNuDMBrBO5J5VU8Cryzcf2pHlVoIO+arNQzoaPpuqp5S6jtP1eVrqIlwaua8zyGy+5AW7pc03dsKOb0JWOJQDuZ+S1KPdF3qzXx5F9OnrmyklayNl+ZyML7laTGCIIYA2WE3z6PTn1OEk58d1LSf2no3+vyRC6ImCy8rF7tM1611frUYsh9zs5AdOtmkkLSpex/ZwbQgCudMWEQblBrO/nU23dXc6kX1/b+qcl2yc1kVNtm3A3AlgFUgGAX63DXHplLNRykux/sagNCF2xb7bB1b1C5VFDxnLaKnVlptIV+ys3I6o227S2H6m2c27gAOAurg5KtEw+1dOVfald9t4kPjn7NvJFM9yZAFZCj/pCZ3pcvM5mtSDP1UGs3st+vepm+Eu9HZqpvtpdCsAfKX2bWruMEpH7vyabq8TVDw8APMus9+CyftrlBLFKX+a2ZHbBnTw6gFXy48/NvhqppO8zBRJWMcONxRUp5VFGbr/aCRPupuc6R2bV5bZZ+v3c89zTjgsAKDHrtfLKl54928/N0BLEgoAA1ko/ntw3Cj3e6ucW9xuRJbK33JJlzHhBi5ZTnyxSr21aejzVzkDT4mybthSVj/xszdC7mu3Xeiz0uun83U97Q0VLlturj1HZXNvz9irXONqMOn5rg8Gtx+EV5/doOde0XtsPStw965syEfv+Cc9fkKMpgLViAdyzIFaPC85REKu0QHF0YC3HKvt1pJZjZPQbndrP7D0QfI/hvXWtLQR/Zobt9XqdFy89aueqm43SwHhO3b73+7177vx+52xdW4LmI+y92YQ9rcdG6p7JcfdvvYdFw0hXlIlY+UXMyr/tEbVeV9ynEOH9qTz6cx54ZnZ2EcnNCjm7CT16kKzNvKq9ENVm4pSu31kf7nasfEUGY1bcRluj3/RHbtsZshRm6MMTeWPeV48gd7SZH5iedixG7ounbTvmNuoaf7ac1LPcDNfDK/tQso9KX+Btv1P7DOG8xlNVB7Ber7Wj+l8znRByT2at271kyNbK+zbSiIca2xrmsWrAfWYrBLBer2vO91dkZswuaj88dfsxtxHPULXZ17MMw73yZV7vAHruus2yL2AmTQEsrtH7oieAta/XQ41tDDAvwUxgVasGgmdIMIjYdj2Gi7se8XSPnoVwVaPe1jhB/ltpzbLc9gCYl3M18GQrnwNrhvdFqa2fWtsmPMXjhxDytxnedKxolSExAAA800rBkqhnkp71UVvaKm2ztF24u5AMLOn1axO8qldSEBMAAEYrGUXg/vW/emyT3Cws+wP+TQ0sXq+XbDoAAHiCmV9ej87Aqm0fuIYaWLxeLyduAAB4gm1G1sw1Rah6AAAgAElEQVTPATP3DRivOYC1wokPAACAf3h+sw1gNX9d3QEAAAAASGnOwBK1BgAAoNVvcfOez5meYWFNirgDAABwKzMXqwfqhNTAciIAAABgFp5R4X6aamCVTE8KAAAAADWaMrBEtQEAAADozSyEAAAAAExNAAsAAACAqQlgAQAAADA1ASwAAAAApiaABQAAAMDUmgJY7/f79X6/o/oCAAAAAP/x5+oOAKxiG7D/fD4X9QQAAOBZ3h9PYMAA3+DPqqeco2zTVdcHAABgJWpgAd39Bn9WHHa8Yp8BAADuRA0soKvVzxGr9x8AAOAOQjKwPOABe5wbAAAAiBBSxF0NGCDXSueLswBcybr8trXSNgAAAJiBGlgAnW0DYTLTAAAAyghgAcM8MfNIsAoAAKBddQDLQxmQcvdzRE4w7u7bAAAAYJTqANb34e2JGRVAudXOFang02rrAgAAsDpDCIFwMo8EwAAAACIJYAHdrRawaQ0+CeABAADEEsACyLRaIA4AAOAumou4yzQAfj39nHC2/oJgAAAA5ZqLuAPcyVEAyjkPAADgOk1DCD+fj4c6IGmlc0Rr8Gr7/e33VtoWAAAAM1EDCwhzx+GDNUGnb3D/jtsD4A6cnwFgPQJYQDcyjgCYkesTAKxHAAvgQMkDjuLtAAAA/fy5ugOMlZMy70GbGmf1n2bXMpxE8AoAAKAvGVj8x/v9VhuCx6sNOn2/5zcEAPfkGg9wjaYMrPf7LbPgxr4XZ/uYUk89ZgSvAOA6I6+/I5f11PsqqCVOcV9NASwHxTM4AXBm9YBNy/DHGYcPCj4DMJPvveTq9wtXidhu7gkY5eh4HXUMfpd/1TOs+/C+1MDif35/ZNsTjyAW9BNZP+y3LRdQACL1rBdJX7Xb3z0Euc6OsRH3paXPsLnPuD1r/XrOLiOAxS5vyXiKqJvx2uGDI35nAlkAY/U8t//eoxm6Pt7ZtfRu+2LvXge2Zj7ucwJr22O75jtny02dr1Pn9Nzz/FN+n+/PU9aU5EF/dBjURJtXiyKvPnveDHpvw95vPbZy2z+7uNTe5LauX8tNhOMfWElJgH7mByzqbK+9q17DcrJEZrHqNqaf1P3sFcMJr/i9pEYyXdGHO5OB9RAtacMl3/0dc/z9/qyO1mu1ANyMIrdhzluKWcxyg9nyRr4loAerqXmxU9rOmbPrbPRN8dED/9kb6L1+lrwV7n1+nOX8y7Ge15LVr1Nn/Y94sVWaYQK1fo81WaJEk4H1ADknjNy3PqVvh1pr+fQ4PHNPoH4a/zgLGPUMevROl43KwCr9/og04MibBb8HXi83oPB0rgXPYpQCOXKPkxHH0wzZTzP04c6aMrCMiZ5f7dvS1uX8/nvLW+zoTBsPX2Va60ONGArXspwex0NLIcjo/qhlRy3HDeTbO++7R+YOHLuUWuGYKb3vLj3HRwazZLD9V9gQQsOu5rPSgT6ykPWWE8N/lWQljdxuRxeEWc4/kbOYRK1TathPit/Dfdm39LY97xydh1LXmtKaKnvXhyuvCzNck+Apju6ZZjgXMFbJvm45LnJfEkcde47hf6iB9SDb8cg5AYDcDJijdku+O5oTwb7IfdIzOyr3GO4lor7UqP7KxEqbdduMqsE0i9ygx55ew2WvKD57F6k30ql/a/1bzt+B+/itvzvDMK6nuXq0xpVW7vvKmgJYdtq8ajMuSm4YWy8MpYEuEez+Sh/Wct+oR9keB1cHsX6dLffqG6mSfXNlX6/eTjOZeVv8Hk+Rv7mcoEfO96K4XgDkK7lu9aj1mXoh73weLzXRUkkb9g0lZGA92N4DbcsD7vfkk/NgkxsoiXqAK+3PE0+kEcGr7/9tDSql9ntUEKv1CyrVmu1mYOVDzdC1ZMABwpMe9iOsSq5ntnnwFAlg3VBKMicrKyE3ZbRmO0fNhvrQvd9M6TCYn+yi3raNgT1SmVa/MwZJhuKVDw64eGjnid8c4TzzHAXCN1MvpUTWqXPfitT4/9R6xkaMkceKoPmNpG0dZa47RfM0BLMXx5lJzMmkZ9hVRo6X3sZMKOIzuy0pS22Jbp2bvu7lp3bn92AtipfqXe0HZuyCVfL/0MzUigqw5++Ppv4mZ1zX3BQIAXGWvluHZZ1hf7f19j+OgV4makufJ0jYo0xTAshPu4yiqvPeZGrM9GM/WnyuNzEA7u1Cc9SXnOD1qa09JX1LfjzgXjr4A5ga3e8m5cXnqb3KPbQHAXclAuSeJLvRgCCGnWrOsrgwW5dT4evJJtbbYf87nS9Nkawp/tgRyWvd7qg5XqaNtOvIlwRUvJJ782wOAuykZuhWdKdNy/xQVaHlSwOYOmXSl++kO63wHZiG8keixyD1mB4lqt3bZV/TjLiKHp25vRFqHsEYcZyUXpaOU+CO1ace9gllXZ18BABxJvRCPuj/JWUbtvZeMsutGau3dz0fV9N37TO6L/T1PCnhGkoHF0CFkrUGFnB+6yHie3P3euj1TQaxoEVlVIwKfNfXgIgN+Z/1xIQUArrANCOTU8My9f8ppnzF6bveR97Ety3K/XUcA66ZqCtKtNAPIlUPH7qh0SN9MKbfR7fY4PqIDY45hAOBu9p5LIiebymk/d6jiVZNTrUJwkF7+uroDxKgZ671q8Ip2qdpg22Njq3ZfRsyct/3byGO4VcnbQQCAlbW8mLvquaSkzpZ7N7iGDKyHuaImVVSx7Joi33vf88Zk34ihc7k1q/aGjfbu2wjb9V+l3wAAKaNnU55B7hBHxikpi3F2P97jfr3m+Fjphf0IIRlYdzkJ3ckVswH2bj/nrcj3v5o+fDN6fv+7q9K3YtEny9991bLPSj87ix7btEUqxR4AoLfSiXRqZxpsXS7/NfN949Hz3d7L8py/t/Ylt52jz868rUdpzsCyEedw9Abg7Ds9+9CrllDL96IudqllrGJUwfJaZ/1bbXvPbm/CBNsYAIh0xcQxrcGrlL1nDPdQf7t6G5RMJHU2+uM3oFT64re01nDJZ56oKYBlo/JrheOhdzHxq0/UUWZZj5apcGl3p2MaZtPy+yoZWn22nJG/88iXXM5PsL7U0K29wFDOb37GWa7v6Chx4mxbrfC8WOKK9Xn69e/9efLa77jbj+quIm58mVOqfhl9mCkGgJFme/wYfQ2MHro/KoupZtbqktqzuZksqbIley8+W+vo9p6te1VRv5tZZqrPVfqsUjsSqKQfT6KIO0vKvRgeXWxzCvo9xWzBi5KbEmLYrgDAmajMj9I2nvqgPjP3jnkcu/FCMrDMqBXL9rwnQ+FYxYxv1Ep9b7JH/O56p3Knhk8c/e3K9PKz4R6/+6Z2dqDe9RYjrsO/bfQ6DnPazTkWrpjhaG8bl/Z1+/2zz/TKcsk9lnPaghVFneOinoHOssWOrqW5/779+9fTftdPH8rGNQSwADhU+8DnegD/5kYfAKBNcwBL8ArgOdR8GG/F66xgDQAA0ZprYLlBBXgO5/z7yA0yrRhAm1VkYM9+AQCe5q+rOwA8w6hij4pKzm/0Pnq/30sfF5/Pp0uQIrfNmuXPFlT53f85x0OP46XH7EOzbec7WvncAQB3I4AFZKsNBPR8ANg+mM5o9QBKD9vt0XP75D7o209zat0vpd/dOzZTbez9/ezzrMU+A4A5hBRxBwB4IvW+AADGCM3A8oYKAHiSb/BKBh8AQF8ysKCCN+4AAAAwjhpYPFLrm3LBKwAAABjnz9UdgCsIQAEAAMA6ZGABAAAAMDUBLAAAAACmJoAFAAAAwNRCamD9FsNWWwgAAACASDKwAAAAAJiaABYAAAAAUxPAAgAAAGBqzQGs3/pXAAAAABCtOYD1Ldr++XwUcAcAAAAgXMgshAJXfZVmudkfAAAAwJ2EBLDop2aI5vY7AloAAADAyhRxf4D3+61WGQAAALAsASwAAAAApiaABQAAAMDUBLAmFjnsTx0sAAAAYFWKuN+QYBUAAABwJzKwAAAAAJiaDKwTe8P4ZDgBAAAAjCMD68D7/T6sQRVZmyq1fAAAAABkYFX7BphGZ2P9Lk+QCwAAAHgCGViNrgwiGcoIAAAAPIEAVoDUcMMrzNQXAAAAgFbZASxBkXO9A1klGVezBdUAAAAAaqmB1cFV9bH2/AaxZugPAAAAQClDCDsakQElKwsAAAC4OxlYB1KBoZIg0EzZWF8z9gkAAADgiAysCp/Ppzj4U5L9VJolVRuIko0FAAAArOD9kYbTLDrgdNRe7q6qCUw5DAAAAIBZCWCd2AaDooYWHrWTaqMm66uEQwEAAACYkQBWwlkAqCYIlWonMnjV0p/W5QEAAABEyq6B9bR6STnrmxrqN3p2wFQbNcGop+1vAAAAYF6KuDc6y5oancl0FMj69qU0sAYAAABwtT9Xd+AOvoGeo+BQzhDBHn1K9ad0RsRegbje7V+t1/qV1GZL9eesf0fB0ChR2+e3n3c9lkq1bJPW4cy5+7V2/x+d32p/FwAAwPyya2ClAiJ3VBtsKnm4i2y35YHzqmLvZw+bR3+PrE1Ws216zgZ5piT4+NvP0u/kfL5kQoNewYaex0IqAFSy3JLjPGc7pdoq7duemuPr7Ps1+/9ou+T8+1kfAQCA9RhCeKD2wSennlXpUL6cz54FE6JnN7xqeOHoLLYrvntFuzVK+tJSUy7q87P47ffZOpT+/erfR+/fzNFnBK8AAOD+DCFM+Ga71Mw2mDM0ZvTQwlSfavrSa9bEmuVtP1eaMTNSbt9aZ7k8y5os3Ue52V8zbes9s/fvK2o/r6j1PHS37QEAAMjAOtUaAMjNyBpptsLz0SIK1ecEJ0uVbNvSDL3e+y2i7dkDR6khbamsqR5DH6MmYogSWaPs7HMlATnBKwAAeA4ZWI1yM5dyCr23PuBHFme/ovD8mbP1m/3BtSTwkfvZ7b/XHAM1/Wn93J6o/XeWOdlDze+35POR26bG6EBRKitx5XMAAABQTwbWidx6T7mZEan2IrIrStuIro/V25VDE1lDj+y573dnn+UuesKGyLb8zgAAgBYCWAnbYUORBdpzA1m1D8ilw416B9YiHfXnaB16PDhHZMvlfi5i258NhV1xWNrIYM1MWs9BK08w0Fr0HgAAWJcAVoXIulZngaMIpYGsiHZq1Dx8HgWyRvcjR0lQsSQQmiNVU2mknts2Ynm9M6xGbvPI4OdVQbEaM/UFAACII4B1IHe2tZzMpZKMrIiHr6N2IrLDStrpYbudjmod/f69Z196aNm2uX2qmYGwd8ZTS7ApZ9hg9P4a+Rv47ftZIGn7X+Sye4rcnoJYAABwPwJYQSJnGox6+GodElhbH6s1AFP64B0Z9JshKFWz/rXbrHR9IzKdzoJNPfbF6OPpzNnxkBoie0VwpncwrHbIdOolgSAWAADci1kIA30fmCJm9ouaRS3VTskMij2CVSUzt/0+4OYW1T/799J2Rj8Qtw5ny82Yys3uaVl2bW2ys2Ovdp/k9C9iOWd9uGK5vbUGkyLXO+o8CgAAXE8G1oGew7ii6xvltFOTSbXXxhXDsHoFVUqzYHo9CPdoN7LvEYGz3H+LtpehE9GXks/33vZn61baZskEA7nfbZ2U4qz9iLYBAIC5vT+Zd/3eZP9XxLDB1sBSaZtn7bYUUj/LQEtp+S4AAABwbwJYjUqHxpS00buYd89ZxRwrAAAAQBRDCBuVzjTY2kakWWcaBAAAAPglA+tEaSHt0qLkPUVkh9W0ldMeAAAAQC4BrIQRtaR6b9PIIFZJe087Vuhnlfpo29kcI2rkRVplOwIAAOwRwEporSOV20ZuW60ig0+zPZwT6yjYsQ3SlLb3/d7R+SR3UoO9z6XaPetXzu+4tIZdjpI299b/aP+k9tvZ3/12AQCAGf25ugOrO3sA3s7Q19JWq9y+5PQjJ8OEdGAgN0ixJ7UvS5eT+uxZ4Kb2WN0eP3vt5La93Ra//UoFbn7/tl2XvW1WGuQ5+72Vrt+Zkt+jbCwAAGA1irgfKA3OvN/v7OyR6GWXKnkgrin07qH4b3vBoKO//f57ZHAhtZyotiK+d3asHelxrO0FvUozln7/rbSPNYGommPt+zeBaAAAYAUysIKlgg8l2VjR/dn2KTIzTMDqv6L2ccl+6r0fzrLujrKdfr+3PQYjfwsl7Z1lWP22WdN+S99Kl1MSpDxr228ZAACYlQysTloeEkc+RJZmhsnWiFe6v2uy3s6yiFK++70kePX7bz2PmdxMoxrRM3OWtB3td/8LUgEAACuSgXUgIjtkxmysnOBHTo0sD8Fppfs393jLrV11ZY2yqGO7pMD6nRwNBxyRYQcAADCr7ADWEx9uoh6czwJZVwwpbC3QbhbCcUbWq6pxNky1RelMhWdKh+bNehwf/UavCIwDAACMkB3Amvlh7iqlD4tHwaMrtmtuEWoPwmPUFluvHRY4Qus5I1Vzbe/4nWndW+TM0Bi9DAAAgNll18ASvDp2NBvfkZG1pHL6pajztUqGGbYs46jIeom9Y70kS6pnnaqzrMKc9U0FBCO2X6Srlw8AADCSGliBWmYPu/phdLZ6XeQ5Cz6O3mdH9ZvO/m3vGDsKGPVap71ZE3su70jLTIcAAAB3ZRbCYKXZWF+zBIdS2WG168Z/nWULRbWfGoYXueyW9iJmYazxPZ5rjusZhgGnzNYfAACAVu+PJ52uSgNTPXdHTZAs1R9DDymRWxPrzvX2Rs0oWOLO2xsAALgPAawBSgJHI3ZHZFAtNRwMAAAAIIIA1kA5gaORu2Om7DAAAACAIwJYF5ht6J1AFgAAADAzAayLpAqlX8XsZwAAAMCMBLAutA0YzbAromZDvHpdSmtz/X5+73NHxbdLi3LXFvHefq8kAPpbpPuoYHdEcfFv263Hdc66nX2mdD1z1n+7Hc8+f/S9q38bNSKO/5x1n7HIPQAAMAcBLA61BrOuOrRKa43lBLuOAlxnga9Uv1J9OPtbaZ+P7AXEctY9N6CW6t+RnODUWbtn2+xsW5Vuy5w+7H0+Ilh39JnSNrYilnv0uZzt69IEAAD8+uvqDjCvz+fjIXLH0YN9KmBRGgw8Cx6UBstql33Wzvv9Dsva+9pbt5JA2Z6WfRO9fiUij6no5dYGrwAAAGr8uboDzO8o42cVo4JwNUPlRvStJjOrx7Ii1vcsk+roc6k+1vSh5HORw3JL2up9fP32R6AbAADoTQYWWVbOxqoJIFyReVTah9/9kQrkpP7taD1GrF+ummFuZ987c5aBVLJttv2o6deVv7293/52/WuyEks+AwAAIAOLItFZJT3sZark1LCa0ez9m0FJHbLaOmFHQb6cZbbswysCV7n9zf2NRSwLAABABhZVVs3Ger3qH9BrP+8hvU3u9sudCa9mubVZYFuRWWHRwWTHKQAAMDMZWFTby2SaMbB1dS2iK+XUQdqrK7XK+o063va248jhcalgWsv++l2vo21ZU6z97LjL3XYznk8AAIBryMA6MVMtoJnNWiMr9VA+Yr/W1tKK3J41Q71qgw+pGQxHHx9nGXGl/et9vOwFhHOO05YhlL3MeC4AAADWJgMroXUGtaghSCXLralDczepIMqRVF2sowBTaUDjytpbNcs7Wse92edKtnnkMVqyf3OCa2fZej33W0lh9KN+lmz71+u4yH9UdtlRP88yuI4+AwAAPJcMrAItD68tM721DA+K8O3nXTPRSmaJi/pb7mdrH+Jzvnc2Q2FNm7N99/f7NdlmJe1Hfe772dp9WLO83O/m9OvouBKQAgAAWrw/nioO5dZ+yf1+SwZOS4HqyMLRre2NNKLvM9T+Wq1WUEQG1tmxntomrdtrhn1+V7YtAABwxBDCC6yeybRKwGREH2fYDjP0oUREkfiWWk+jMq4oZ9sCAABHBLAG65El1cvqgTbmNePxDgAAwLzUwLpYVG2Y3JnhAAAAAFYjgDXQnQJJd1oXAAAAYG4CWA9RGnDqOTsisJbW3/qdZzEFAADGUANroL3i1T0KokcUyR7R5ir2Zs3LneEwNataqo2a2diOZvfL6WvNjI2pWTZzP1P695x+bb9Xuh41/aitbRex/qXbKKeve5/5PSZL1vf3s6tMAAEAAMxHBlaBXg9eEdkNX98+5gZMcvqTavPu9gKOR9tx77M5f0u1X7vPSr5f891UgCP3MzV/P+tXzt+jRP5u9/4tZ/0jMytbj7W9vz016A0AAMQTwBrsKAhUO8Qm9Z2IgFNN9gqx2yUqYPOdMCD3uGg5fs6CHC1/r11u7edb16VWyfbPycr6fu6o3d9/P/rc9t+fGNQGAACuIYB1gZrhPa3t5jpbvgfWf0TMINnaRo8soEg565cTWBt93H23y1424lk/I/uau/1+/29Uu0fLyV2u4DYAABBJAOsiZ0GsXg9/Pdq964PqUfCiJKgwk+9xdRSc2ft8lJysn57Lma3tqG2bU4erRx9y62UBAABEEcC60FkgZJZaPxyLGsJ5lN3Sqkd2zOzHXdS2m309f0UMyUzVr8o9jkoL7AMAAOQyC+EEUrN6Hc3a1SProaXNp80uVjs7Xm57EbWZ9oZ45QwR3Zs1ruTYqj2OemYdpmaPrGmn9Hutyzk7R2ztre/vLIJnbeb2c2+Zud990vkCAABoJwNrEr3qYo1oj3qz7Yua/qQCZLkF21fKNuxVtP2ovVRA8CyQehT8bi0+P9P+AAAAnuH98Rr8UEuGQcv3UzOInX0mV+6sZa3trq5ku5xlyrXsv5oAZ2uGzdFyS7O4eijZHj2Dw2fremWB89p9t/e50iy+1DLvdo4AAADGMIRwQmcPxRF1Z86G8KhlUy5qWFRpAGgv6JDTj7NhdanC6y1BrNzlznB85fRlRMAuSs5+yf13AACAkWRgJbTUOYqokZTzUFxad+bo+6XBj7P27uJoHbf1hM6+n5MNkwqWlOyTs4yjkkyxEXK2Ue1vZ+S61AQwW/tZu9/OguBn/So9Rq/YHwAAwL0IYCVEBrB6FX+ODopFtHe3Q2p0cMeQKwAAAPg3RdwTamrIYBu1OivCDQDAvNwLA/QhgFUhZ1a1nsv4miG4MUMfertqHZ+wbQEA7uL3OUAQCyCeIu6VWi5KJXWRVhVV0HwWo9flTtsOAODu9u7h73Y/DHA1AawTETOMHU1Bf0WwqmYWMgCAJ1CHkhp3eQENMDtDCDO03Lz0uvGZ6YZqpr4AANQ4yqCBlNQx4h4ZIJYAVqaaC9Ded0rb+Xw+//lO68Uwol8AAHchUEUNwSuAsd4fZ9cqESnmd0xTT9X3AgCY0RPLK/yu853Xs5cnHjMAVxPAAgDgsZ4YiLjjS9SRnnjMAMxAEXcAAB5JIIJSe8eM4wVgDDWwAAB4HMErSgleAVxLAIsqip0CAKsSvKKU4BXA9QSwKPJ+v/93AV8xiPXbfwDgeQSvnrWuEQSvAOYggMVj/N58CGIBwPMIXv3jietcQ/AKYB4CWFRb/eItiAUAzyF4RSnBK4C5mIWQbAI+AMCKBK/2PX39U9z3AsxHBhZV7nDDc4d1AADSBK8o5ZgBmJMMLB5heyPiBgQA7i2VQeM+YF5X37MJXgHMSwYWWZ6cRv3kdQeAFQlerenqey7BK4C5ycDi9mre5G2/836/3bwAwOJcy+cleAXAGRlYAADchkDEegSvAMghA4tikRfz0Sn+NdlXvfoCAIzhOr6WkftL8ApgHTKwONXrrdiIt20Ry3ADAwBr8BKKEoJXAGuRgUXS3oW9NWsqJ6h01s63jV5ZWlensgPA0/S4vxCImN9Vsw4KXgGsRwCLf2kN3JwVO48IDOW20XJD5OYFAMY5u7b//n3vGn1VEIQ1CV4BrOn9caZ+vB7ZRtvDKncZOZlX3wyp6ECZnwIAjDXiHoS5nQUney7vl+MGYH6Pz8A6emP3lDd5UYGeo3ZK2s8NXrUup6b9ljZfr/sePwBQKzeQEHkvUSrnPjFimT3uQVbxW7qh93YQvAJY26MDWKX1ne6idh1TF/eSoFZOe3vfb7mhrdFyc7rt25NvTAFgq6Re1e+/X32ftnc9j3rpOfqlV8S9SY/sqdH3TKPvz57ykhzuJOf8rA7jGI8OYLEv4u1idPBq7/s9AnG5y6/5riAWAOx78vWxd/3R1DJb7k1We1lX+3AZGXBKvTyfedvBk/3+bnNeYmz/5rcdSwDrR00W0YquSM1uXfbe93L3V3TwLfp7APAkpQGBma6v277uvfQreWCJuudoDURF3QPP+LBWM2ywxwNp60QFwHglv9uzz/hdx3h0AOs3iycnbf1Jam9ajpRsx8gb1aunYt77XGSK/ddTj1MA1hIVvDoaVtjrOtvymR7f3YoaCtiS4f7b1iz3JTUvNmcImHrghXn9TirGeI8OYEW99Uq9tdo7uFe7GLVc6GvWdW+bjbqQR9zo9KzVcVYsf7VjC4DnqsmAOcrI7hXEOnL28NKzzEFPtZn0rfdtPfZhr3o0LaMJUi8fPQzDfI7O9X6v13l0ACvK9iK7vQDfWa/ZXFIni5y2I1K7I97QRUXn734cAcDrFXdf0fJi56qZ6noPO2z5/lnfZstGiB5JMMLRC9yoWS5/lwPkiTov+N3FEcD6f78XiL2T/Nm/9QysjNb6Q41ax73t/P3/r96OuW/1WrPvUstZPbMPgGfLfRGUI/cteW3WS6oWZ20bR1lLNXLujUraX3VGwe8y99TWvMpto8TIbTLjfTQ8id9brMcGsGpTAX8PwNRQt7PvrqK0zz3WMfeNVGQdihmmSB21HACYUc09SETB3VI5y80Z+tgqYnha1IyEEUoDLbX34KOCV6MzvK7OKIMn88zWz2MDWFtRwZDVa16VrPfIoE/P1PSSAuxbvfbt2bLclABwVy3X1tKsqFxnwZRey91bxm+fjpQG1L6fTw293P4tMoPu+9mo+rS5yx/x4rnlmOgx2yHQ10rP/isSwDrQmhZ+BxHD3UaJHNtfMlyhR7syrwC4q1RphujltNZ6Ki1MXhNEqU6YhTAAAAzZSURBVM3eyv1uaX++zoJjo8pmtAyNjAiEtijt18jaZoYRQh9+V/0JYHW26kGce2PS68Zp6+q3SVcuP/eNq5sRAFYx4np1lrlcW5g8upZU74yzmj7ktHe0fVrXJzdw2Ct7quW7tcHImu0YFfBy7wjHvuekvevJ9t/8lsYQwHrFjve/OtAyux7Bq8jaV7lK317WZl9Fv3UFgCeqvddrud6OfJiJXlZucOrKYuR7rsy6GhW8anl5nHp28fAN+3LOe34/4zwygBXx4H/n4EFpvYLXK3bYW+0NQMsyo77/FVVDLbVdR9TbAICnyw083O0B5qr1qQkajrz/i8zAS2XVR/ntQ04ga/sdgJk8MoAVLZUls5KW1MdRM7Pk3Ai01Jo6+v5eYKlXrawW0lfv4W5vQ48CsdHH6+92O7oRr52l6y77AojjvNBPSRArsl5VyXXhzKjjo0dW/t3uQ4D7eH8edmaKLqiYutCdtTlq01+RoZMaL9za7q9e6zZ7dlNJzYtZ1wFW87DLJYSLuh6l7i1W+Z2WBMyjAzlR9Uv3tn3NvV/rcLmz7x+9MOk9Y+TZS5rW5UfUPxtRy9bLVSCSANb/q7nAnF3MUwGs0Zt9RBAjOli11+6eJwVocm4gt5990vaBnh52uYQuooNYJQGsnFkER/zOS16O1g6ly8lCnUlN8K0mMNV7W/QaiphaRussjL22gyGJQA+PC2AxpzulKrfU8Ipc5h225SgzHn8zvbFMvcEGgNWNHK54tvyaZURlIvbKknTvwAquDmqTRwALgglgAQCwshXqf0Gk6ACW30EfAljQ0cjMHkEsAAB6aK1HBhBBAAtuZNVitgAAAJDy19UdAPqZtVgrAAAAlBDAghspmaUQAAAAViGABTcjiAUAAMDdCGDBDal9BQAAwJ0IYMFDyMICAABgVQJYcFOGEgIAAHAXAlhwY4JYAAAA3IEAFtycelgAAACsTgALHkgWFgAAACv5c3UH4Im2ASRZUgAAAHBMAAsG28t+ysmIqglyybQCAADgDgSwYBGCUQAAADyVGlgw2AzDBWfoAwAAAOSSgQUXyAkg9cq4ErwCAABgNQJYMKm9QFNuUEuQCgAAgDsRwIKFCEwBAADwRGpgAQAAADA1ASwAAAAApiaABQAAAMDUBLAAAAAAmJoAFgAAAABTE8ACAAAAYGp/ru4AAFzt/X4f/u3z+YS1VdvmyOXltNe6jJJl9Wp3VPu9lhF5DN3FdptFb6Oev+3Ic1BqGY4bAFb2/riSTWn0jWv0Td+3vStuHvdErU/08nptp9zlHol+2B29/aOWe7Z8p897yD2+zvb3iKBGy3Jzllf7W8ttv3ZZvQNwswX4IvfpU/Q+T/cMivYOuJYuo2U5ANCTAFaQ0QGB2rZLlhd5kxRxmLU8WP3qeWNZspxe26l0mSmRD+wjshyilluyfKfQcXo8oEYdw3cIro/+vQlgtbff6/wzIhso0qjspRIz/BZq2m9dFgD0pAbWw0UFhXq117vdq5Z71frAqlK/Gb+n+7OP912xXeyLtdhfANyJGlgBom8OPp+PGw66+L5NjTi+rjpGj94IX5HRxvpKjqcZ2s1dTtSyoodN5rYdNax9xH7YW0av/dzabs6w9RXvP0bcN/XcZqPOF0fLXHGfA/BMAliTGvnws+qNS209l9YipiMeVnob8dDeY5uk9lvNA95VNcj421GQYob9UnpuzP38yHNu67Jytn+v9em9naLaP9pGkf3vMQTu9zo4w+8twpX3MzP/Dvba2O7ryJdbANCTIYQn3u/3v/7bM/Kmr8eyVrxpze1z9LqlHlaeZtZ1zg1sbh/mIMqsv42nueN+OAo88Lc7bo9R9zEAsAIBrIQVHmqjbkTufFN8p3WZWeoYWmEfrPB7B/h8Pv/7DwDgSQSwCs3wkOumdX720d9Wf8g66/vK6wbAM7hWAXAXAlgDRN84zBBEe4rVsoiIny7csFFKzXKOjiqEXrKMmdodMXPlLPsazqz+QgkAXi9F3MO4KbivnrNwzeQu69GD3/f9RR//e5NFXB3sKZ3AYsQ5oVffS9tvcbdz58qTu4xw9e/4bssGgBICWAvpMaMebVa96dNv+EevbJ+cdp98Du/xe65tc8R+ePK+voNZrj/Rx9Es6wUAOQSwCo24+XQzMb+V99HKfee5UlkhLefl3kPVcr9fuw4ly149eHK2nUbshyv39Ui/fRwxFLWnFbZ56XEVtU4zzK4NACUEsG6gx83ZCjd8M5p9m/UMXq1+zKze/ye4cv88ITtn9NCxmuX13k6p9q8K/v8uNxVY2v49ytXHZYmjffT995XWpTfBKwBWJIA1oStu6s+Gv/S6oRmxjFF6P1SNWlZL+9HZIN/PyBqjh4gHuNI2RhzLLeeHnO9GrkPPjKoR7aeWccUQyRkCoVfJHbL7esVdQ3u3czYRQfS+fuqxA8A6BLAmNfLB/ao6LdvlrnLjPeqtd2p5kdvqqm1esg4jCumvcOzRX8RxkGqjd5bTiONYke9/XLmvI/z2b5Vr8CxG/dZer/kD3wAwigDW5PZuKGa/Id7Te6apuxi9b5+8rbdqhg7ZfvGufKC2P+/lTvtztmGNAABXEMAKtOJDrptfol3xoBWR6eABEZjRWZbX6+U8dXcrZPMBwAh/Xd2B1ZwVCC39W42ZA2Iz920md91OOQ9aszqrA5f7HWAOfp9ptg8AsBoBrEIzPITPftM5wzZivNX3++r9p13UuXX0TH5cZ+TLq1aOlXXNUg8VAK5mCGEAF/3/GlF0O9es+2f0bF9H7Uc91FxZv6x0O22HY3iwu953H/zumyv2S+9lR/+m9ybD2DPrMT7iHPd6/Xv9e+yD7faNnD3uaBbaVEb4UfupupqzHiOzGvVbm/UeBgCuIICVMOND7l1uZFrrOZzdcKfanmE/5hpR9yJyVsXtg9PMx+tKx8FdlTxk91p+7rDw0j7NduybIGP8efTI2X44O+8/qSzBimoDgrOdMwBgRgJYJ1bJKHkq26mPljfy9gl3NGsAaOXizqv2e3YzHqekzfBbcNwAsAI1sCakfsp/zdzPmfu2tVJfS9x1vZhH72yx1Y7hiP7WtNF7oogr249e1tP03rb2CQBc7/1xRQ5xFnTqnUreuhuj+1+73N61syLrPUW2l7u8r9n29+jjNbcf0ft7y+nzvmYbPg7Modf90lmts+3w/FXvZwCghQBWsMgH6F4P43dh+wAAAMAzCGABAAAAMDU1sAAAAACYmgAWAAAAAFMTwAIAAABgagJYAAAAAExNAAsAAACAqQlgAQAAADA1ASwAAAAApiaABQAAAMDUBLAAAAAAmJoAFgAAAABTE8ACAAAAYGoCWAAAAABMTQALAAAAgKn9uboDwH293+/X5/N5vd/v//3b5/P539/2fP/+2wYA3M33+lhz3Tu6lp5dY38/s+f7vdRnAOAq70/gFWrvIfXo7z1duexetkEAAADg2fYCoTkvCfc+U/q8cRYM/Q2oCooCEaoDWIIpAAAAAKREBbGrhhAKXgEAAABw5my0Xq6qIu5SQAEAAAAo0ZIQZRZCAAAAAKZmFkIACJSaBaxkhrDcWcSOZiHLkerj9+97RX1bMrFrivmmZkY7mzXt7C3f0QxwOfvh+7kVSyus2m8A4LlCZiEcObvglTdbObN73FnNNM9X9SM1vfTRA1nNMkrG8u59NvUgd9T3nGWdtZXr6GGx5rRx9qAMAE/Se2a21D1Kzn3B3ux2Jd+Psu3HE+/BAe6k6UVoRAALAAAAuK+jAHJESCEnK/xIKjmhJMmAvkKOEwEsAAAAAGamiDsAPMwMbxvP+vB+v//3X6/lz7AdAADIIwMLeLSSOma5beXUCzlKiT777lGK9FGtEg/oAPvO6mXmfL/ncBoA4N/CAlg5hShLHu5y5IyJVfARAADGunrypaco3c5nz0bbSYNGTta116+SGWF/RT5b5jwuHz3n9p7EKPJFLKygOoDlggQAAADAmYgga1UNLMErAAAAAHJExJEUcQcAAACgq9YgVnEAS/YVAAAAAKVaYkrFASzF4QCAWp/P51//bf929PlUWwAA3F/YLISvV1sk7WxGwaNupmY2LOmTG2AAAGBVObPCt7T9esU/M+3NOri3Hqnnw9qZC4FrtJxHQgNYAAAAAEdKk1D2gpJ7321NqEl9/yzhZgbR2yRaROhJAAsAAACAqZmFEAAAAICpCWABAAAAMDUBLAAAAACmJoAFAAAAwNQEsAAAAACYmgAWAAAAAFMTwAIAAABgagJYAAAAAExNAAsAAACAqQlgAQAAADA1ASwAAAAApiaABQAAAMDUBLAAAAAAmJoAFgAAAABTE8ACAAAAYGoCWAAAAABMTQALAAAAgKkJYAEAAAAwNQEsAAAAAKb2fxXXk0AI0l/qAAAAAElFTQmCC\"\n    \n}\n//the string here is a dummy string without enough characters  and will not resolve to an image.",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "BveQGQ3groZSx9zTieSlq"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "Check payment ID, in GUID format",
        "children": []
      },
      {
        "name": "view",
        "kind": "required",
        "type": "string",
        "description": "What part of the check image to view:\n- Front\n- Back\n- Other",
        "": "What part of the check image to view:\n- Front\n- Back\n- Other"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "content",
      "kind": "optional",
      "type": "string",
      "description": "Requested image as a Base64-encoded value"
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1paymentsidimagesview",
  "legacyHash": "FE8-gqGK9IzgtEJhrc0tq"
}
```
:::


[title] 
[path] Payments/Checks/APIs/


[title] Purchasing a loan
[path] Lending/

## Lending Selling APIs

### Overview

The COS Lending Selling API enables Marketplace Lenders (MPLs) and Investors to purchase loans through a streamlined API. The purchase process includes validation, fund transfers, interest accrual calculations, and automated reporting.

Cross River provides you (or your investor) three options to purchase your loans using the Selling system (part of Lending).

- **Recommended**:  API and Webhook integration for full automation and loan level monitoring as the loan moves from "Pending" to "In Seasoning" to "Ready For Purchase" to "Purchased".
- **Low touch**: Log in to the UI, review and click to Purchase
- **No touch**: Auto Debit your account with Cross River

Regardless of the option, you can configure [Hooks](https://docs.crossriver.com/apis/digital-lending/hook-notifications#nXa6z) to receive a purchase confirmation via email or Slack.

HoldForSale ("HFS") and Long Term Hold For Sale ("LTHFS") are the loan types managed in Selling. You can also view loans that Cross River Retains ("RET").

### APIs

| API                                                                                 | Description                                                                                                                  |
| ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| [GET/selling/api/loans/\{loanType}](docId\:aclS7XmQOriQexuwKChI_)                   | Get all loans by loan type                                                                                                   |
| [POST /selling/api/loans/purchase  ](docId\:ScuWXdVKgmK0wtoc74toj)                  | Purchase loans                                                                                                               |
| [POST/selling/api/purchase/total](docId\:lMG_V_pDpsrY6_Tnb2unx)                     | Calculate the expected total purchase amount **before&#x20;**&#x65;xecuting the purchase.                                    |
| [POST/selling/api/loans/endSeasoning](docId:4b70vPlfUjUCEiP95OQEZ)                  | Transition LTHFS loans from InSeasoning status to `ReadyForPurchase` status, making them immediately available for purchase. |
| [GET /selling/api/sofr  ](docId\:ABRFf5sje3Z0qj_VvBhfc)                             | Retrieve the most recent SOFT (Secured Overnight Financing Rate) value used for interest rate calculations.                  |
| [GET /selling/api/loans/\{id}/info](docId\:AHb0AJpxgcw4kmr-aRBmG)                   | Retrieve detailed information for a specific loan by its ID.                                                                 |
| [GET /selling/api/loans/\{id}/purchase\_details](docId:6zdZZ_wBF0jUldlUAfIXv)       | Retrieve sale details for a loan including statuses, dates, amounts, and fee collection information.                         |
| [GET /selling/api/loans/\{id}/total](docId:6Ee5TCHad98vi2v8Pholk)                   | Calculate the total amount for a specific loan, including adjusted loan amount plus accrued interest.                        |
| [GET /selling/api/loans/aggregation](docId\:gW-q12__5Et5mupyZAHh8)                  | Retrieve aggregated loan counts and amounts grouped by loan type and sale status for a specific MPL.                         |
| [GET /selling/api/loans/receipt/\{purchaseId}](docId\:c6HyxlpTQsvA1ffOp_Msz)        | Retrieve the purchase receipt (invoice) for a completed purchase batch by its purchase batch ID.                             |
| [POST /selling/api/loans/purchase/balance](docId:1KsF6yXedMp6mpzQCSXvJ)             | Get the current balance of the purchase account that would be used for the specified purchase parameters.                    |
| [POST /selling/api/loans/purchase/accounts-balances](docId\:niFW54Ln-G7hSf2V9zaUV)  | Get the purchase accounts and their balances for loans matching the given purchase parameters.                               |
| [GET /selling/api/loans/purchase/accounts](docId\:Q3vC3-8hVXxHkOioJ0G3m)            | Retrieve all purchase accounts that can be used for purchasing loans with the specified parameters.                          |
| [GET /selling/api/loans/purchase/purchaseAllowed](docId\:KEI4AcLgwId0kt9dtMEta)     | Check if loan purchasing is allowed on a specific date based on system configuration and business rules.                     |

### UI

- The sandbox UI is [https://lendingappsandbox.crbcos.com/loans/selling](https://lendingappsandbox.crbcos.com/preapproval/applications)******
- The production UI is ***https\://lendingapp.crbcos.com/loans/selling***

### API location

- Swagger: [](https://lendingsandbox.crbcos.com/selling/swagger/index.html)
- URL for sandbox: [](https://lendingappsandbox.crbcos.com/loans/selling)
- Base URL for production:[](https://lending.crbcos.com/preapproval/v1)
- API scope for sandbox is: **CosLending\:Selling\:stg**
- API scope for production is: **CosLending\:Selling\:prd**




[title] Error codes: onchain payments
[path] Onchain payments/

## Overview

This page provides error code information for the Onchain Payments (Crypto) API, including error codes, descriptions, and resolution guidance.

## Error response format

```json
{
    "errors": [
        {
            "code": 2022,
            "message": "Account Type cannot be used for payments"
        }
    ]
}
```

***

## Error codes by category

### Payment errors

Errors related to cryptocurrency payment processing, validation, and configuration.

| Code     | Description                                                                                                     | Resolution                                                                          |
| -------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| **2010** | Currency is not supported                                                                                       | Use a supported cryptocurrency; check product configuration for allowed currencies  |
| **2012** | The destination address is not whitelisted for this customer or the whitelist cooldown period has not completed | Add destination address to whitelist; wait for cooldown period to complete          |
| **2018** | Gross fees are not supported for this currency                                                                  | Use net fees for this currency; check fee configuration                             |
| **2020** | If Amount and AmountNative are both supplied they must represent the same value                                 | Ensure amount and native amount match when both are provided                        |
| **2022** | Account Type cannot be used for payments                                                                        | Account type is not configured for payment operations; verify account configuration |
| **2026** | Payment exceeds maximum amount configured for product                                                           | Reduce payment amount or request limit increase; check product configuration        |
| **2027** | The source account address cannot be the same as the destination address                                        | Use different addresses for source and destination                                  |
| **2040** | Payment less than minimum amount allowed                                                                        | Increase payment amount to meet minimum threshold                                   |
| **2043** | Inbound payment originator PII already exists                                                                   | Originator personally identifiable information has already been recorded            |
| **2199** | Payments for Non Native currencies are disabled                                                                 | Non-native currency payments are not currently enabled; use native currencies       |
| **2214** | Account configuration not found or is invalid                                                                   | Verify account configuration ID is correct and configuration exists                 |
| **2220** | The account does not have an address for the requested blockchain                                               | Configure address for the requested blockchain on this account                      |
| **2222** | The Operator Account Number has not been set in the Global Configuration                                        | Configure operator account number in global settings; contact administrator         |
| **2226** | Outbound payments not enabled for account                                                                       | Enable outbound payments in account configuration                                   |
| **2230** | The Fee Account Number has not been set in the Global Configuration                                             | Configure fee account number in global settings; contact administrator              |

### Account address errors

Errors related to account address management and blockchain configuration.

| Code     | Description                                                           | Resolution                                                            |
| -------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| **2272** | Blockchain and currency pair not found or is invalid                  | Verify blockchain-currency pair is configured and supported           |
| **2275** | Account configuration not found                                       | Verify account configuration exists; create configuration if needed   |
| **2280** | Account address not recognized                                        | Verify account address is registered and valid                        |
| **2281** | Account address already exists                                        | Account address is already registered; use existing address or modify |
| **2452** | Cannot deactivate address: vault has a non-zero balance in Fireblocks | Sweep vault balance to zero before deactivating address               |
| **2453** | Cannot deactivate address: no Fireblocks vault account ID found       | Address must have Fireblocks vault account to be deactivated          |

### External address errors

Errors related to external address management and whitelist configuration.

| Code     | Description                                          | Resolution                                                             |
| -------- | ---------------------------------------------------- | ---------------------------------------------------------------------- |
| **2272** | Blockchain and currency pair not found or is invalid | Verify blockchain-currency pair is configured and supported            |
| **2273** | External address not recognized                      | Verify external address is registered and valid                        |
| **2274** | External address already exists                      | External address is already registered; use existing address or modify |
| **2275** | Account configuration not found                      | Verify account configuration exists; create configuration if needed    |


[title] List check payments
[path] Payments/Checks/APIs/

## API reference

Returns details about all check payments of a single partner. The `results` object repeats for each check.

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments",
  "method": "GET",
  "url": "https://sandbox.crbcos.com/checks/v1/payments",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "flw3I6YAlYAch_R3p6UGW",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments'\n",
        "customLabel": ""
      },
      {
        "id": "CYgeJvWZTSkXfwN-zcMWw",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'GET',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "xaYu_cGuXJWdlnlKFafTe",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/checks/v1/payments\"\n\npayload = {}\nheaders = {}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "xf_QW7WMg_SLYQn8g9GUD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "09kqCFa4VeWcg6MviC2d2",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "flw3I6YAlYAch_R3p6UGW"
  },
  "results": {
    "languages": [
      {
        "id": "uv43Jrbeg_9MgyANe5ty4",
        "language": "200",
        "code": "{\n    \"results\": [\n        {\n            \"id\": \"3366874c-b887-4532-aec7-b48c006d4d1f\",\n            \"accountNumber\": \"2203250853\",\n            \"referenceId\": \"C200R1684TDQ\",\n            \"paymentType\": \"Return\",\n            \"checkType\": \"Standard\",\n            \"direction\": \"Inbound\",\n            \"status\": \"Completed\",\n            \"source\": \"Api\",\n            \"posting\": \"Posted\",\n            \"postingCode\": \"OK\",\n            \"fedBatchId\": \"0cfb50f6-afdd-4033-a1c2-b48c006d4d1f\",\n            \"fedBatchSequence\": 0,\n            \"coreTransactionId\": \"7153b673-bf50-4b9b-b097-b48c006d4d1f\",\n            \"originalPaymentId\": \"3d70fc63-672e-4c3b-9e66-b48700b5db14\",\n            \"customerId\": \"861261af-1251-49e8-966f-b2ff00d627bd\",\n            \"payerRoutingNumber\": \"314074269\",\n            \"payerAccountNumber\": \"28293886\",\n            \"payeeName\": \"\",\n            \"checkNumber\": \"1237\",\n            \"bofdRoutingNumber\": \"021214891\",\n            \"sequenceNumber\": \"3918624417\",\n            \"amount\": 10000,\n            \"currency\": \"usd\",\n            \"recognizedAmount\": 0,\n            \"iqaPassed\": false,\n            \"returnCode\": \"A\",\n            \"hasFrontImage\": true,\n            \"hasBackImage\": true,\n            \"isRedeposit\": false,\n            \"policy\": \"Standard\",\n            \"schedule\": [],\n            \"createdAt\": \"2026-07-19T02:37:57.223-04:00\",\n            \"processedAt\": \"2026-07-19T02:37:57.587-04:00\",\n            \"completedAt\": \"2026-07-19T02:37:57.743-04:00\",\n            \"postedAt\": \"2026-07-19T02:37:57.743-04:00\",\n            \"wasReturned\": false,\n            \"purpose\": \"TESTING\",\n            \"decisionRequired\": false,\n            \"wasDecisioned\": false,\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"lastModifiedAt\": \"2026-07-19T02:37:57.7438976-04:00\"\n        },\n        {\n            \"id\": \"ffacc406-7d79-4051-b20d-b48c0085b262\",\n            \"accountNumber\": \"2846220461\",\n            \"referenceId\": \"C200859Z8JXH\",\n            \"paymentType\": \"Return\",\n            \"checkType\": \"Unknown\",\n            \"direction\": \"Outbound\",\n            \"status\": \"Pending\",\n            \"source\": \"Api\",\n            \"posting\": \"Authorized\",\n            \"postingCode\": \"OK\",\n            \"coreTransactionId\": \"ad3e3ea6-6521-4fc6-9b7c-b48c0085b262\",\n            \"memoPostId\": \"7a18b8c6-1d21-41eb-b2b2-b48c0085b262\",\n            \"originalPaymentId\": \"2100980b-4419-4a42-bc4c-b449006b84ec\",\n            \"customerId\": \"05106466-9144-4f3f-8fb1-b345005d18ba\",\n            \"payerRoutingNumber\": \"021214891\",\n            \"payerAccountNumber\": \"2846220461\",\n            \"payeeName\": \"string\",\n            \"checkNumber\": \"2846220461\",\n            \"bofdRoutingNumber\": \"021214891\",\n            \"sequenceNumber\": \"6121648120\",\n            \"amount\": 4400,\n            \"currency\": \"usd\",\n            \"recognizedAmount\": 0,\n            \"iqaPassed\": false,\n            \"returnCode\": \"I\",\n            \"hasFrontImage\": true,\n            \"hasBackImage\": true,\n            \"isRedeposit\": false,\n            \"policy\": \"Standard\",\n            \"schedule\": [],\n            \"createdAt\": \"2026-07-19T04:06:46.513-04:00\",\n            \"wasReturned\": false,\n            \"decisionRequired\": false,\n            \"wasDecisioned\": false,\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"lastModifiedAt\": \"2026-07-19T04:06:46.8913621-04:00\"\n        },\n        {\n            \"id\": \"b150ebbf-72bd-478a-ae2e-b48c008909ce\",\n            \"accountNumber\": \"2846220461\",\n            \"referenceId\": \"C2002C520504\",\n            \"paymentType\": \"Forward\",\n            \"checkType\": \"Unknown\",\n            \"direction\": \"Inbound\",\n            \"status\": \"Processing\",\n            \"source\": \"Api\",\n            \"posting\": \"Failed\",\n            \"postingCode\": \"NSF\",\n            \"fedBatchId\": \"95af5b77-ff7c-4a13-b8c3-b48c008909ce\",\n            \"fedBatchSequence\": 0,\n            \"coreTransactionId\": \"a1940dd4-ec14-47b2-8c4e-b48c008909ce\",\n            \"originalPaymentId\": \"b150ebbf-72bd-478a-ae2e-b48c008909ce\",\n            \"customerId\": \"05106466-9144-4f3f-8fb1-b345005d18ba\",\n            \"payerRoutingNumber\": \"021214891\",\n            \"payerAccountNumber\": \"2846220461\",\n            \"payeeName\": \"string\",\n            \"checkNumber\": \"1032357\",\n            \"bofdRoutingNumber\": \"061000146\",\n            \"sequenceNumber\": \"4536586199\",\n            \"amount\": 44000,\n            \"currency\": \"usd\",\n            \"recognizedAmount\": 0,\n            \"iqaPassed\": false,\n            \"hasFrontImage\": true,\n            \"hasBackImage\": true,\n            \"isRedeposit\": false,\n            \"policy\": \"Standard\",\n            \"schedule\": [],\n            \"createdAt\": \"2026-07-19T04:18:56.473-04:00\",\n            \"processedAt\": \"2026-07-19T04:18:56.69-04:00\",\n            \"wasReturned\": false,\n            \"purpose\": \"TESTING\",\n            \"depositBusinessDate\": \"260720\",\n            \"decisionRequired\": false,\n            \"wasDecisioned\": false,\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"lastModifiedAt\": \"2026-07-19T04:18:56.9721824-04:00\"\n        },\n        {\n            \"id\": \"3ce66d18-2669-4c26-bb7d-b48c0089da8b\",\n            \"accountNumber\": \"2846220461\",\n            \"referenceId\": \"C200WD82L14A\",\n            \"paymentType\": \"Forward\",\n            \"checkType\": \"Unknown\",\n            \"direction\": \"Inbound\",\n            \"status\": \"Completed\",\n            \"source\": \"Api\",\n            \"posting\": \"Posted\",\n            \"postingCode\": \"OK\",\n            \"fedBatchId\": \"bc4058fe-74ee-47a9-8cde-b48c0089da8b\",\n            \"fedBatchSequence\": 0,\n            \"coreTransactionId\": \"01b5ba15-df91-4b0b-a288-b48c0089da8b\",\n            \"originalPaymentId\": \"3ce66d18-2669-4c26-bb7d-b48c0089da8b\",\n            \"customerId\": \"05106466-9144-4f3f-8fb1-b345005d18ba\",\n            \"payerRoutingNumber\": \"021214891\",\n            \"payerAccountNumber\": \"2846220461\",\n            \"payeeName\": \"string\",\n            \"checkNumber\": \"1032357\",\n            \"bofdRoutingNumber\": \"061000146\",\n            \"sequenceNumber\": \"3650080823\",\n            \"amount\": 4500,\n            \"currency\": \"usd\",\n            \"recognizedAmount\": 0,\n            \"iqaPassed\": false,\n            \"hasFrontImage\": true,\n            \"hasBackImage\": true,\n            \"isRedeposit\": false,\n            \"policy\": \"Standard\",\n            \"schedule\": [],\n            \"createdAt\": \"2026-07-19T04:21:54.593-04:00\",\n            \"processedAt\": \"2026-07-19T04:21:54.663-04:00\",\n            \"completedAt\": \"2026-07-19T04:21:54.717-04:00\",\n            \"postedAt\": \"2026-07-19T04:21:54.717-04:00\",\n            \"wasReturned\": true,\n            \"purpose\": \"TESTING\",\n            \"depositBusinessDate\": \"260720\",\n            \"decisionRequired\": false,\n            \"wasDecisioned\": false,\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"lastModifiedAt\": \"2026-07-19T04:38:01.0965045-04:00\"\n        },\n        {\n            \"id\": \"f6a270e5-da26-4325-88d4-b48c008e4727\",\n            \"accountNumber\": \"2846220461\",\n            \"referenceId\": \"C200I8164R2N\",\n            \"paymentType\": \"Return\",\n            \"checkType\": \"Unknown\",\n            \"direction\": \"Outbound\",\n            \"status\": \"Pending\",\n            \"source\": \"Api\",\n            \"posting\": \"Authorized\",\n            \"postingCode\": \"OK\",\n            \"coreTransactionId\": \"bde5ef07-f9e3-412c-9bd1-b48c008e4727\",\n            \"memoPostId\": \"a1433756-8cb3-4e11-a79a-b48c008e4727\",\n            \"originalPaymentId\": \"3ce66d18-2669-4c26-bb7d-b48c0089da8b\",\n            \"customerId\": \"05106466-9144-4f3f-8fb1-b345005d18ba\",\n            \"payerRoutingNumber\": \"021214891\",\n            \"payerAccountNumber\": \"2846220461\",\n            \"payeeName\": \"string\",\n            \"checkNumber\": \"2846220461\",\n            \"bofdRoutingNumber\": \"021214891\",\n            \"sequenceNumber\": \"3650080823\",\n            \"amount\": 4500,\n            \"currency\": \"usd\",\n            \"recognizedAmount\": 0,\n            \"iqaPassed\": false,\n            \"returnCode\": \"I\",\n            \"hasFrontImage\": true,\n            \"hasBackImage\": true,\n            \"isRedeposit\": false,\n            \"policy\": \"Standard\",\n            \"schedule\": [],\n            \"createdAt\": \"2026-07-19T04:38:01.09-04:00\",\n            \"wasReturned\": false,\n            \"decisionRequired\": false,\n            \"wasDecisioned\": false,\n            \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n            \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n            \"lastModifiedAt\": \"2026-07-19T04:38:01.2612968-04:00\"\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 5,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": false\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "uv43Jrbeg_9MgyANe5ty4"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "originalPaymentId",
        "kind": "optional",
        "type": "string",
        "description": "Payment ID returned when the check was originally deposited",
        "": "originalPaymentId"
      },
      {
        "name": "referenceId",
        "kind": "optional",
        "type": "string",
        "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
        "": "referenceId"
      },
      {
        "name": "direction",
        "kind": "optional",
        "type": "string",
        "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank. See Deposit.)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank. See Withdrawal.)",
        "": "direction"
      },
      {
        "name": "status",
        "kind": "optional",
        "type": "string",
        "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
        "": "status"
      },
      {
        "name": "paymentType",
        "kind": "optional",
        "type": "string",
        "description": "Indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
        "": "Indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)"
      },
      {
        "name": "checkType",
        "kind": "optional",
        "type": "string",
        "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
        "": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown"
      },
      {
        "name": "posting",
        "kind": "optional",
        "type": "string",
        "description": "Account posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
        "": "Account posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing"
      },
      {
        "name": "postingCode",
        "kind": "optional",
        "type": "string",
        "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
        "": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection."
      },
      {
        "name": "minAmount",
        "kind": "optional",
        "type": "integer",
        "description": "Minimum dollar amount of the check to look for, in positive integral cents. For example, $1.00 appears as 100.",
        "": "minAmount"
      },
      {
        "name": "maxAmount",
        "kind": "optional",
        "type": "integer",
        "description": "Maximum dollar amount of the check to look for, in positive integral cents. For example, $1.00 appears as 100.",
        "": "integer"
      },
      {
        "name": "accountNumber",
        "kind": "optional",
        "type": "string",
        "description": "Number of the Cross River account the check payments posted to",
        "": "Number of the Cross River account the check payments posted to"
      },
      {
        "name": "sequenceNumber",
        "kind": "optional",
        "type": "string",
        "description": "The position of the check in a bundle or batch of checks, found in the ICL file as part of the CheckDetail record",
        "": "The position of the check in a bundle or batch of checks, found in the ICL file as part of the CheckDetail record"
      },
      {
        "name": "checkNumber",
        "kind": "optional",
        "type": "string",
        "description": "The serial number printed on the check",
        "": "The serial number printed on the check"
      },
      {
        "name": "from",
        "kind": "optional",
        "type": "string",
        "description": "Earliest payment to look for. Use format yyyy-mm-dd",
        "": "Earliest payment to look for. Use format yyyy-mm-dd"
      },
      {
        "name": "to",
        "kind": "optional",
        "type": "string",
        "description": "Latest payment to look for. Use format yyyy-mm-dd",
        "": "Latest payment to look for. Use format yyyy-mm-dd"
      },
      {
        "name": "partnerId",
        "kind": "optional",
        "type": "string",
        "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
        "": "Your unique ID in the Cross River system. This ID is in GUID format."
      },
      {
        "name": "productId",
        "kind": "optional",
        "type": "string",
        "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.\nA query by product ID returns all payments for all accounts created using that product.",
        "": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.\nA query by product ID returns all payments for all accounts created using that product."
      },
      {
        "name": "wasReturned",
        "kind": "optional",
        "type": "boolean",
        "description": "True if the check was returned. Otherwise false.\nA query on this value will return either payments or payment returns, not both.",
        "": "True if the check was returned. Otherwise false.\nA query on this value will return either payments or payment returns, not both."
      },
      {
        "name": "isRedeposit",
        "kind": "optional",
        "type": "boolean",
        "description": "True if the check was deposited before. Otherwise false.",
        "": "isRedeposit"
      },
      {
        "name": "clientIdentifier",
        "kind": "optional",
        "type": "string",
        "description": "Search on the value you added as your own unique identifying string to a payment call or COS record",
        "": "Search on the value you added as your own unique identifying string to a payment call or COS record"
      },
      {
        "name": "depositBusinessDate",
        "kind": "optional",
        "type": "string",
        "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
        "": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1."
      }
    ],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Check payment ID. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account the check is posting to",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
      "children": []
    },
    {
      "name": "checkType",
      "kind": "optional",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
      "children": []
    },
    {
      "name": "direction ",
      "kind": "optional",
      "type": "string",
      "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank. See Deposit.)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank. See Withdrawal.)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified",
      "children": []
    },
    {
      "name": "positivePayResult",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled",
      "children": []
    },
    {
      "name": "positivePayMatchId",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the distribution that the check was included in",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "payerRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)",
      "children": []
    },
    {
      "name": "payerAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s account number (printed on the check)",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the bank where the check was first deposited",
      "children": []
    },
    {
      "name": "sequenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "The check sequence number",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)",
      "children": []
    },
    {
      "name": "micr",
      "kind": "optional",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number",
      "children": []
    },
    {
      "name": "recognizedAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The check amount recognized from the check image via OCR",
      "children": []
    },
    {
      "name": "iqaPassed",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false",
      "children": []
    },
    {
      "name": "returnCode",
      "kind": "optional",
      "type": "string",
      "description": "The return code indicates why the check was returned. There are several return codes.",
      "children": []
    },
    {
      "name": "hasFrontImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "hasBackImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "isRedeposit",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false.",
      "children": []
    },
    {
      "name": "policy ",
      "kind": "optional",
      "type": "string",
      "description": "The current availability policy type assigned to the deposit, defining the schedule for making funds available:\n- Standard\n- NewAccount\n- LargeDeposits\n- RedepositedCheck\n- RepeatedOverdrafts\n- OnUs\n- RCNoticeOfUnpaidReturn\n- RCSuspectFraud\n- RCFundingAccountOverdrafts\n- RCUnverifiedEndorsement\n- RCInconsistentInformation\n- RCErasuresOrAlterations\n- RCOutOfDateRoutingNumber\n- RCPostDatedOrStaleDate\n- RCPayingBankNotPaidIndication\n- RCLostOrDamaged\n- FiveDay\n- EmergencyConditions",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose of the deposited check",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "depositBusinessDate",
      "kind": "optional",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
      "children": []
    },
    {
      "name": "lockboxVendorId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1payments",
  "legacyHash": "bQN43kp8d-2n-ZpPt-wuo"
}
```
:::


[title] Transition LTHFS loans
[path] Lending/Purchasing a loan/

## Transition LTHFS loans

:::BlockQuote
**POST&#x20;**/selling/api/loans/endSeasoning
:::

Transition LTHFS loans from `InSeasoning` status to `ReadyForPurchase` status, making them immediately available for purchase.

### Sample request

```json
[
  "550e8400-e29b-41d4-a716-446655440000",
  "550e8400-e29b-41d4-a716-446655440001",
  "550e8400-e29b-41d4-a716-446655440002"
]
```

### Parameters

Request body is an array of LTHFS Arix IDs to end seasoning for.

### Sample response

```json
{
  "success": true,
  "message": "Seasoning ended for 3 loans"
}
```

:::hint{type="info"}
LTHFS loans can also be transitioned from `InSeasoning` to `ReadyForPurchase` from the Selling UI. (see [Upload CSV and end seasoning](docId\:TI-amH-UXoGEVj20KA6_N))
:::


[title] Purchase account balance
[path] Lending/Purchasing a loan/

## Get purchase account balance

:::BlockQuote
**POST** /selling/api/loans/purchase/balance
:::

Get the current balance of the purchase account that would be used for the specified purchase parameters. Use this to verify sufficient funds before executing a purchase.

### Request body

:::BlockQuote
\{
&#x20; "date": "2026-08-05",
&#x20; "loanType": 1,
&#x20; "issuingBank": "CRB",
&#x20; "mplId": "ABC",
&#x20; "investorId": "Investor Name"
}
:::

| Field         | Type    | Required | Description                                            |
| ------------- | ------- | -------- | ------------------------------------------------------ |
| `date`        | String  | Yes      | Purchase date in YYYY-MM-DD format. Must be a fed day. |
| `loanType`    | Integer | Yes      | Loan type: 1 = HFS, 2 = LTHFS                          |
| `issuingBank` | String  | Yes      | Issuing bank identifier (e.g., "CRB")                  |
| `mplId`       | String  | Yes      | MPL identifier                                         |
| `investorId`  | String  | No       | Investor identifier (optional)                         |

### Response

**200 OK** - Returns a number (decimal) representing the account balance

:::BlockQuote
2500000.00
:::

### Example request

:::BlockQuote
**POST** /selling/api/loans/purchase/balance
Content-Type: application/json
:::

:::BlockQuote
\{
&#x20; "date": "2026-08-05",
&#x20; "loanType": 1,
&#x20; "issuingBank": "CRB",
&#x20; "mplId": "ABC",
&#x20; "investorId": "XYZ Investor"
}
:::

### Use cases

- Pre-purchase validation: Ensure sufficient funds before calling the purchase API
- Insufficient funds detection: Alert when balance is too low
- Multi-purchase planning: Calculate if account can handle multiple purchase batches


[title] Wire rail
[path] Lending/Loan funding - payment rails/

## Push money using wires

You can use the Wire rail in Arix to push money into the account of a borrower, vendor or creditor.

Wire transfers go through [Fedwire](https://www.frbservices.org/financial-services/wires)®, operated by the US Federal Reserve.

:::hint{type="info"}
Cross River releases wires to the Fed, multiple times a business day during business hours. Subsequent rails of a loan, will not be sent until the wire is completed or rejected.
:::

```json
{
     "Rails": [
         {
    "RailType": "Wire",
    "Priority": 1,
    "Amount": 80,
        "WireFields": {
          "SubjectName": "King Kong",   
          "Description": "Smash",  
          "AdditionalDescription": "Me want to buy present for Anne",
          "SubjectRouting": "021000021",
          "SubjectAccount": "20020020022",              
          "SubjectAddress": {
            "Street": "350 Fifth Avenue",
            "AdditionalLine": "Empire",
            "BuildingNumber": "6",
            "City": "New York City",
            "State": "NY",
            "PostalCode": "10118",
            "Country": "US"
          }   
        }
  }
    ]
}
```

## Request parameters

| Attribute                                  | Description                                                                                                                                                                                        |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SubjectName`<br /> <br />string           | Beneficiary name. Maximum 35 characters.                                                                                                                                                           |
| `SubjectRouting`<br /> <br />string        | Beneficiary bank's routing number.<br /><font color="#eb144c">Required </font>                                                                                                                     |
| `SubjectAccount`<br /> <br />string        | Beneficiary account number.<br /><font color="#eb144c">Required </font>                                                                                                                            |
| `Description`<br /> <br />string           | *For internal CR use.*<br />Reason for the wire transfer. The data is not included with the outgoing FedWire message.<br /><font color="#eb144c">Required </font>                                  |
| `AdditionalDescription`<br /> <br />string | Information from the originator to the beneficiary.                                                                                                                                                |
| `SubjectAddress`<br /> <br />Address       | The Address of the Beneficiary.<br />When sent like the example in the above JSON, the address will look like this:<br />King Kong<br />350 Fifth Avenue 6<br />NY New York City 10118<br />Empire |


[title] Simulate inbound check return
[path] Payments/Checks/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- [Core.Transaction.Completed](docId\:cWUBvaS0BDIfokyxu5LhQ)&#x20;

## API reference

Simulates the return of a check deposited into a Cross River account that the issuing bank does not honor.&#x20;

In Cross River this is referred to as an *inbound return* item because the Federal Reserve sends the check (*in*) to Cross River to have the deposited funds returned to the check payor's account.

:::hint{type="info"}
This API can only be run in the Cross River [Sandbox](docId:_KAqyVqVNUAGQnekFKCUy).&#x20;
:::

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments/simulated-inbound-returns",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-returns",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "flw3I6YAlYAch_R3p6UGW",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-returns' \\\n--data '{\n  \"originalPaymentId\": \"3d70fc63-672e-4c3b-9e66-b48700b5db14\",\n  \"returnCode\": \"A\"\n}'",
        "customLabel": ""
      },
      {
        "id": "CYgeJvWZTSkXfwN-zcMWw",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments/simulated-inbound-returns',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData =  \"{\\r\\n  \\\"originalPaymentId\\\": \\\"3d70fc63-672e-4c3b-9e66-b48700b5db14\\\",\\r\\n  \\\"returnCode\\\": \\\"A\\\"\\r\\n}\";\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "xaYu_cGuXJWdlnlKFafTe",
        "language": "python",
        "code": "import requests\n\nurl = \"https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-returns\"\n\npayload = \"{\\r\\n  \\\"originalPaymentId\\\": \\\"3d70fc63-672e-4c3b-9e66-b48700b5db14\\\",\\r\\n  \\\"returnCode\\\": \\\"A\\\"\\r\\n}\"\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "xf_QW7WMg_SLYQn8g9GUD",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-returns\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest.body = \"{\\r\\n  \\\"originalPaymentId\\\": \\\"3d70fc63-672e-4c3b-9e66-b48700b5db14\\\",\\r\\n  \\\"returnCode\\\": \\\"A\\\"\\r\\n}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "09kqCFa4VeWcg6MviC2d2",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments/simulated-inbound-returns\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"originalPaymentId\": \"3d70fc63-672e-4c3b-9e66-b48700b5db14\",`+\"\n\"+`\n  \"returnCode\": \"A\"`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "flw3I6YAlYAch_R3p6UGW"
  },
  "results": {
    "languages": [
      {
        "id": "uv43Jrbeg_9MgyANe5ty4",
        "language": "200",
        "code": "{\n    \"id\": \"3366874c-b887-4532-aec7-b48c006d4d1f\",\n    \"accountNumber\": \"2203250853\",\n    \"referenceId\": \"C200R1684TDQ\",\n    \"paymentType\": \"Return\",\n    \"checkType\": \"Standard\",\n    \"direction\": \"Inbound\",\n    \"status\": \"Created\",\n    \"source\": \"Api\",\n    \"posting\": \"Pending\",\n    \"postingCode\": \"OK\",\n    \"fedBatchId\": \"0cfb50f6-afdd-4033-a1c2-b48c006d4d1f\",\n    \"fedBatchSequence\": 0,\n    \"coreTransactionId\": \"7153b673-bf50-4b9b-b097-b48c006d4d1f\",\n    \"originalPaymentId\": \"3d70fc63-672e-4c3b-9e66-b48700b5db14\",\n    \"customerId\": \"861261af-1251-49e8-966f-b2ff00d627bd\",\n    \"payerRoutingNumber\": \"314074269\",\n    \"payerAccountNumber\": \"28293886\",\n    \"payeeName\": \"\",\n    \"checkNumber\": \"1237\",\n    \"bofdRoutingNumber\": \"021214891\",\n    \"sequenceNumber\": \"3918624417\",\n    \"amount\": 10000,\n    \"currency\": \"usd\",\n    \"recognizedAmount\": 0,\n    \"iqaPassed\": false,\n    \"returnCode\": \"A\",\n    \"hasFrontImage\": true,\n    \"hasBackImage\": true,\n    \"isRedeposit\": false,\n    \"policy\": \"Standard\",\n    \"schedule\": [],\n    \"createdAt\": \"2026-07-19T02:37:57.2241546-04:00\",\n    \"wasReturned\": false,\n    \"purpose\": \"TESTING\",\n    \"decisionRequired\": false,\n    \"wasDecisioned\": false,\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2026-07-19T02:37:57.2241826-04:00\"\n}",
        "customLabel": ""
      },
      {
        "id": "2aJP3W72d5MsKlvJqkQLj",
        "language": "400",
        "code": "{\n    \"errors\": [\n        {\n            \"code\": 2012,\n            \"message\": \"Payment must be status completed or rejected to be returned\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "uv43Jrbeg_9MgyANe5ty4"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "originalPaymentId",
        "kind": "required",
        "type": "string",
        "description": "The original payment ID, when a check has been returned or redeposited. This is the ID returned in the response to the Deposit check endpoint.",
        "": "The original payment ID, when a check has been returned or redeposited. This is the ID returned in the response to the Deposit check endpoint."
      },
      {
        "name": "returnCode",
        "kind": "required",
        "type": "string",
        "description": "The 1-character code indicating the reason for the check return. See the checks request and response codes page for a complete list of values.",
        "": "The 1-character code indicating the reason for the check return. See the checks request and response codes page for a complete list of values."
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Check payment ID"
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account the check is drawn on",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
      "children": []
    },
    {
      "name": "checkType",
      "kind": "optional",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
      "children": []
    },
    {
      "name": "direction ",
      "kind": "optional",
      "type": "string",
      "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified",
      "children": []
    },
    {
      "name": "positivePayResult",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled",
      "children": []
    },
    {
      "name": "positivePayMatchId",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the distribution that the check was included in",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "payerRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)",
      "children": []
    },
    {
      "name": "payerAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s account number (printed on the check)",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the bank where the check was first deposited",
      "children": []
    },
    {
      "name": "sequenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "The check sequence number",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)",
      "children": []
    },
    {
      "name": "micr",
      "kind": "optional",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number",
      "children": []
    },
    {
      "name": "recognizedAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The check amount recognized from the check image via OCR",
      "children": []
    },
    {
      "name": "iqaPassed",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false",
      "children": []
    },
    {
      "name": "returnCode",
      "kind": "optional",
      "type": "string",
      "description": "The 1-character code indicating the reason for the check return. See the checks request and response codes page for a complete list of values.",
      "children": []
    },
    {
      "name": "hasFrontImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "hasBackImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "isRedeposit",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false.",
      "children": []
    },
    {
      "name": "policy ",
      "kind": "optional",
      "type": "string",
      "description": "The current availability policy type assigned to the deposit, defining the schedule for making funds available:\n- Standard\n- NewAccount\n- LargeDeposits\n- RedepositedCheck\n- RepeatedOverdrafts\n- OnUs\n- RCNoticeOfUnpaidReturn\n- RCSuspectFraud\n- RCFundingAccountOverdrafts\n- RCUnverifiedEndorsement\n- RCInconsistentInformation\n- RCErasuresOrAlterations\n- RCOutOfDateRoutingNumber\n- RCPostDatedOrStaleDate\n- RCPayingBankNotPaidIndication\n- RCLostOrDamaged\n- FiveDay\n- EmergencyConditions",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose of the deposited check",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "depositBusinessDate",
      "kind": "optional",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
      "children": []
    },
    {
      "name": "lockboxVendorId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1paymentssimulated-inbound-returns",
  "legacyHash": "PBzz4s3FwLCp5OdQctPdg"
}
```
:::


[title] Application
[path] Lending/Application decisioning/

## Submit application&#x20;

Submit a new or update an Application (Upsert),  based on the partner-specific data schema. This API was created to model your company's business model.&#x20;

For more info, visit the [Pav2 Schema UI](docId\:VwjhFeFwgjKJ9lggqLVW9)&#x20;

:::hint{type="warning"}
This API can only be used on a schema that has been approved and is LIVE. If you would like to test a schema that is still in DRAFT, or just test validation on a LIVE schema, then call the DRY-RUN API. It's the same API setup; simply append "/dryrun" to the above URL path.
:::



:::ApiMethodV2
```json
{
  "name": "Endpoint: /api/v2/applications/{partner_schema_id}",
  "method": "POST",
  "url": "https://lendingsandbox.crbcos.com/preapproval/api/v2/applications/{partner_schema_id}",
  "description": "Create or update an Application. The application_id is the identifier for this application.",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "L44lyBpEkPvvxd2s4ITGR",
        "language": "curl",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "2zw9pMCFKGqgVkmpC-ZZ1",
        "language": "nodejs",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "YTvnprg_S9ZNG3Kp9WT4k",
        "language": "python",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "q9wGW9osNCsqCp68UDZ0n",
        "language": "ruby",
        "code": "",
        "customLabel": ""
      },
      {
        "id": "UAmstoP2fDbrAiUdxN9ci",
        "language": "go",
        "code": "",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "2zw9pMCFKGqgVkmpC-ZZ1"
  },
  "results": {
    "languages": [
      {
        "id": "_qq8_titI2NzDm7PhXHyr",
        "language": "200",
        "customLabel": "",
        "code": "OK"
      },
      {
        "id": "qjrEFaPuKavXc3UC1LWA5",
        "language": "400",
        "code": "Bad Request",
        "customLabel": ""
      },
      {
        "id": "mNKWoSGW_1na1Xf4LHQmw",
        "language": "401",
        "code": "Unauthorized",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "_qq8_titI2NzDm7PhXHyr"
  },
  "request": {
    "pathParameters": [
      {
        "name": "partner_schema_id",
        "kind": "required",
        "type": "string",
        "description": "The schema id of the schema that was built specifically for the partner. All applications for this version, will use this schema id.",
        "": "The schema id of the schema that was built specifically for the partner. All applications for this version, will use this schema id."
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "application_id",
        "kind": "required",
        "type": "string",
        "description": "The identifier of the application that is created for each application in the partner's system. It should be unique for each application. If the system receives another application with this ID, then the system will consider it an update",
        "": "The identifier of the application that is created for each application in the partner's system. It should be unique for each application. If the system receives another application with this ID, then the system will consider it an update"
      },
      {
        "name": "application",
        "kind": "required",
        "type": "object",
        "description": "All of the application details, submitted in the partner schema format",
        "": "All of the application details, submitted in the partner schema format"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "entity_id",
      "kind": "optional",
      "type": "string",
      "description": ""
    },
    {
      "name": "created_at",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "application",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": []
    },
    {
      "name": "application_id",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "partner_schema_id",
      "kind": "optional",
      "type": "string",
      "description": "",
      "children": []
    },
    {
      "name": "rule_results",
      "kind": "optional",
      "type": "object",
      "description": "",
      "children": [
        {
          "name": "items",
          "kind": "optional",
          "type": "object",
          "description": "",
          "children": [
            {
              "name": "rule_id",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "version",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "rule_name",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "rule_description",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "status",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "data",
              "kind": "optional",
              "type": "string",
              "description": ""
            },
            {
              "name": "result_info",
              "kind": "optional",
              "type": "string",
              "description": ""
            }
          ]
        },
        {
          "name": "status",
          "kind": "optional",
          "type": "string",
          "description": ""
        },
        {
          "name": "rules_process_date",
          "kind": "optional",
          "type": "string",
          "description": " Default\"2025-10-26T10:53:46.520543Z\""
        }
      ]
    },
    {
      "name": "is_valid",
      "kind": "optional",
      "type": "boolean",
      "description": "",
      "children": []
    }
  ],
  "autoGeneratedAnchorSlug": "endpoint-apiv2applicationspartnerschemaid",
  "legacyHash": "tgQRBebkaP-DPVVBWYCxR"
}
```
:::


[title] Cancel deposit
[path] Payments/Checks/APIs/

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:&#x20;

- Check.Payment.Canceled

## API reference

Cancels a specific check deposit according to its payment ID. There are times when you need to cancel a check deposit. For example, to prevent a loss on an account where check kiting activity has been identified. You can only cancel a check if the payment hasn't been processed yet.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /checks/v1/payments/{id}/cancel",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/checks/v1/payments/{id}/cancel",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "flw3I6YAlYAch_R3p6UGW",
        "language": "curl",
        "code": "curl --location --request POST 'https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/cancel' \\\n--data ''",
        "customLabel": ""
      },
      {
        "id": "B_ylIOsnfmgITmGt7rWpm",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/cancel',\n  'headers': {\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "80c_2QWo-YABlFop9XzP4",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = ''\nheaders = {}\nconn.request(\"POST\", \"/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/cancel\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "b-D3go96D_QA6dP13tKqT",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/cancel\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "39DuoXhYSkXgKO_9ZXMfX",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/checks/v1/payments/18619219-ccbb-45a6-a068-b30c008f7b47/cancel\"\n  method := \"POST\"\n\n  payload := strings.NewReader(``)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "flw3I6YAlYAch_R3p6UGW"
  },
  "results": {
    "languages": [
      {
        "id": "uv43Jrbeg_9MgyANe5ty4",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"id\": \"18619219-ccbb-45a6-a068-b30c008f7b47\",\n    \"accountNumber\": \"2640511503\",\n    \"referenceId\": \"C181DC3259D7\",\n    \"paymentType\": \"Forward\",\n    \"checkType\": \"Standard\",\n    \"direction\": \"Outbound\",\n    \"status\": \"Canceled\",\n    \"source\": \"Api\",\n    \"posting\": \"Canceled\",\n    \"postingCode\": \"OK\",\n    \"coreTransactionId\": \"31746634-977b-461f-9899-b30c008f7b47\",\n    \"memoPostId\": \"51b24aa9-1cdc-4d82-9ddb-b30c008f7b47\",\n    \"originalPaymentId\": \"18619219-ccbb-45a6-a068-b30c008f7b47\",\n    \"customerId\": \"53c34cf0-4cd2-4768-937b-b30000dffdca\",\n    \"payerRoutingNumber\": \"314074269\",\n    \"payerAccountNumber\": \"28293886\",\n    \"payeeName\": \"\",\n    \"checkNumber\": \"1237\",\n    \"bofdRoutingNumber\": \"021214891\",\n    \"sequenceNumber\": \"2203615981\",\n    \"amount\": 10000,\n    \"currency\": \"usd\",\n    \"micr\": \"d314074269dc28293886c1237\",\n    \"recognizedAmount\": 100,\n    \"iqaPassed\": true,\n    \"hasFrontImage\": true,\n    \"hasBackImage\": true,\n    \"isRedeposit\": false,\n    \"policy\": \"Standard\",\n    \"schedule\": [\n        0,\n        10000\n    ],\n    \"createdAt\": \"2025-06-30T04:42:24.02-04:00\",\n    \"canceledAt\": \"2025-06-30T05:02:14.0845672-04:00\",\n    \"wasReturned\": false,\n    \"purpose\": \"SKIP_IQA\",\n    \"depositBusinessDate\": \"250701\",\n    \"productId\": \"83bed086-8182-4151-a1e3-af5b01362783\",\n    \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n    \"lastModifiedAt\": \"2025-06-30T05:02:14.1158174-04:00\"\n}"
      }
    ],
    "selectedLanguageId": "uv43Jrbeg_9MgyANe5ty4"
  },
  "request": {
    "pathParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "string",
        "description": "Unique ID of the check payment ID to be cancelled, in GUID format",
        "": "Unique ID of the check payment ID to be cancelled, in GUID format"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "id",
      "kind": "optional",
      "type": "string",
      "description": "Check payment ID. This ID is in GUID format."
    },
    {
      "name": "accountNumber",
      "kind": "optional",
      "type": "string",
      "description": "Number of the account receiving the check",
      "children": []
    },
    {
      "name": "referenceId",
      "kind": "optional",
      "type": "string",
      "description": "The reference ID of the check payment, indicating the rail type in the first element of the string. In this case it is C. This is an internal Cross River attribute.",
      "children": []
    },
    {
      "name": "paymentType",
      "kind": "optional",
      "type": "string",
      "description": "The check paymentType indicates whether the check has been presented for payment or has been returned for some reason:\n\n- Forward (a check presented for payment, to be sent to the payer bank)\n- Return (A previous forward item that the payer bank returned)",
      "children": []
    },
    {
      "name": "checkType",
      "kind": "optional",
      "type": "string",
      "description": "Type of check being dealt with. There are several check types:\n- Standard\n- OnUs\n- Treasury\n- MoneyOrder\n- FedReserveBank\n- FedHomeLoan\n- StateLocalGovt\n- Certified\n- Unknown",
      "children": []
    },
    {
      "name": "direction ",
      "kind": "optional",
      "type": "string",
      "description": "Check direction:\n- Inbound (A check drawn from a COS account, deposited at another bank. See Deposit.)\n- Outbound (A check deposited into a COS account, drawn from an account at another bank. See Withdrawal.)",
      "children": []
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the check payment. There are several possible payment statuses:\n- Created\n- Pending\n- Hold\n- Batched\n- Processing\n- Completed\n- Rejected\n- Canceled",
      "children": []
    },
    {
      "name": "source",
      "kind": "optional",
      "type": "string",
      "description": "Source of the payment request:\n- Api\n- PartnerPortal\n- OpsPortal\n- File\n- System\n- Lockbox",
      "children": []
    },
    {
      "name": "posting",
      "kind": "optional",
      "type": "string",
      "description": "Posting status:\n- Pending\n- Posted\n- Failed\n- Canceled\n- Authorized\n- Authorizing",
      "children": []
    },
    {
      "name": "rejectionReason",
      "kind": "optional",
      "type": "string",
      "description": "Rejected because:\n- ImageAnalysisFailure\n- PostingException\n- AmountMismatch\n- MaxItemAmountExceeded\n- MaxDepositAmountExceeded\n- MaxItemsPerDayExceeded\n- Duplicate\n- PayerRoutingNumberInvalid\n- PayerAccountNumberInvalid\n- CheckNumberInvalid\n- AccountNotFound\n- DepositsNotEnabled\n- InvalidAccountType\n- NotSpecified",
      "children": []
    },
    {
      "name": "positivePayResult",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, the positive pay status of the check:\n- Pending\n- Authorized\n- Unauthorized\n- Disabled",
      "children": []
    },
    {
      "name": "positivePayMatchId",
      "kind": "optional",
      "type": "string",
      "description": "If Positive Pay is enabled, ID of the positive pay record associated with the payment",
      "children": []
    },
    {
      "name": "postingCode",
      "kind": "optional",
      "type": "string",
      "description": "Code related to the Cross River system transaction tied to the payment. Any value other than “OK” indicates a rejection.",
      "children": []
    },
    {
      "name": "clientBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID for the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "clientBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the batch received from the Cross River lockbox vendor",
      "children": []
    },
    {
      "name": "fedBatchId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the distribution that the check was included in",
      "children": []
    },
    {
      "name": "fedBatchSequence",
      "kind": "optional",
      "type": "integer",
      "description": "Sequence number of the payment inside the distribution",
      "children": []
    },
    {
      "name": "coreTransactionId",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River unique ID for the transaction",
      "children": []
    },
    {
      "name": "memoPostId",
      "kind": "optional",
      "type": "string",
      "description": "Unique identifier for the memo post. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "originalPaymentId",
      "kind": "optional",
      "type": "string",
      "description": "The original payment ID, when a check has been returned or redeposited",
      "children": []
    },
    {
      "name": "customerId",
      "kind": "optional",
      "type": "string",
      "description": "The unique ID assigned to a customer when the customer record is created. You need this ID to take action for a specific customer. For example, when opening an account or adding an address to a customer record.\n\nThe ID is in GUID format.",
      "children": []
    },
    {
      "name": "payerRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s routing number (printed on the check)",
      "children": []
    },
    {
      "name": "payerAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The payer’s account number (printed on the check)",
      "children": []
    },
    {
      "name": "payeeName",
      "kind": "optional",
      "type": "string",
      "description": "Name written on the pay to the order of line of the check",
      "children": []
    },
    {
      "name": "checkNumber",
      "kind": "optional",
      "type": "string",
      "description": "The serial number that appears on the check",
      "children": []
    },
    {
      "name": "bofdRoutingNumber",
      "kind": "optional",
      "type": "string",
      "description": "The routing number of the bank where the check was first deposited",
      "children": []
    },
    {
      "name": "sequenceNumber",
      "kind": "optional",
      "type": "string",
      "description": "The check sequence number",
      "children": []
    },
    {
      "name": "amount",
      "kind": "optional",
      "type": "Integer",
      "description": "Money amount that appears on the check",
      "children": []
    },
    {
      "name": "currency",
      "kind": "optional",
      "type": "string",
      "description": "Currency of the check. For example, USD (US dollars)",
      "children": []
    },
    {
      "name": "micr",
      "kind": "optional",
      "type": "string",
      "description": "The magnetic ink character recognition line, consisting of the routing number, account number and check number",
      "children": []
    },
    {
      "name": "recognizedAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "The check amount recognized from the check image via OCR",
      "children": []
    },
    {
      "name": "iqaPassed",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check has passed the Fed’s image quality assurance standards, otherwise false",
      "children": []
    },
    {
      "name": "returnCode",
      "kind": "optional",
      "type": "string",
      "description": "The return code indicates why the check was returned. There are several return codes.",
      "children": []
    },
    {
      "name": "hasFrontImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the front of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "hasBackImage",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check image file includes the back of the check. Otherwise false.",
      "children": []
    },
    {
      "name": "isRedeposit",
      "kind": "optional",
      "type": "boolean",
      "description": "True if the check was deposited before. Otherwise false.",
      "children": []
    },
    {
      "name": "policy ",
      "kind": "optional",
      "type": "string",
      "description": "The current availability policy type assigned to the deposit, defining the schedule for making funds available:\n- Standard\n- NewAccount\n- LargeDeposits\n- RedepositedCheck\n- RepeatedOverdrafts\n- OnUs\n- RCNoticeOfUnpaidReturn\n- RCSuspectFraud\n- RCFundingAccountOverdrafts\n- RCUnverifiedEndorsement\n- RCInconsistentInformation\n- RCErasuresOrAlterations\n- RCOutOfDateRoutingNumber\n- RCPostDatedOrStaleDate\n- RCPayingBankNotPaidIndication\n- RCLostOrDamaged\n- FiveDay\n- EmergencyConditions",
      "children": []
    },
    {
      "name": "schedule",
      "kind": "optional",
      "type": "array",
      "description": "Funds availability schedule, determined by the policy, and based on whenever the check was released to the Fed in a distribution. Consists of a day-by-day breakdown based on calendar day, with each day’s availability amount displayed.",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "canceledAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was canceled. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rejectedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was rejected. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "processedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was processed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "completedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was completed. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "postedAt",
      "kind": "optional",
      "type": "string",
      "description": "Date and time the check payment was posted In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "wasReturned",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the check was returned. Otherwise false.",
      "children": []
    },
    {
      "name": "purpose",
      "kind": "optional",
      "type": "string",
      "description": "Purpose of the deposited check",
      "children": []
    },
    {
      "name": "clientIdentifier",
      "kind": "optional",
      "type": "string",
      "description": "Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.",
      "children": []
    },
    {
      "name": "depositBusinessDate",
      "kind": "optional",
      "type": "string",
      "description": "The business date of the deposit in the format of yymmdd. This date is usually Day 1 of the schedule for making the funds available. If the check is deposited after the day's deposit cut-off time, Day 1 might be a different date. In that case, the processedAt date is Day 1.",
      "children": []
    },
    {
      "name": "lockboxVendorId",
      "kind": "optional",
      "type": "string",
      "description": "ID of the lockbox service receiving the paper checks and sending them via ICL to Cross River",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the Cross River account is based. Provided by Cross River. ",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-checksv1paymentsidcancel",
  "legacyHash": "D2uujBvv5nSJXwzERDuN2"
}
```
:::


[title] 
[path] Lending/Purchasing a loan/Untitled/


[title] Loan purchase details
[path] Lending/Purchasing a loan/

## Get loan purchase details

:::BlockQuote
**GET** /selling/api/loans/\{id}/purchase\_details
:::

Retrieve sale details for a loan including statuses, dates, amounts, and fee collection information. This is the primary endpoint for viewing a loan's purchase history.

### Path parameters

| **Parameter** | **Type** | **Required** | **Description**            |
| ------------- | -------- | ------------ | -------------------------- |
| `id`          | UUID     | Yes          | The unique loan identifier |

### Response

**200 OK** - Returns purchase details including:

- Sale status and origination status
- Purchase date and original purchase date
- Loan amounts (original, adjusted)
- Accrued interest calculations
- Fee collection information and timing
- Purchase batch ID (if purchased)

### Example request

:::BlockQuote
**GET** /selling/api/loans/3fa85f64-5717-4562-b3fc-2c963f66afa6/purchase\_details
:::

### Use cases

- Reconciliation: Compare purchase amounts with your accounting systems
- Audit trail: Track when and how a loan was purchased
- Fee verification: Confirm which fees were collected and when
- Interest calculation verification: Review accrued interest details


[space] Changelog (/changelog)

[title] Changelog
[path] /

## October 2026

| Product | Change                                                                                                                                                                                                        | More information                                                                   |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| ACH     | Updated API<br />For SEC code **CTX**, there's a new field for adding multiple addenda. Use the `addendas` attribute for CTX. For other SEC codes, continue to add a single addendum in the `addenda` field.  | [Send ACH  transaction](docId\:ILwmF5qnTMLo30D2H3rCH)                              |
| Lending | **API updated**<br />"Investor" field added to the draw json.                                                                                                                                                 | [Pav2 to Arix integrations: Draws or line-of-credit](docId:8OUMz0bxLz8zmF0WojSUm)  |
| Lending | **Page updated**<br />Postage fees table added                                                                                                                                                                | [Check rail](docId\:DbSSCTmmsCExM9uObFa4n)                                         |
| Lending | **Updated page**<br />The maximum filename length is 255 characters.                                                                                                                                          | [Add loan documents](docId\:uRkNIHuM7qYLQdCEE7tU-)                                 |

## September 2026

| Product                | Change                                                                                                                                                                                                      | More information                                                                                                                                                                               |   |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| ACH                    | **Updated page**<br />Update to improve ACH return timeframe validation for reversal payments.                                                                                                              | [Returns and reversals](docId\:Jb5sWmyqlTTdp8VQvsuIp)                                                                                                                                          |   |
| International Payments | **Updated page**<br />Chile, Georgia, Kyrgyzstan, Latvia, Slovakia and Thailand added to the list of supported countries.                                                                                   | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)                                                                                                                                            |   |
| International Payments | **Updated page**<br />Croatia and Switzerland added to the list of supported countries.                                                                                                                     | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)                                                                                                                                            |   |
| Cards                  | **New API**<br />This is the single endpoint a partner backend calls to mint the short-lived, opaque embed session that the cardholder's browser then loads as a P1-hosted iframe. It carries no card data. | [Create embed session](docId\:lpw0d_xptsXYsiEloHovv)                                                                                                                                           |   |
| Onchain payments       | **Updated webhook**<br />The `Crypto.Payment.OnchainTransactionReceived` webhook is now called `Crypto.Payment.OnchainTransactionDetected`                                                                  | [Webhook events: onchain payments](docId\:l2nT0ZP-yk-ZWesb7d-pt)                                                                                                                               |   |
| International Payments | **Updated page**<br />Cyprus, Poland, Taiwan and Uzbekistan added to the list of supported countries.                                                                                                       | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)                                                                                                                                            |   |
| Checks                 | **New API**<br />Added a new API for printing and sending physical printed checks. Updated checks webhooks and return and response codes with related webhooks and values                                   | <br />[Print check payment](docId:2w_y2m0a0W0ol8Y05TGIG) <br />[Webhook events: Checks](docId\:cWUBvaS0BDIfokyxu5LhQ) <br />[Request and response codes: Checks](docId:1KTHA2s34VRJpI7vStvOi)  |   |
| International Payments | **Updated page**<br />*Unique End-to-End Transaction Reference (*&#x75;etr) has been added at the bottom of the “details” portion of the International.Payment.Sent webhook event.                          | [Webhook events: International payments](docId\:o9fUc2dKPczcl1h4yIChr)<br />                                                                                                                   |   |

## August 2026

| Product                | Change                                                                                                                                                                                                                         | More information                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Wires                  | **Updated page**<br />Added information about requirements for Originator information for wires over $3000. Related to **Bank Secrecy Act Travel Rule.**                                                                       | [Travel Rule](docId\:eqf1PFq31_W9BcmfO73z3)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| COS Reports            | **Updated pages**<br />Added sample reports to the description pages of COS daily reports                                                                                                                                      | [Accounts and payments](docId:_Y-8nEbvhN9E43-PV3YWj)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Onchain payments       | **Updated API**<br />In the Send a Payment API request, removed the `amountNative` attribute.                                                                                                                                  | [Send stablecoin payment](docId:97ecBPkLpcwxVCxKeo_la)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| International Payments | **Updated page**<br />Hong Kong added to the list of supported countries.                                                                                                                                                      | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Accounts               | **New page**<br />Added a page showing different endpoints that can be used to fund a sandbox account.                                                                                                                         | [Fund a sandbox account](docId\:Oyv9yrdvId0o_EJ0nVSLU)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Lending                | **New page**<br />Use the Selling UI to upload a list of loans using a CSV file, review the uploaded results, and complete the final action needed to move those loans from `InSeasoning` status to `ReadyForPurchase` status. | [Upload CSV and end seasoning](docId\:TI-amH-UXoGEVj20KA6_N)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Lending                | **New pages**<br />9 purchasing a loan APIs added.<br />Summarized: [Purchasing a loan](docId\:Nind2cXz8d2shN6KvBZ57)                                                                                                          | 1. [Loan information](docId\:AHb0AJpxgcw4kmr-aRBmG)&#x20;
2. [Loan purchase details](docId:6zdZZ_wBF0jUldlUAfIXv)&#x20;
3. [Calculate loan total](docId:6Ee5TCHad98vi2v8Pholk)&#x20;
4. [Loan aggregation summary](docId\:gW-q12__5Et5mupyZAHh8)&#x20;
5. [Purchase receipt](docId\:c6HyxlpTQsvA1ffOp_Msz)&#x20;
6. [Purchase account balance](docId:1KsF6yXedMp6mpzQCSXvJ)&#x20;
7. [Purchase accounts and balances](docId\:niFW54Ln-G7hSf2V9zaUV)&#x20;
8. [List available purchase accounts](docId\:Q3vC3-8hVXxHkOioJ0G3m)&#x20;
9. [Check if purchase allowed](docId\:KEI4AcLgwId0kt9dtMEta)&#x20; |
| Docs Site Reorg        | **New space**<br />Introduced a dedicated Ops & Admin space to logically organize operational and administrative resources, including Org Management, COS Explorer, COS, and Reports.                                          | [Ops and admin intro](docId\:oMTl1EcFpXJNGHlbTdUgy)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Lending                | **New page**<br />Learn how the Pav2–Arix integration streamlines loan lifecycle management, automates master loan creation, and supports compliant Line-Of-Credit (LOC) draws and funding.                                    | [Pav2 to Arix integration: Draws or line-of-credit](docId:8OUMz0bxLz8zmF0WojSUm) <br /><br />Newer flow to the now deprecated [Create a Line-of-Credit (LOC)/ Draws](docId\:hOomD8XEF20gPGaLbQbeo)                                                                                                                                                                                                                                                                                                                                                                                                     |

## July 2026

| Product                | Change                                                                                                                                                                                                                                                                                                                              | More information                                                                                                                                                                                                                                                                                                                                                                                        |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Checks                 | **New pages**<br />Newly-documented APIs for:<br />* Get a list of all check payments by defined query criteria
* List details of a specific check payment
* List extended details of a check payment, including X9 metadata
* Initiate a check return
* Simulate inbound forward (check withdrawal)
* Simulate inbound return&#xA; | <br /><br />* [List check payments](docId\:meJbS8NftALSrqnL-FQDz)&#x20;
* [Get payment details](docId:0GPRqBRHjRJNrDeukTbb9)&#x20;
* [Get extended check data](docId\:uebUHmGEw7GdicOKzMsqC)&#x20;
* [Initiate check return](docId\:H2Io-Tc5hUS-m4kz-X7Uv)&#x20;
* [Simulate inbound payment](docId\:RI6dUmr8d8aQ-mle7tdzy)&#x20;
* [Simulate inbound check return](docId\:RTk-hNjDYEP4Uma9yv1vq)&#x20; |
| International Payments | **Updated pages**<br />Added China as a supported country and to Payment Purpose Codes.                                                                                                                                                                                                                                             | - [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)&#x20;
- [Payment purpose codes](docId\:kmgW82p6BkYZJX-aojTae)&#x20;                                                                                                                                                                                                                                                                               |
| Webhooks               | **Updated page**<br />Webhooks introduction was updated to clarify that any 2xx response is an acceptable response. Also added specific information the there will be **three** retries before suspending.                                                                                                                          | [COS webhooks](docId\:BN5XtgkJogBe-CtwomCbS)                                                                                                                                                                                                                                                                                                                                                            |
| Accounts/ Subledgers   | **New page**<br />Added change subaccount/subledger title API                                                                                                                                                                                                                                                                       | [Change subledger customer](docId\:wfjZEWfzQXnkXCWxsVcm5)                                                                                                                                                                                                                                                                                                                                               |
| Cards                  | **Updated APIs**<br />In the Set card controls (request) and Get card controls (response) APIs, the attribute name of `usageLimit` found in the `velocityControls` `list` object has been updated (was previously `usage_limit`).                                                                                                   | * [Set card controls](docId\:r_Cxcl0l2UoyWkuuJpaJ1)&#x20;
* [Get card controls](docId\:AT16WGXZGoV5cqFuFNPTP)&#x20;                                                                                                                                                                                                                                                                                     |
| Cards                  | **New pages**<br />Explanation of integrated issuing's Cross River Issuer Processor solution. Including authorization and velocity controls.                                                                                                                                                                                        | - [Issuer processor](docId:16hY0ioQvenMtYewHQyW1)&#x20;
- [Cross River issuer processor](docId\:Ps0bTkW5UIf7ZZH2GK0CN)&#x20;
- [Authorization controls](docId\:pmDUxJIkft5WPyPho9t3I)&#x20;
- [Velocity controls](docId\:sLdQPjEm_I6aGZEjEGkLi)&#x20;                                                                                                                                                   |
| Cards                  | **New pages**<br />Explanation of integrated issuing's 3DS online authentication solution                                                                                                                                                                                                                                           | * [Online authentication](docId:4mMfedFxFt7M-ujpJrtXd)&#x20;
* [3DS in P1](docId\:RsoP_wzDVV8CX5rYXmpJl)&#x20;                                                                                                                                                                                                                                                                                          |
| Cards                  | **New pages**<br />Explanation of integrated issuing's digital wallet tokenization solution                                                                                                                                                                                                                                         | - [Digital wallet tokenization](docId\:lczTu67dlLumQgAYpMHA_)&#x20;
- [Merchant tokenization](docId:0GY38ZVqIKGiMwDgLUG3p)&#x20;
- [Implementation steps](docId\:u9xI2bZ9wBD4Ib9FSk74y)&#x20;                                                                                                                                                                                                           |
| Cards                  | **Updated page**<br />Added additional error codes                                                                                                                                                                                                                                                                                  | [Error codes: Cards](docId\:vofiURcg2TMteqOAwVl74)                                                                                                                                                                                                                                                                                                                                                      |
| Accounts/ subledgers   | **New page**<br />Added change subaccount/subledger title API                                                                                                                                                                                                                                                                       | [Change subledger title](docId\:vF6EET959sod8TW1orGD8)                                                                                                                                                                                                                                                                                                                                                  |
| ACH                    | **New page**<br />Added simulation API for inbound ACH origination                                                                                                                                                                                                                                                                  | [Simulate inbound ACH origination](docId\:rABd6qMClRqKEWOCp3QnQ)                                                                                                                                                                                                                                                                                                                                        |
| Cards                  | **New pages**<br />Added new pages for partner -> Cross River reports including sample files, templates, and explanation of fields.                                                                                                                                                                                                 | * [Transaction master file](docId\:PVjJRzxx5Ut2Km9q2lyt_)&#x20;
* [Daily balance file](docId\:TqfXbaVGD8UdqwlgL7bLH)&#x20;
* [Monthly dispute and chargeback reporting](docId\:qPdMDs9mO8lOySCIxKh4_)
* [Quarterly report templates](docId\:wXzBeKn3HV0pQbK0C6UQA)&#x20;                                                                                                                                |
| Customer management    | **New page**<br />Added the Update due diligence info API to the docs                                                                                                                                                                                                                                                               | [Update due diligence info](docId\:E6pfz1-BGdTt1VFDx_prh)                                                                                                                                                                                                                                                                                                                                               |
| International Payments | **Updated page**<br />Added Israel to list of supported countries                                                                                                                                                                                                                                                                   | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)                                                                                                                                                                                                                                                                                                                                                     |
| Customer management    | **New page**<br />Added the Deactivate customer API to the docs                                                                                                                                                                                                                                                                     | [Deactivate customer](docId\:TRaekwV-r6EIhodKucu0z)                                                                                                                                                                                                                                                                                                                                                     |

## June 2026

| Product                                   | Change                                                                                                                                                                                       | More information                                                                                                         |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| International Payments                    | **Updated page**<br />Added currency limit. Updated the Countries supported table. Added Costa Rica.                                                                                         | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)                                                                      |
| Wires                                     | **Updated pages and new page**<br />Updates wiress APIs pages related to new postalAddress block. <br />Also added new page describing the new change                                        | [Wires](docId\:Mm_yqgvcWNtsGDLnNX-og) <br />[Wires postal address update (November 2027)](docId\:f_ySFp9kRRgywHcekgDD9)  |
| Wires, Instant Payments and Card Payments | **Updated page**<br />Enhanced and arranged by category                                                                                                                                      | [Error codes](docId\:QHfoIlk5A4CUlj1_b_eUz)                                                                              |
| Cards                                     | **Updated page**<br />Enhanced and arranged by category                                                                                                                                      | [Error codes: Cards](docId\:vofiURcg2TMteqOAwVl74)                                                                       |
| International Payments                    | **Updated page**<br />Enhanced and arranged by category                                                                                                                                      | [Error codes: International payments](docId\:fSileGUuETELL525B5Xtu)                                                      |
| XML Batch Payments                        | **Updated page**<br />Added SFTP folder structure                                                                                                                                            | [File transfer](docId:6-zq8c8-CWNZG8BXLhILx)                                                                             |
| COS Explorer                              | **Updated page**<br />Updated first-time access information                                                                                                                                  | [COS Explorer first-time access](docId\:JwSEUG3ELF_gXLhy6T9KI)                                                           |
| COS Explorer                              | **New page**<br />Created a dedicated page to explain how partners get COS Explorer access for their organizations                                                                           | [COS Explorer organization access](docId\:pd0J5p2HwghkS-Jt9JrLy)                                                         |
| Lending                                   | **Updated page**<br />* Where to start: Reach out to your RM for your sandbox API Client Credentials and the Lending Postman collection to get you started.
* Added Web application details. | [Lending](docId:439iYERDzE2H4Am7G6jv6)                                                                                   |
| Lending                                   | **Updated page**<br />All hook registration functionality available via the API can also be performed through the Hooks UI.                                                                  | [Hook notifications](docId\:jXGfRbtNHOshrZJYHYKTo)                                                                       |
| Lending                                   | **Updated page**<br />Added section: Integrations in PAV2                                                                                                                                    | [Application decisioning](docId\:VwjhFeFwgjKJ9lggqLVW9)                                                                  |
| Cards                                     | **New APIs**<br />Card controls. Velocity and authorization controls.                                                                                                                        | [Set card controls](docId\:r_Cxcl0l2UoyWkuuJpaJ1)                                                                        |
| Cards                                     | **New APIs/webhooks**<br />Digital wallet tokenization                                                                                                                                       | [Retrieve wallet tokens](docId\:XkoW0XYhCILYqvZGbtuRS)                                                                   |
| Cards                                     | **New APIs/webhooks**<br />3DS Authentication. 3D Secure is a protocol that verifies cardholder identity online.                                                                             | [3DS authentication details](docId\:Su5NVsUfruWN28v1O7gM8)                                                               |
| Cards                                     | **Updated page**<br />Added webhook samples for wallet tokenization and 3DS authentication                                                                                                   | [Webhook events: Cards](docId\:paDKAtuyIo5w0YsAexxwl)                                                                    |
| Cards                                     | **Updated page**<br />Added **servicing tapes** (data) for servicing events monitoring and reconciliation                                                                                    | [Reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC)                                                                 |
| Cards                                     | **New page**<br />This page specifies daily CSV reporting requirements for active credit‑card accounts, detailing strict formats, SFTP delivery, and required data fields.                   | [Servicing data](docId:2imBAozOUuzQ-cUrNX7th)                                                                            |

## May 2026

| Product                | Change                                                                                                                                                                                                                       | More information                                                                                                                                                                                                            | Effective Date |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
| International Payments | **Updated page**<br />Added Singapore to list of supported countries                                                                                                                                                         | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)                                                                                                                                                                         |                |
| Onchain payments       | **New API**<br />Add PII for a sender or originator to an incoming payment                                                                                                                                                   | [Send PII](docId\:A9MDJ5F6zIXzYX4IskuCv)                                                                                                                                                                                    |                |
| Onchain payments       | **New API**<br />Delete or disable a blockchain receiving address associated with an account                                                                                                                                 | [Delete wallet](docId\:F7rpN0GO__a-8fWjDSbDA)                                                                                                                                                                               |                |
| Onchain payments       | **New pages**<br />Added a new section describing onchain payment concepts                                                                                                                                                   | [Onchain payments](docId\:Mc7jArWvyeJs8xoLfGqH5)                                                                                                                                                                            |                |
| Org Management         | **Updated pages**<br />Org management portal pages improved and updated to reflect UI improvements. Content made clearer and more comprehensive.                                                                             | [Org management portal](docId\:C90JfVUQ2MwiRVdsAwxgr)                                                                                                                                                                       |                |
| MCP server             | **New page**<br />Added page describing how to connect to the MCP server and listing the tools available                                                                                                                     | [Connect to Cross River docs via MCP](docId\:UqbUGIJ4pdNHXSiPO-tdL)                                                                                                                                                         |                |
| Lending                | **Updated page**<br />Updated page and created sub-pages for each API endpoint.                                                                                                                                              | [Purchasing a loan](docId\:Nind2cXz8d2shN6KvBZ57)                                                                                                                                                                           |                |
| Reports                | **New page**<br />Added a page describing daily account balance report content                                                                                                                                               | [Daily account balance](docId\:iP_VT9ImwcK4gQryLpGC1)                                                                                                                                                                       | 14/May/2026    |
| Cards                  | **New page**<br />Application decisioning. Schema-based APIs to validate, submit, and monitor credit card applications, ensuring compliance, data integrity, and fair banking oversight.                                     | [Credit card application decisioning API](docId\:u22kF_UIlTq9l1Y5PxE69)                                                                                                                                                     | 12/May/2026    |
| Accounts               | **Updated pages**<br />Improved the main accounts pages                                                                                                                                                                      | [Accounts](docId\:ZQyAf4oeI1rEzpBOI78MJ) <br />[Deposit accounts (DDA)](docId\:CH79CVvK5RKYdFluIvp-D) <br />[For benefit of (FBO) accounts](docId\:TbRKOj7ConnpBGQUkLe_t) <br />[Subledgers](docId\:OdZF-4AInebu2YUz5GRCs)  | 12/May/2026    |
| Accounts               | **New page**<br />Describes reconciliation and balance sync                                                                                                                                                                  | [Reconciliation and balance sync](docId:5VfBbxzrv2M50laMRO_kJ)                                                                                                                                                              | 12/May/2026    |
| International Payments | **New feature**<br />Remittance payments are consumer-initiated money transfers that must follow Regulation E while Cross River's partners meet core disclosure and refund rules.                                            | [Remittance payments](docId:2OOlsywMLwZlqaGtssPcd)                                                                                                                                                                          |                |
| Lending                | **Updated page**<br />Check delivery section updated                                                                                                                                                                         | [Check rail](docId\:DbSSCTmmsCExM9uObFa4n)                                                                                                                                                                                  | 6/May/2026     |
| International Payments | **New API**<br />Cancel Payment (Remittance)                                                                                                                                                                                 | [Cancel payment](docId\:SwyRh0F0e40q1DOFZmuNr)                                                                                                                                                                              |                |
| Card Payments          | **New page**<br />Added Card Payments testing card numbers page                                                                                                                                                              | [Sample cards for testing: COS Card Payments](docId\:OJKIN15EzzTokXdlwB3Dn)                                                                                                                                                 | 5/May/2026     |
| Card Issuing           | **New page**<br />Added pages explaining our three partner-managed models showing how Cross River handles funds and ledgers, detailing BIN sponsorship, FBO subledgers, pooled accounts, and required daily reconciliations. | [Balance and ledger models](docId\:Z5zkbYq_txaz_1bVhxbYG)                                                                                                                                                                   | 5/May/2026     |
| Card Issuing           | **New page**<br />Explains why programs using FBO accounts must keep clear customer‑level balance records to ensure each user receives full FDIC pass‑through insurance coverage.                                            | [Balance visibility](docId:3nPVK0JfOSqRv4rbIaasf)                                                                                                                                                                           | 5/May/2026     |
| Card Issuing           | **New page**<br />Partner-managed card programs using the FBO pooled account model can send and receive ACH payments through Cross River using unique prefixes to route transactions accurately.                             | [Partner-managed ACH processing](docId\:N4v5rMveHGzR3IxHCEKOW)                                                                                                                                                              | 5/May/2026     |
| Card Issuing           | **Updated page**<br />Added section about Balance visibility and FDIC insurance detailing the three partner-managed variations.                                                                                              | [Partner-managed](docId\:n-sV1g5OiDbnWae2xWnSj)                                                                                                                                                                             | 5/May/2026     |
| Card Issuing           | **Updated page**<br />Added information about FDIC compliance                                                                                                                                                                | [Reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC)                                                                                                                                                                    | 5/May/2026     |

## April 2026

| Product                | Change                                                                                                                                                               | More information                                                | Effective Date |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | -------------- |
| International Payments | **Updated page**<br />Added local currency for Mexico                                                                                                                | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)             | 29 Apr 2026    |
| Lending                | **Updated page**<br />Added fields to servicing tape                                                                                                                 | [Servicing reports](docId\:TwtdRN1QeSyjeTBmoegpI)               | 29 Apr 2026    |
| Lending                | **Updated page**<br />`RailResultType` enums updated                                                                                                                 | [Enums](docId\:hpq_QWOAKV9JprqwkFR1I)                           | 28 Apr 2026    |
| Lending                | **Updated page**<br />Minor update to rail cutoff times                                                                                                              | [Loan funding - payment rails](docId\:GMP-Bavby6sAgCbQlLsJM)    |                |
| Card Payments          | **Updated page**<br />Added new error codes for COS Card Payments                                                                                                    | [Error codes: COS Card payments](docId\:i9WcOaYoSIZfkqnhPqQGM)  | 23 Apr 2026    |
| Card Payments          | **Updated page**<br />Updated webhooks for COS Card Payments to include additional webhooks and updated payload                                                      | [Webhook events list](docId\:qF6bTOPBPNcpLPp9SAtWI)             | 21 Apr 2026    |
| Card Payments          | **Updated page**<br />Changed description of dynamic descriptors                                                                                                     | [Statement descriptor](docId:0I53j9w0YkGVwFwzabgZ5)             | 20 Apr 2026    |
| Card Payments          | **New pages**<br />New release of ALL COS Card Payments API and Concept pages                                                                                        | [Card payments](docId\:g7Y21FC4eEZ5GQY_za6Ly)                   | 19 Apr 2026    |
| Accounts               | **Updated page**<br />Clarified how to use the API endpoint to restrict all subaccounts under a master account, or restrict the master together will all subaccounts | [Restrict account](docId\:EIckX6Djcuo3cryRIH8mp)                | 21 Apr 2026    |
| Accounts               | **New page**<br />COS Explorer tutorial: Find an account                                                                                                             | [Find an account](docId\:T26_viv_qnTdGFCjD5sNl)                 | 26 Apr 2026    |
| Accounts               | **New page**<br />COS Explorer tutorial: Manage account restrictions                                                                                                 | [Manage account restrictions](docId:94wGUSdNfHOWubEqu12ka)      | 26 Apr 2026    |
| Accounts               | **New page**<br />COS Explorer tutorial: Open a subledger (subaccount)                                                                                               | [Open a subledger](docId\:jD1oERC7t4gig2wsfE-Vt)                | 26 Apr 2026    |
| Accounts               | **New page**<br />COS Explorer tutorial: Close a subledger (subaccount)                                                                                              | [Close a subledger](docId\:sqil5j4R3JkvHGzpvwA69)               | 26 Apr 2026    |
| Accounts               | **New page**<br />COS Explorer tutorial: Find a subledger (subaccount)                                                                                               | [Find a subledger](docId\:q1g1E7Sq9z6lUmO-fPDGc)                | 26 Apr 2026    |

## March 2026

| Product          | Change                                                                                                                                                                        | More information                                                                                                                                    | Effective Date |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
| Accounts         | **API update**<br />Added `classification` attribute to the Create subledger (subaccount) endpoint to differentiate between a *personal* or *business* subaccount beneficiary | [Create subledger](docId\:K40F8Ih5SnvtbAbcEJ1MR)                                                                                                    | 25 Mar 2026    |
| Instant Payments | **Feature added**<br />Added new API to retrieve payment reference information for Original payment IDs                                                                       | The original payment id is sometimes needed when looking at inbound payment return requests<br />[Payment reference](docId\:GKGAFhjPQMTXsfHG6xbqs)  | 20 Mar 2026    |
| Wires            | **Feature update**<br />Wires webhook events                                                                                                                                  | Added new wires webhook events related to rejects<br />[Webhook events: Wires](docId\:OA3cg-apKn_510VPq2yYe)                                        | 15 Mar 2026    |
| Instant Payments | **Updated page**<br />Added additional error codes                                                                                                                            | Updated table to include missing error codes <br />[Error codes: Instant payments - old](docId:4iziPCkNc4MYp0sd_F2h_)                               | 5 Mar 2026     |

## January 2026

| Product         | Change                                                                                                                          | More information                                                                                                               | Effective Date |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------- |
| Org Management  | **Feature update**<br />User list download via the UI                                                                           | An Admin can now download all organization users and their roles. <br />[Org management portal](docId\:C90JfVUQ2MwiRVdsAwxgr)  | 25/1/2026      |
| Lending UI      | **Feature update**<br />Users can choose which columns they want to see for applications submitted via the Preapproval v2 API.  | [Application decisioning](docId\:VwjhFeFwgjKJ9lggqLVW9)                                                                        | 15/1/2026      |

## December 2025&#x20;

| Product  | Change                                                                                                      | More information                                        | Effective Date |
| -------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | -------------- |
| Crypto   | **New product**<br />Onchain payments APIs                                                                  | [Onchain payments APIs](docId\:lnZ2VwmXVahA4yP7mayED)   |                |
| Lending  | **Feature update**<br />Applications submitted through Preapproval v2, can be seen on the Application UI    | [Application decisioning](docId\:VwjhFeFwgjKJ9lggqLVW9) |                |
| Lending  | **Infrastructure update**<br />All Sandbox environment infrastructure was upgraded to a new cloud platform. |                                                         |                |

## November 2025&#x20;

| Product                | Change                                                                                                                                    | More information                                                              | Effective Date |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------- |
| Lending                | **Feature update**<br />Testing Pav2 APIs can now be done directly via the Lending UI. Internal release.                                  | [Application](docId\:PTX0F232EfVCVLbsYzT6I)                                   | 19 Nov 2025    |
| International Payments | **API update**<br />Request payment quote API updated to add Originator Information                                                       | [Request payment quote API](docId\:OnbkGeBIHVb4ihvB1haKL)                     | 17 Nov 2025    |
| International Payments | **COS Explorer update**<br />Originate Payment updated to add Originator Information                                                      | [International Payments COS Explorer tutorial](docId\:bQKIAw_2bTUCTMdS463Nv)  | 17 Nov 2025    |
| International Payments | **Feature update**<br />Added Malaysia and the Philippines.                                                                               | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)                           |                |
| Lending                | **API update**<br />Submitting supporting documents for an application now uses the partner's *ApplicationId&#x20;*&#x61;s the identifier | [Attachments by appID](docId\:IGXXXxmWhG0xi-eKGsVRd)                          | 1 Nov 2025     |

## October 2025

| Product  | Change                                                                                            | More information                                         |
| -------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| Lending  | **New feature**<br />Application decisioning Pav2. Including 2 new APIs.                          | [Application decisioning](docId\:VwjhFeFwgjKJ9lggqLVW9)  |
| ACH      | **COS Explorer update**<br />Manage ACH reversals through the Cross River COS Explorer interface. | [Manage reversal flow](docId:_XTTEhiJZ6z3XFfueIMQ_)      |

## September 2025

| Product                | Change                                                                                                                                                                                                                                                                                                                                                               | More information                                       |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| Cards                  | **New feature**<br />Cross River’s advanced authorization capability allows partners using the Integrated Issuing model to actively participate in the real-time decision-making process for card transactions.                                                                                                                                                      | [Advanced authorization](docId:88_iQwsRFzVb0Wp1UlwYP)  |
| International Payments | **Page update**<br />Increased the number of supported countries and currencies.                                                                                                                                                                                                                                                                                     | [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj)    |
| International Payments | **New feature**<br />**P**ayment **P**urpose **C**odes (PPCs), also known as payment reason codes, are standardized identifiers that provide the reason for a crossborder or international payment. They are considered mandatory or required fields by the Central Banking authority in certain jurisdictions, i.e. India, Malaysia, and the United Arab Emirates.  | [Payment purpose codes](docId\:kmgW82p6BkYZJX-aojTae)  |




[title] Subscribe to the changelog
[path] /

## Find out about changes to products, features and documentation

Subscribe to our [changelog](docId\:QjC-icO4mWrBdzEuSlSra) to get updates about features and products, and to know about changes to the doc portal.

## How to subscribe

To subscribe:

:::::WorkflowBlock
:::WorkflowBlockItem
While on the Changelog tab (you'll see *changelog&#x20;*&#x69;n the URL), click the bell icon on the upper left.

::Image[]{src="https://api.archbee.com/api/optimize/4hvUOg5mU1sCngl0n0Has/eCN7EuU4QG1jgM98HxcNh_image.png" size="28" width="276" height="75" position="center" alt="Highlight of the subscribe icon" showCaption="false"}
:::

:::WorkflowBlockItem
Enter your email address when prompted and click **Subscribe**.

You receive a confirmation email sent from Archbee with the subject **Confirm your subscription**. If you don't receive the email, check your spam folder.
:::

::::WorkflowBlockItem
Click **Subscribe** in the email. A browser page opens confirming you have subscribed.

:::hint{type="info"}
Your firewall might block this page from opening. You will still be subscribed.
:::

You also receive another email confirming that you have subscribed.

The docs site home pages opens in your browser.
::::

:::WorkflowBlockItem
Any time we publish an update to the changelog an email notifies you that the changelog page has changed.
:::
:::::

## How to unsubscribe

Every update email includes an unsubscribe link. Click that link to unsubscribe from the updates. You get a confirmation email that you are unsubscribed. A browser window opens to the docs site home page.

:::hint{type="info"}
If you subscribe again after unsubscribing, you will not get a confirmation email.
:::




[space] Concepts (/concepts)

[title] Account activity records
[path] Accounts/

## Activity records explained

When a deposit, withdrawal, or transfer is made, we update the account to show this activity. We call this an activity record. This ensures that the account balance is accurate and reflects all the money going in and out of the account. It's similar to updating a digital ledger to keep track of all your financial transactions.

A newly created activity record has a *Pending* status until the posting day closes during the nightly settlement process. At this point, COS reorders the account activity records for statement purposes as described in your deposit account agreement. COS assigns a posting sequence number to each account activity record and changes the status to *Posted*. Once this is done, the activity is considered final and is not updated further.

:::hint{type="info"}
The order of account activity presented on a given date is not necessarily the order that each activity happened.
:::

For each deposit account Cross River provides a monthly account [statement](docId\:IoApblax1oljNrucKK6o_). The statement contains all posted activity inclusive of the period start and end dates. The statement lists details according to the posting sequence of the account activity records. The document is retrievable as a PDF file.

## Post types

In banking, a "post" refers to the process of recording a transaction in your account. There are several types of posts.&#x20;

## Memo posts

Think of a *memo post* as a temporary transaction. It tells the system something about the account—usually that some money will be coming in or going out.

A memo post is applied only to one side of a transaction and may or may not affect the account available balance. A memo post might stay on an account for many days. When it expires it is removed and, as applicable, the information in it becomes a posted transaction activity record.

For example, when you pay for gas with a debit card, COS puts a memo post on the account until the transaction completes. When the charge is captured and finalized, the memo post is removed and converted to a posted transaction activity record, showing the actual amount spent at the gas station.

An example of an "informational" memo post is with an inbound ACH credit. When Cross River receives an instruction from the Federal Reserve about an inbound ACH credit, we put a memo post on the account right away even though the effective date of the actual transfer might not be until the following day. The job of this memo post is to tell the account holder that there is going to be some change to their account in the future.

You can [register](docId\:BN5XtgkJogBe-CtwomCbS) for account management [webhook events](docId\:qF6bTOPBPNcpLPp9SAtWI), including memo post webhook events. A webhook event tells you the activity status.

## Posted transactions

### Availability schedules

Certain credit transactions post with an *availability schedule*. These schedules give instructions about the amount of the full transaction that will be available on each day after posting.

These days until all the funds are available are also called the *clearing window*. The schedule appears on both the transaction and account activity records. It appears as a array (list) of dollar amounts, where each element of the array represents a posting day.

For example, the following illustrates how an ACH pull transaction may look with a 2-day clearing schedule (lines 15-18):

:::CodeblockTabs
Availability Schedule Example

```json
{
      "id": "e25ff690-be93-469f-9915-aa9a011defbf",
      "transactionId": "c93978d3-3451-40a0-be01-aa9a011dec98",
      "traceNumber": "T192111321017433A",
      "status": "Pending",
      "transactionType": "Credit",
      "activityType": "External",
      "source": "Transaction",
      "masterAccountNumber": "2058112745",
      "subAccountNumber": "2058112745",
      "transactionCode": "Outgoing ACH",
      "description": "TEST ACH PULL PPD ID: 123 REF: A211P3HVG7KI",
      "rail": "Ach",
      "railId": "payment/eec1b00b-fcaf-4e91-a894-aa9a011d9366",
      "schedule": [
        0,
        0,
        2700
      ],
      "isClearing": true,
      "amount": 2700,
      "productId": "3c6d97f2-2666-44d9-b25d-a9a800d6c59d",
      "partnerId": "d6b4c661-b38a-46a3-8963-a9a40131eacf",
      "postingDate": "2019-07-30T00:00:00-04:00",
      "executedAt": "2019-07-30T13:21:01-04:00",
      "createdAt": "2019-07-30T13:21:03-04:00",
      "lastModifiedAt": "2019-07-30T13:21:03.7929693-04:00"
    }
```
:::

The ACH payment is for $27.00 total. The schedule attribute shows that $0 will be available immediately on day 1 and that also nothing will be available on day 2. On day 3 the full $27.00 is available. Items such as checks generally make partial funds available each day while the item clears.

:::hint{type="info"}
Money amounts in API calls and responses are written without a decimal point between the dollars and the cents.
:::

In addition to the `schedule` attribute, for convenience the response includes an `isClearing` flag to show whether the item is still within the clearing window. In the above example, the flag switches to false on 8/1.

The schedule is enforced via one or more account holds relating to the item in clearing, correlated by the `railId` field. For example, the schedule above would be held as follows:

:::CodeblockTabs
Hold Example

```json
{
      "id": "866d8cde-e7cf-4bf3-897b-aa9a014d9b08",
      "masterAccountNumber": "2058112745",
      "subAccountNumber": "2058112745",
      "status": "Active",
      "reason": "Availability",
      "rail": "Ach",
      "railId": "payment/eec1b00b-fcaf-4e91-a894-aa9a011d9366",
      "amount": 2700,
      "createdAt": "2019-07-30T16:14:37-04:00",
      "expiresAt": "2019-07-31T00:00:00-04:00",
      "partnerId": "d6b4c661-b38a-46a3-8963-a9a40131eacf",
      "lastModifiedAt": "2019-07-30T16:14:37.287877-04:00"
    } 
```
:::

Note that the hold expires at the close of business on 7/31, thus making the $27.00 available starting on the 8/1 posting day.

Interest accrual is not affected by availability schedules. Accrual will continue to start on the date of the credit regardless of any holds which are in place.

### Restrictions

Restrictions provide a mechanism to block certain transaction activity on an account

For example, if you wanted to block all ACH activity on an account, you could add a restriction which only applies to the ACH rail. If you then wanted to entirely freeze an account, where all activity was blocked, you could add a restriction which applies to all rails.

### Partner vs. internal restrictions

As the name suggests, a Partner restriction is one that is applied by a Partner user. It is visible to all users and can be modified by both Partner and Internal users. By contrast an Internal restriction is one that is visible to Partner users, but cannot be modified or removed by them. For example, an internal Operations Team member may apply an Internal account freeze if they do not want it to be modified by the Partner.

This division between Partner restrictions and Internal restrictions also applies to holds.

:::hint{type="warning"}
**IMPORTANT**
Should I display restrictions to my customers?
Restrictions and holds may be sensitive in nature. Your Integration Manager (IM) will assist you with your questions on how best to handle customer support issues arising from restrictions or holds.
:::

### Restriction policies

Restriction policies are managed at the product level and define the types of transactions allowed for the program as a whole. Account level restrictions can be applied in addition to these. These policies are not managed by the partner and are configured by the Integration Team for your product.

### Creating restrictions

Account restrictions work by defining a set of criteria in which the restriction applies to. For example, if we wanted to block all ACH debits over $100 to an account we would create a restriction like this:

```curl
POST https://sandbox.crbcos.com/core/v1/dda/accounts/200012345/restrictions
{
  "subAccountNumber": null,
  "appliesTo": "All",
  "rail": "Ach",
  "transactionType": "Debit",
  "otherAccountType": null,
  "amountThreshold": 10000,
  "transactionCode": null,
  "reason": "Restricted",
  "notes": "Optional notes here"
}
```

*Null* values indicate a wildcard that any value would match.

## Posting exceptions

A posting exception is like an account activity record, except it only happens when one side of a transaction fails authorization. For example, if the debit side of a transaction fails due to insufficient funds in the account, COS creates a posting exception record on that account. COS does not put a posting exception on the credit side of the transaction because it did not fail in this example.

[title] Advanced authorization flow
[path] Cards/Issuing models/Integrated issuing/Advanced authorization/

![](https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-phknBN-yD5jQo-PfAsVfm-20250910-095855.png)

1. The cardholder taps, swipes, or enters card info at the merchant’s terminal or app  using a Cross River card from a partner who has been certified for Advanced Authorization.&#x20;
2. The merchant sends transaction data to its acquirer processor.
3. The acquirer processor formats the request and requests authorization from Cross River via the appropriate card network (Visa, Mastercard).
4. The card network forwards the transaction request to the issuer processor associated with the BIN on the card for real time authorization.
5. The transaction request is received by Cross River, who in turn reaches out to the partner to request an authorization.&#x20;
   - For Direct mode this occurs with every transaction.
   - For Assist mode, this occurs only when the account in Cross River doesn't have sufficient funds to complete the transaction.
6. Authorizing transactions.
   - For Direct mode the partner holds the balance and will authorize each transaction based on the cardholder’s balance and potentially other business rules (account standing, fraud, withdrawal limits, etc.).&#x20;
   - For Assist mode, if there are enough funds, Cross River will authorize the transaction without having to verify with the partner. If there are not enough funds Cross River requires approval from the partner.
7. The card issuer or issuing processor responds with an approval or decline decision to the card network.&#x20;
8. The card network routes the decision back to the acquirer processor.&#x20;
9. The merchant receives the response — and the transaction is approved or declined at the point of sale.&#x20;
10. At the end of each day, the partner [reconciles](docId:01dCqwxq22LUp2Dl3HP1_) their daily operation and updates account records in Cross River. This includes:
    - Receiving a reconciliation file from Cross River to ensure all transactions were received and processed correctly.
    - Updating any accounts at Cross River to ensure the balances are kept up to date with the partner's ledger.


[title] Synchronous vs Asynchronous
[path] Payments/Card payments/Migration from P2P to CCP/

## Synchronous - the old method

The previous P2P APIs provided synchronous payments. This means that the API call remained open until the payment was complete. This created problems for various reasons because calls, especially for international payments (which requires OFAC checking) can be significantly delayed waiting for a response.

## Asynchronous - the new method

The new  system is fully asynchronous. This allows for Holds/Pending statuses to be put into place and then handled later, meaning payment initiations are decoupled from status tracking and settlements. This is designed for **event-driven architecture**, relying on webhooks or message queues to track payment lifecycle.&#x20;

The **advantages&#x20;**&#x61;re:

1. **Operations are not blocked:** Asynchronous APIs allows the platform to execute other tasks while waiting for the response.
2. **Better performance:** Asynchronous APIs allow microservices and prevent bottlenecks, allowing the platform to simultaneously make calls to the networks, query databases, etc.
3. **Improves Scalability:** Threads aren’t tied up waiting for responses, allowing more concurrent requests.
4. **Higher Fault Tolerance & Resilience:** Asynchronous APIs have better retry mechanisms if timeouts do occur.

:::hint{type="info"}
For international payments, there is still an option to do synchronous payments, but we highly recommend moving towards the asynchronous model.&#x20;
:::


[title] Cross River issuer processor
[path] Cards/Issuing models/Integrated issuing/Issuer processor/

## Card issuing and payment processing

The Cross River [integrated issuing](docId\:fziT-TwcIdJLJprbecwed) model has an in-house cloud-native card issuing and payment processing engine named P1. It is a fast, scalable platform. P1 focuses on speed, growth, and innovation.

This system supports multiple primary and secondary networks. It supports both Mastercard and Visa. Cross River has full control over card issuance and processing.

## Key features

You can set spending controls at the individual card level. Generate regulatory issuer reports with built-in compliance tools. Scale your processing through cloud-based infrastructure.

## Security and compliance

P1 uses strong customer authentication (SCA) to prevent fraud. It meets  and 3.2 Level 1 standards.

## Network connections

P1 keeps always-on connections to authorization networks.&#x20;

- Visa:  peering via AWS PrivateLink (Visa Cloud Connect)
- Mastercard: VPC connectivity via AWS Direct Connect (Mastercard Cloud Edge)

Both provide secure, private links, eliminating the need for traditional physical network equipment and on-premises servers.

## 3DS support

P1 supports the 3DS protocol for secure online payments. Cardholders authenticate purchases in real time. Visa brands this as Visa Secure. Mastercard brands it as Mastercard Identity Check.

## Real-time service authorization (RTSA)

Customize transaction decisions in real time through an HTTP interface (JSON). RTSA replaces the ISO 8583 messaging protocol. Requests go to your pre-configured authorization URL.  For more information see [advanced authorization](docId:88_iQwsRFzVb0Wp1UlwYP).

## PIN verification

P1 connects to both Mastercard and Visa. It supports single-band and dual-band configurations for each network.&#x20;

P1 connects through secure VPC connection to Mastercard and Visa networks for PIN verification during authorization.  A return code confirms whether the PIN is valid or invalid.

## Address verification service (AVS)

Reduces fraud on mail and telephone orders with AVS. Verify the customer's billing address on its own or during authorization.

## ATM and POS balance inquiries

P1 processes balance inquiries from card association networks. The response shows the total available credit. ATM and POS balance inquiry requires Mastercard certification.

## Card validation code (CVV/CVC) verification

P1 handles 1/1 and CVV2/CVC2 requests from Visa and Mastercard. Customize service code logic during validation to fit your needs.

## Clearing processing

P1 supports Base II and the Global Clearing Management System (GCMS) across all clearing cycles and manages commercial program data at both Level 2 (L2) and Level 3 (L3). L2 data provides summary information about a transaction as a whole, such as total tax amount or fuel type for a fleet transaction, while L3 data provides detailed, receipt-like line-item information, including item descriptions, quantities, and product codes. Merchants typically supply L2 and L3 data for commercial BIN transactions to qualify for lower interchange rates, giving issuers enhanced reconciliation capabilities and greater visibility into spending.

Typically, merchants only include L2/L3 data for transactions on commercial BINs. They provide this data in an attempt to qualify for cheaper interchange rates. In return for less interchange, issuers are provided enhanced reconciliation and visibility into program spend.

[title] Time window and funds availability
[path] Payments/Wires/

## Times window

Wires can be processed from Monday to Friday, from 9:00 PM of the previous business day through 7:00 PM of the current business day.

**Notes:**

- If a wire is placed on hold, it must be manually cleared by our internal team, who are available from 9:00 AM to 5:00 PM ET, Monday through Friday.
- Wire requests received after 3:00 PM ET may be processed on the next business day. While we work to release as many requests as possible on the same day, we cannot guarantee that all wires will be reviewed and cleared after 5:00 PM ET.

**Holidays:**

- Wire transfers are not processed on Federal Reserve holidays.
- For holidays that fall on a Saturday, Federal Reserve banks and branches are open the preceding Friday.
- For holidays that fall on a Sunday, Federal Reserve banks and branches are closed the following Monday.

## Funds availability

Funds from outbound and inbound transfers are made available once they are posted to the recipient account, provided the transfer has not been placed on hold.

- Outgoing and incoming wires placed on hold before 3:00 PM ET are generally processed on the same business day, with same-day funds availability.
- Wire payments submitted or received after 3:00 PM ET that are placed on hold may be processed on the next business day, with next-day funds availability.
- Wire transactions are considered final once the funds are received.




[title] For benefit of (FBO) accounts
[path] Accounts/

## FBO accounts at Cross River

If you plan on offering payment solutions for your end users, or if you are operating under a Partner-managed issuing BIN Sponsorship model, Cross River may recommend an FBO or "For benefit of" account for you. These accounts can be for one customer or for many. You use this account to make and receive payments on behalf of your own customers. One way that this is implemented is using [Subledgers](docId\:OdZF-4AInebu2YUz5GRCs).&#x20;

## FBO types at Cross River

### Standard FBO account

The standard setup for an FBO includes subledgers (sometimes referred to as virtual accounts) used for reconciliation and tracking of individual customer funds. Funds remain in this account or its subledgers only long enough for a payment window to be completed or closed. However, this construct can also be used to support more complex use cases, such as to simulate a bank account experience. In this case, partners can assign individual subledgers to their customers for the purpose of sending, receiving, or holding funds in those subledgers. Debit and prepaid cards can also be issued against the subledgers either in the Partner-managed or Integrated Issuing model.

### Pooled FBO account

A *pooled FBO account&#x20;*&#x62;ehaves in many ways like a DDA. For example, funds can be deposited and withdrawn with no limitations. A pooled FBO account does not have subledgers. It usually holds funds that support a Partner-managed prepaid card or debit card program. The funds in a pooled account are FDIC-insured down to the user.

A pooled FBO account is limited to using only ACH to send or receive payments.

If you use a pooled FBO account, and Cross River is providing FDIC pass-through insurance, you must report to Cross River *every day* about the balance and reconciliation.

## Example of how an FBO is used

The structure of an FBO account to support your needs depends on your specific operational model. As you are onboarding, Cross River will work with you to determine the best structure to support you.

Here’s an example of how an FBO account is often structured to support a fintech use case:

1. **The fintech opens a single bank account** with Cross River. The account is titled something like: *Fintech Inc. FBO \[Its Users].* This shows the bank that the account funds don’t belong to the fintech itself: they belong to its users.
2. **The fintech keeps a ledger**—a digital record—that tracks how much of that money belongs to each user. The bank does not manage this breakdown; it only sees the total balance in the FBO account.
3. **The account is not FDIC-insured per individual user by default**, but it *can* be set up to do so if the fintech and the bank meet certain pass-through requirements, like proper user identification and record-keeping. If done correctly, each user’s funds in the FBO are protected just like a personal checking account would be.

The structure of an FBO account to support your needs depends on your specific use case. As you are onboarding, Cross River will work with you to determine the best structure to support you.

## Cross River recommendation for FBO and subledger use

If you send payments on behalf of your customers, you should use subledgers for those customers under an FBO account, if:

- The FBO account is on your tax ID. You as a partner are a direct customer of CRB (and not your individual customers).
- Because each subledger has its own unique account number, it makes account and payment reconciliation easier (or even possible--without unique account numbers it’s impossible to keep track of who sent or received a payment)
- All transactions on the master account need to be reported together on a single monthly statement&#x20;

Advantages
----------

FBOs are widely used in fintech because they:

- Avoid the need to individually open and manage thousands or millions of individual bank accounts
- Still comply with financial regulations, like storing customer funds separately from company funds




[title] Deposit accounts (DDA)
[path] Accounts/

:::CtaButton{label="Accounts APIs" docId="6E-0rluXn21VojfGN5wEE" openInNewTab="true"}

:::

If you plan on offering banking services to your customers, such as savings plans, deposit and withdrawal functionality, or interest on savings, we might recommend that you have DDAs for each of your customers. A DDA is the primary, real deposit/ledger account whose balance represents the total of all transactions on the account or on any related subledgers/subaccounts, and through which all associated transactions ultimately settle. Our DDA products include:

- Checking or Savings: Accounts designed for customers to deposit money into it and take money out of it as needed, with no limit. In the US, deposit accounts are usually described as either checking accounts or savings accounts.  Checking accounts are transactional accounts and are used to deposit money, make transfers, write checks, withdraw cash, pay bills, and take care of other day-to-day banking transactions. In most cases, they earn little to no interest. Savings accounts are usually used to set aside money for the future. Customers usually deposit money they do not expect to need or use on a regular basis into this type of savings account. Savings accounts are usually interest-bearing.
  Cross River savings accounts can also be checking accounts.
- DDAs are usually eligible for FDIC insurance for up to $250,000 in deposits.
- [Time deposit (CD) accounts](docId\:waCTNKIkSMBfK0rigKvrC): A type of account customers can use to set aside money for the future. Unlike a savings account, customers cannot withdraw funds from a CD whenever they like. Typically, money must remain in a CD for a certain period of time, If it is withdrawn early, based on the terms and conditions of the product, a penalty may apply and some or all earned interest may be forfeit\[DA8] \[AL9] . The required period of time could be three months to five years or more\[DA10] \[AL11] , depending on the terms and conditions of the specific product. In addition, there may be a required minimum deposit. CDs typically offer a higher rate of interest than regular savings accounts.

Cross River recommends that you use deposit accounts if any of the following are true:

- Your customers will have their own Cross River Bank accounts, with their tax IDs on the accounts
- Your customers need monthly bank statements for their account or accounts
- Your customers need annual tax documents about account earnings

Learn about [checks](docId:8MxnUqiHsMPE6vHWQex5u) in our payment products section.

[title] Integrated issuing
[path] Cards/Issuing models/

:::CtaButton{label="Cards APIs" docId="ctPgBWhSjawyngKlCY73a" openInNewTab="true"}

:::

## Cross River integrated issuing solution

Integrated Issuing lets partners use Cross River's infrastructure to launch and manage card programs \[1]. This model is perfect for partners who want a convenient way to offer cards without dealing with complex operations.&#x20;

- Cross River acts as the issuing bank, keeps the records, and authorizes transactions. Cross River handles core banking, compliance, and network operations.
- Partners focus on customer experience and developing their applications&#x20;

:::hint{type="info"}
\[1] This is subject to due diligence review and at in the sole discretion of Cross River
:::

## What we offer

As with the Partner-managed framework, Cross River acts as the issuing bank, providing BIN sponsorship, banking oversight, guidance to maintain best practices, compliance support, and network settlement. Cross River also provides regulatory expertise and operational support. In addition, Cross River provides the technology infrastructure for card processing, relieving the Partner of the need to find and integrate with a separate third party for this purpose.

## Cross River's role

### Banking and program oversight

As the issuing bank, Cross River provides:

- **BIN sponsorship:&#x20;**&#x41;s a  , Cross River sponsors the use of its Bank Identification Numbers (BINs), enabling partners to issue cards without needing direct membership with Visa or Mastercard. Cross River has been assigned BINs that can be used to sponsor our partners’ card programs that they extend to their customers.
- **Oversight:&#x20;**&#x43;ross River ensures that card programs comply with Visa, Mastercard, and federal/state banking regulations through initial program evaluation and ongoing oversight.
- **Network settlement and reporting:&#x20;**&#x43;ross River monitors program activity through review of daily files, transaction monitoring [reports](docId\:i4b_iqAVcQFp9m1611twC), and exception handling processes to maintain operational integrity. Cross River manages network settlement with Visa and Mastercard.

### Technical infrastructure

Cross River powers the technical foundation for card programs:

- [Issuer processor](docId:16hY0ioQvenMtYewHQyW1)**:&#x20;**&#x43;ross River has an issuing processing solution called P1 that relays authorization requests and transaction messages between card networks and Cross River Operating System (COS).&#x20;
- **Ledger management:&#x20;**&#x43;OS maintains ledgers for customer accounts, card balances, and transaction history.&#x20;
- **Transaction authorization:&#x20;**&#x43;ross River offer two authorization models:
  - [Traditional authorization](docId\:f0t-EXsw0j8b3imdECq1C): COS applies real-time decisioning based on card status, available balance, program rules, and fraud controls.
  - [Advanced authorization](docId:88_iQwsRFzVb0Wp1UlwYP): Cross River’s advanced authorization capability allows partners using the Integrated Issuing model to actively participate in the real-time decision-making process for card transactions. This opens up opportunities to reduce declines, improve user experience, and support alternative funding models while Cross River retains regulatory and network compliance oversight.
- [Online authentication](docId:4mMfedFxFt7M-ujpJrtXd): The 3D Secure (3DS) authentication system provides an additional security layer for card-not-present transactions through Strong Customer Authentication (). The system supports both rules-based decisioning and multiple authentication methods to verify cardholder identity during online purchases.
- ****[Digital wallet tokenization](docId\:lczTu67dlLumQgAYpMHA_): We offer digital wallets which securely stores payment information and credentials for electronic transactions. You don't need physical cards. We also offer [Merchant tokenization](docId:0GY38ZVqIKGiMwDgLUG3p) which differs from digital wallet tokenization in one key way. Digital wallet tokenization starts when a user adds a card to a wallet. Merchant tokenization is driven by the merchant when a user saves their card on file for future use.&#x20;
- **Card network connectivity:&#x20;**&#x43;ross River connects with Visa and Mastercard via supported processors to ensure authorized transactions are processed and settled correctly.
- **Card lifecycle management:** COS support full card lifecycle management, enabling partners to control operations via COS APIs and web-based UI COS Explorer. [Webhook](docId\:BN5XtgkJogBe-CtwomCbS) integrations enable real-time event-driven updates for card lifecycle events, transaction activity, and status changes.&#x20;

## Partner's role

In the Integrated Issuing model, the partner’s role is streamlined. Cross River manages the majority of operational, compliance, and technical infrastructure, including ledgering, transaction authorization, processor integration, and network settlement. This allows the partner to focus primarily on building the customer experience.&#x20;

- **Customer experience and application development:&#x20;**&#x54;he partner is responsible for designing and maintaining the end-user interface, customer onboarding flows, and any custom logic for delivering card features within their application. Partners integrate with COS APIs to create and manage card accounts, monitor status, and trigger lifecycle actions (e.g., replace, suspend) \[1].

## Find out more

- [Partner-managed](docId\:n-sV1g5OiDbnWae2xWnSj)&#x20;
- [Card transactions](docId\:K9zdYpQIPm_qhHCU3uRQ6)&#x20;
- [Advanced authorization](docId:88_iQwsRFzVb0Wp1UlwYP)&#x20;
- [Card lifecycle](docId:8vYtQnPfAOXDgK-GgRCq6)&#x20;
- [Reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC)&#x20;

See our tutorials to learn how to:

- [Create a card](docId\:RZZRD7am62-KTyv9G1n9-)&#x20;
- [Activate a card](docId\:WZYv6QGm31LDTeAGrt2fc)&#x20;
- [Simulate card management](docId\:cY6Inx4O9CeJ74FOVu7o6)&#x20;


[title] Quarterly report templates
[path] Cards/Reporting and compliance/

## Visa Quarterly Operating Certificate (QOC):

- Reports Visa-branded card activity associated with the BINs Cross River provided to the partner.
- Submit to Cross River no later than the 5th business day following the end of each calendar quarter.
- File format: Visa-provided Excel template.

:::hint{type="info"}
Quarterly files must be securely uploaded to Cross River’s [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25)  server, encrypted using PGP.
:::

## Naming convention

When you supply the files to Cross River, we suggest a naming convention of CompanyName\_NetworkReportType\_ProgramType\_QOC\_YearQuarter - (ACME\_QOC\_Debit\_2026Q4).

## Sample templates

### Debit

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/W_-hH-4nPj2WFPl1mMkHf_debit-template.csv" label="Debit Template.csv"}

### Prepaid

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/5bbof5_Lhteb3v0zqsIQ4_prepaid-template.csv" label="Prepaid Template.csv"}

### Credit

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/cvSMjhaBrpSAgFnCnSNW5_credit-template.xlsx" label="Credit Template.xlsx"}

### Fixed Acquirer Network Fee (FANF)

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/jGlirJVMsi60LINgC-_C8_fanf-template.xlsx" label="FANF Template.xlsx"}

### Acquiring

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/GWOUaN5wCzUndz7m8i4YK_acquiring-template.xlsx" label="Acquiring Template.xlsx"}

### Additional products services

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/m40mLaY97_Xe2evFiE3Nd_addtl-product-and-services-template.xlsx" label="Addtl Product and Services Template.xlsx"}

### Marketplace

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/8LD-WEz9NNTn4bZUVxcYt_marketplace-template.xlsx" label="Marketplace Template.xlsx"}

## Mastercard Quarterly Mastercard Report (QMR):

:::Paragraph{listStyleType="disc" indent="2"}
Reports Mastercard, Maestro, and Cirrus-branded card activity associated with the BINs Cross River provided to the partner.
:::

:::Paragraph{listStyleType="disc" listStart="2" indent="2"}
Must be submitted to Cross River no later than the second Friday after each quarter ends.
:::

:::Paragraph{listStyleType="disc" listStart="3" indent="2"}
File format: Mastercard-provided Excel template.
:::

:::hint{type="info"}
Quarterly files must be securely uploaded to Cross River’s [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25)  server, encrypted using PGP.
:::

## Naming convention

When you supply the files to Cross River, we suggest a naming convention of CompanyName\_NetworkReportType\_ProgramType\_YearQuarter (ACME\_QMR\_Debit\_CD\_2026Q4).

## Sample templates

### Acquiring Credit CB

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/qRBvDseU30mVAx4NCe-Zk_acquiring-credit-cb-template.xlsx" label="Acquiring Credit_CB Template.xlsx"}

### Acquiring debit CD

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/WYyh3H_oWcXuFbpwTPk65_acquiring-debit-cd-template.xlsx" label="Acquiring Debit_CD Template.xlsx"}

### QMR Issuing

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/J5TZAX5kqMlWfeScWHwX1_qmr-issuing-template.xlsx" label="QMR Issuing Template.xlsx"}

### Merchant acceptance CA

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/4Y1eSZg-Bl9n-XL6YXMZ2_merchant-acceptance-ca-template.xlsx" label="Merchant Acceptance_CA Template.xlsx"}

### Merchant monthly location supplemental

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/D4z96JKruHnSrmBUHcKxs_merchant-monthly-location-supplemental-template.xlsx" label="Merchant Monthly Location Supplemental Template.xlsx"}


[title] Card payments FAQ
[path] Payments/Card payments/

## Card payments – Frequently Asked Questions

This section answers common questions about our push-to-card capabilities—eligible card networks, prefunding requirements, limits, use cases, and global reach. If you’re exploring how to deliver fast payouts to debit or prepaid cards, you’ll find the key answers right here.

**What types of card payments does Cross River support?**

- Send funds directly to a debit card.&#x20;
- Collect funds from a debit card for approved purposes.&#x20;

**Can I process international transactions?**
Yes, Cross River supports multi-country and multi-currency payments with real-time FX rates and compliance checks.

**How does Cross River protect payments?**
Through fraud detection, tokenization, AVS, ANI, CVV2 validation, and PCI-compliant iFrames for secure online transactions.

**What are business types?**
Business types define the purpose of a payment (e.g., payroll, P2P, wallet top-up) and ensure proper processing with card networks.

:::hint{type="info"}
For more information, please visit our [Card payments](docId\:y_2uVmzGOChmtEPEO4IPy) pages.
:::


[title] Payments
[path] /

Cross River delivers a range of payment solutions to make transactions smoother. Our services cover both local and international payments, using different payment methods.&#x20;

# Instant payments

Cross River provides a domestic Instant Payments product. Individuals and businesses can transfer funds quickly between US-based financial institutions. These transactions clear and settle within seconds. Cross River works with two instant payment networks: RTP® via The Clearing House (TCH) and FedNow®. We provide network interoperability between the two, ensuring your instant payment is sent in the best way at all times.

[Learn more](docId\:U_TnYPQ3-5yepG7jKD5FK)&#x20;

# Card payments

P2C is the Cross River pay-to-card and pay-from-card solution for disbursement and collection of funds. P2C allows merchants to transfer money to and from debit card accounts. These transfers happen through participating card networks.&#x20;

[Learn more](docId\:y_2uVmzGOChmtEPEO4IPy)&#x20;

# International payments (cross border)

Cross River facilitates cross-border money movement using SWIFT and local in-country rails. Correspondent banking networks play a crucial role in these bank-to-bank settlements.

[Learn more](docId:3EvRgfMqC_15mbLV_j3cp)&#x20;

# ACH (Automated Clearing House)

ACH transactions involve moving money electronically between US bank accounts. People use ACH for direct deposits, bill payments, and recurring transactions. Using ACH through Cross River ensures compliance with ACH rules and regulations.

[Learn more](docId:3tt7a4nY2fyVMzEEmFwUt)&#x20;

# Wires

Wire transfers are expedited electronic fund transfers between banks. They’re commonly used for high-value transactions, international payments, and urgent transfers.

[Learn more](docId\:hFNmQa22W2BNqAJijpAVT)&#x20;

# XML batch payments

Cross River's  payment channel provides you with a way to send all your instructions in one single file format (XML).

[Learn more](docId\:oCMjfq2lwEVZ9k2jZ7Kmi)&#x20;

# Checks

Check writing and check deposits are features of the Cross River Account product. Together, these features allow customers to move money using a physical instrument known as a check.

[Learn more](docId:8MxnUqiHsMPE6vHWQex5u)&#x20;

[title] Card transactions
[path] Cards/Issuing models/Integrated issuing/

## Intro to card transactions

A card transaction occurs when a cardholder uses their card to access stored value, deposited funds, or a line of credit. The general characteristics of transactions, such as the entities in volved in them and the main steps in the transaction lifecycle are described below.

## Key players

- **Cardholder**: The person using the card. They present a card (physical or virtual), and their issuing bank checks if they have sufficient funds or credit to complete the transaction.
- **Merchant**: The entity accepting the card payment for goods or services. They work with an acquiring bank for participation in the card network ecosystem.&#x20;
- **Card Networks**: Companies like Visa and Mastercard that route transaction data between banks. They set rules and security standards for card transactions.
- **Issuing Bank**: The bank that issued the card to the cardholder. It verifies funds or credit and processes the transaction and ensures card program compliance to relevant network and regulatory rules.
- **Acquiring Bank**: The merchant's bank that receives the transaction funds and deposits them into the merchant's account.

## Main steps

A card transaction involves several steps to ensure the payment is processed securely and efficiently. Understanding these steps helps both businesses and customers ensure smooth and secure transactions. Here are the main steps:

1. **Authorization**: The cardholder initiates the transaction by presenting their card or providing their card credentials. The merchant sends these details to the payment processor, which checks with the issuing bank to verify if the cardholder has sufficient funds or credit available. If approved, a hold is placed on the funds or on the credit line.
2. **Clearing**: The transaction details are sent to the card network, which routes them to the issuing bank. The issuing bank confirms the transaction and prepares to transfer the funds.
3. **Settlement**: The issuing bank transfers the funds to the acquiring bank via the card network (the merchant's bank). The acquiring bank then deposits the funds into the merchant's account.
4. **Record keeping:&#x20;**&#x42;oth the cardholder and the merchant receive records of the transaction. The cardholder sees the charge on their statement, and the merchant updates their sales records.&#x20;


[title] Online authentication
[path] Cards/Issuing models/Integrated issuing/

# What is 3DS and why it matters

3D Secure () is a protocol that allows a cardholder to authenticate an online transaction. Cross River supports the latest EVM 3DS standard.&#x20;

- The merchant (3DS requestor) collects around 150+ data points from the cardholder's transaction environment.&#x20;
- The merchant sends this data through the card network to Cross River's Access Control Server (ACS) for risk scoring.&#x20;
- The ACS evaluates the risk of each transaction based on the rules configured.&#x20;

**Key flows**

- **Frictionless flow**: The issuer's ACS approves authentication silently using risk signals (device, location, behavior). This flow requires no cardholder action.
  This is the preferred path as it maximizes approval rates.
- **Challenge flow**: Issuer requests explicit cardholder verification (OTP, Push App notification) when the risk score is elevated.&#x20;
  This adds friction but protects high-risk transactions.

## Liability shift

When a 3DS-authenticated transaction is later disputed as fraudulent, liability moves from the merchant to the card issuer. This applies specifically to fraud-related chargebacks such as Visa (Other Fraud – Card-Absent) and Mastercard (No cardholder authorization). The liability shift does not exclude non-fraud related disputes such as service disputes. You need to check your agreement with Cross River to determine ultimate responsibility for fraud on a given card program.

## When 3DS is required

### Regional requirements

**Europe & UK (mandatory):**

Under PSD2 (Payment Services Directive 2) regulations, Strong Customer Authentication (SCA) is required for most online transactions in the European Economic Area and UK. 3DS 2.0 is the primary method for satisfying SCA requirements.&#x20;

**Exemptions exist for:**

- Low-value transactions (under €30)
- Trusted beneficiaries
- Low-risk transactions (based on issuer risk analysis)
- Corporate payments

**United States (optional but recommended):&#x20;**&#x33;DS is not legally mandated in the US. However, many merchants choose to implement it for:

- Liability shift protection: Successfully authenticated transactions shift fraud liability from merchant to issuer
- Reduced chargebacks: Lower fraud-related chargeback rates
- International consistency: Simplified global payment processing
- Large transactions: Added security for high-value purchases

**Other regions:**

- Canada: Optional, increasingly adopted
- Australia: Optional, recommended for e-commerce
- Asia-Pacific: Requirements vary by country (India mandates for certain transaction types)

### Why Card Programs Need 3DS

**Merchant-Driven Requirement:** When a merchant implementing 3DS processes a transaction with a partner's card, the card program must support the authentication request. Without an ACS (Access Control Server), cards would be declined at 3DS-enabled merchants or marked as "not enrolled," which:

- Creates poor cardholder experience
- May result in transaction declines
- Limits where cardholders can shop (especially internationally)
- Increases merchant concerns about fraud risk

### Scenarios Without 3DS

**Scenario 1: Card not enrolled (no ACS at all)**

When the merchant's 3DS Server queries the Directory Server (DS) and the partner's card program has no ACS registered for a BIN range, the DS responds indicating the card is not enrolled in 3DS. At this point:

- The merchant must decide whether to proceed without authentication
- No liability shift occurs (merchant retains fraud risk)
- Some merchants may decline the transaction entirely
- International merchants (especially in Europe) may reject the payment

**Scenario 2: ACS temporarily unavailable&#x20;**

If the card program has an ACS but it's experiencing downtime:

- The DS responds with a technical error
- The merchant typically cannot proceed with authentication
- May result in transaction decline or fallback to non-authenticated flow
- Creates negative cardholder experience

**Best Practice:**

Card issuers should implement 3DS even when not legally required to:

- Support cardholders shopping at 3DS-enabled merchants
- Enable global e-commerce acceptance
- Provide fraud protection tools§
- Offer liability shift benefits to reduce disputes

## 3DS as a fraud prevention tool

3DS verifies that the person initiating the transaction is a legitimate cardholder. The data the issuer's ACS receives for both approved and declined transactions helps identify risk. Use this data to spot patterns and refine risk models. Apply these insights to make stronger authorization decisions over time.

## Key considerations

- **While not mandatory in the US, 3DS is recommended for issuers:** Without a 3DS solution, liability for fraudulent transactions moves entirely to the issuer.
- **Better authorization decisions:** Use 3DS outcomes and data to improve your authorization logic.
- **Merchants start the process:** In the US, merchants 3DS adoption is optional. In the EU and other regions, nearly all online transactions use 3DS to satisfy the Strong Customer Authentication requirement under PSD2. Without it, issuers and merchants risk non-compliance.&#x20;

[title] Concepts intro
[path] /

:::Iframe{iframeHeight="0" code="<div class=&#x22;section-banner banner-concepts&#x22;>&#xA;  <div class=&#x22;banner-text&#x22;>&#xA;    <!--<div class=&#x22;chip chip-info&#x22;>Tutorials</div>-->&#xA;    <h1 class=&#x22;banner-title h1&#x22;>Explore our concepts</h1>&#xA;    <div class=&#x22;banner-desc&#x22;>Cross River’s platform capabilities can power and scale your fintech applications.</div>&#xA;  </div>&#xA;</div>"}

:::

Learn how Cross River’s platform capabilities can support and grow your fintech applications. Our concept overviews break down each product, showing you the main features and how to integrate them. Whether you're starting from scratch or improving what you have, these resources help you understand how everything works and make the most of our solutions.

***

:::Iframe{iframeHeight="0" code="<div class=&#x22;v-spacing-fix&#x22;>&#xA;<div class=&#x22;v-spacing-fix&#x22;>&#xA;<h2 class=&#x22;h2&#x22;>Accounts</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Robust set of API calls to create, update, and manage your accounts.</p></div>&#xA;<div class=&#x22;products-grid mt-3&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/accounts/DDAs&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-_o_Bkd0oifF7sIa9NS_d9-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>DDAs</h4><p>Deposit account</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/accounts/cds&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-_o_Bkd0oifF7sIa9NS_d9-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>CDs</h4><p>Lock funds for higher interest</p></div>&#xA;        </div></a>&#xA;      <a href=&#x22;https://docs.crossriver.com/concepts/accounts/fbo-accounts&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-_o_Bkd0oifF7sIa9NS_d9-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>FBO</h4><p>For benefit of accounts</p></div>&#xA;       </div></a>&#xA;          <a href=&#x22;https://docs.crossriver.com/concepts/accounts/subledgers&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-_o_Bkd0oifF7sIa9NS_d9-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Subledgers</h4><p>Cross River's subledger solution</p></div>&#xA;        </div></a>&#xA;  </div>&#xA;<div class=&#x22;v-spacing-fix mt-10&#x22;>&#xA;<h2 class=&#x22;h2&#x22;>Cards</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Scale debit, credit, and pre-paid card programs with processor-agnostic issuing platforms.</p></div>&#xA;<div class=&#x22;products-grid mt-3&#x22;>&#xA;	    <a href=&#x22;https://docs.crossriver.com/concepts/cards/partner-managed&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-ORbK9wU8K9DKA7wq2drGX-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Partner-managed</h4><p>Using your preferred processor</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/cards/integrated-issuing&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-EZAsiSdGbMZtqcVe5uLRv-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Integrated issuing</h4><p>Full-service integrated issuing</p></div>&#xA;       </div></a>&#xA;  </div>&#xA;  <div class=&#x22;v-spacing-fix mt-10&#x22;>&#xA;  <h2 class=&#x22;h2&#x22;>Payments</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Streamlined payment solutions encompassing both local and international transfers.</p></div>&#xA;<div class=&#x22;products-grid mt-3&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/payments/instant-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-U3JmJpNNkm4VJ_aaIqQ-J-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>Instant payments</h4><p>Clear and settle immediately</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/payments/cos-card-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-c8_QVGYXLytjtOzbe4xyr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Card payments</h4><p>Transfer funds to/from cards</p></div>&#xA;        </div></a>    &#xA;	<a href=&#x22;https://docs.crossriver.com/concepts/payments/international-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-RMUoFxLXnzLTHXVyTmPd0-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>International payments</h4><p>Send funds across the globe</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/payments/ach&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-NDnV6bvaWMtbhT250MdPS-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>ACH</h4><p>Originate standard and same day</p></div>&#xA;        </div></a>&#xA;	<a href=&#x22;https://docs.crossriver.com/concepts/payments/wires&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>Wires</h4><p>Transfer through Fedwire</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/payments/xml-batch-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-HJ169KlwtCBIRdJHxdyWT-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>XML batch payments</h4><p>ISO20022 payment instructions</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/payments/checks&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-3egU8lopXLO3m_AbrRM70-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Checks</h4><p>Check writing and deposits</p></div>&#xA;        </div></a>&#xA;  </div>&#xA;  <div class=&#x22;v-spacing-fix mt-10&#x22;>&#xA;<h2 class=&#x22;h2&#x22;>Onchain payments</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Stablecoin-based transactions on supported blockchains.</p></div>&#xA;<div class=&#x22;products-grid mt-3&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/onchain-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-c8_QVGYXLytjtOzbe4xyr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Onchain payments</h4><p>Stabelcoin payments solution</p></div>&#xA;        </div></a>&#xA;  </div>&#xA;<div class=&#x22;v-spacing-fix mt-10&#x22;>&#xA;<h2 class=&#x22;h2&#x22;>Lending</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;>Robust set of API calls to create, update, and manage your loans.</p></div>&#xA;<div class=&#x22;products-grid mt-3&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/concepts/lending&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-GUc6J1MuNPGnu55FiD8R0-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Marketplace lending</h4><p>Loan solutions</p></div>&#xA;        </div></a>&#xA;  </div>&#xA;  </div><!-- <p>paste iframe code here</p> -->"}

:::




[title] Cards FAQ
[path] Cards/

## Cards – Frequently Asked Questions

This section covers key questions about how our card-issuing platform works, so you can better understand card types, issuing models, program services and partner responsibilities.

## Product overview

**What card product types does Cross River support?**
We support three primary card types: debit cards (linked to an underlying bank account), credit cards (secured or unsecured), and prepaid cards (loaded in advance).&#x20;

**What issuing models are offered?**
We offer two flexible models:

- [Partner-managed](docId\:n-sV1g5OiDbnWae2xWnSj)**:** Cross River partners maintain control over ledgering, authorization, and customer experience by working with a processor of their choosing.(insert footnote referenced above) Cross River provides BIN sponsorship, regulatory oversight, and manages settlement with card networks
- [Integrated issuing](docId\:fziT-TwcIdJLJprbecwed)**:** Cross River provides BIN sponsorship, acts as the ledger, manages transaction authorization, integrates directly with supported processors, and provides network and regulatory compliance oversight&#x20;

## Program setup and operations

**How do I choose between debit, credit or prepaid offerings?**
Choose based on your program goals: debit for account-based spend, credit for revolving lines, prepaid for loaded-fund spend. The program configuration (productID) determines supported features and rails.&#x20;

**What does partner-managed issuing require us to do?**
Under [partner-managed model](docId\:fzCCeYGDTrT57ioeHxSCZ) you will handle card creation, activation, suspension, ledgering and transaction authorisation through your processor. We provide bank sponsorship and compliance oversight.&#x20;

## Transaction and authorization capabilities

**What is “advanced authorization”?**
[Advanced authorization](docId:88_iQwsRFzVb0Wp1UlwYP) allows partners under our integrated issuing model to participate in real-time decisioning for card transactions. Two modes: direct (partner decides all transactions) or assist (we decide, unless there's not enough balance in the account and we must consult with the partner).&#x20;

**How does Cross River handle reporting and compliance?**
As the issuing bank and BIN sponsor, Cross River provides access to the card network and regulatory oversight for card programs. Cross River maintains full regulatory and network compliance responsibility for all Partner-managed Issuing programs. Partners must submit regular reporting to Cross River to maintain compliance with regulatory requirements, credit risk management obligations, and card network operating rules. For additional information, refer to [reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC).



:::hint{type="info"}
For more information, please visit our [cards](docId\:xJUtOOcHA5khMt9uzyS18) pages.
:::


[title] Business types
[path] Payments/Card payments/

## Cross River business types

Business types define the purpose of transactions according to specific categories. The business type is passed on to the card network when making a transaction. Business types are sometimes called *use cases*.

In our APIs, the `businessType` identifier is a two-character code Cross River uses to identify the purpose of a push or pull payment. We ultimately pass these to the Visa Direct and MasterCard Send payment rails as BAI codes (Visa) or TTIs (MasterCard).

## Purpose of business type code

Business type codes determine the following:&#x20;

- The data that a push or pull payment message must contain.
  Some business types require additional information in the request. For example a value of **PP** (person to person) for the `businessType` means the `correspondingEntity` object is required.
- The limits and economic conditions relevant to a particular transaction.

Based on the business type, a payment sender or receiver can make an authorization decision.

## Source of the business type code

The possible business type for a transaction is determined together with Cross River and the card networks during onboarding and is based on the use case of the money movement.

If you are approved for only a single business type, Cross River configures this for you, so the information properly passes to the card networks. This is your *Default Business Type*. In this case it is not necessary to pass the `businessType` in the API request.

If you are approved for multiple business types, you can pass a specific`businessType` code in the API request, to be passed along to the card networks. Otherwise, Cross River will pass the Default Business Type for you.&#x20;

### Business type codes

| Code | Application type                | Payment category   |
| ---- | ------------------------------- | ------------------ |
| AA   | Account to account              | Money transfer     |
| BB   | Business to business            | Funds disbursement |
| CD   | Cash deposit                    | Money transfer     |
| CP   | Card bill payment               | Money transfer     |
| FD   | Funds disbursement (general)    | Funds disbursement |
| FT   | Funds transfer                  | Money transfer     |
| PP   | Person to person                | Money transfer     |
| WT   | Wallet transfer                 | Money transfer     |
| BI   | Money transfer (bank-initiated) | Money transfer     |
| CI   | Cash In                         | TDB                |
| CO   | Cash Out                        | TDB                |
| GD   | Government disbursement         | TDB                |
| GP   | Gambling payout                 | TDB                |
| LO   | Loyalty credits and rebates     | TDB                |
| MD   | Merchant disbursement           | TDB                |
| MP   | Face-to-face merchant payment   | TDB                |
| OG   | Online gambling payout          | TDB                |
| PD   | Payroll Disbursement            | TDB                |
| TU   | Prepaid Card Load or Top-Up     | Money transfer     |

In the framework of *money transfers*:&#x20;

- AA applies to transactions where sender and recipient are the same person.
- PP is when sender and recipient are *not* the same.

## Corresponding entity

In card payments, corresponding entities are either the receiver of a pull transaction (AFT) or the sender of a push transaction (OCT). This information must be included in the request for money transfers (business type code: AA, PP, BI, CD, FT, WT, CP, TU) in the `correspondingEntity` object of the request.

[title] Accounts
[path] /

:::CtaButton{label="Accounts APIs" docId="6E-0rluXn21VojfGN5wEE" openInNewTab="true"}

:::

## Cross River accounts solution

Bank accounts are a way for individuals and businesses to store, receive and use funds in various ways. Depending on your operational model and the funds flows you need, Cross River delivers a number of different options and configurations for bank accounts.

## What we offer

Cross River offers these account products.&#x20;

Deposit accounts (DDA):

- [Savings](docId\:CH79CVvK5RKYdFluIvp-D)&#x20;
- [Time deposit (CD) accounts](docId\:waCTNKIkSMBfK0rigKvrC)&#x20;

:::Paragraph{indent="1"}
Our [deposit sweeps](docId:1uMkKV1qCvkWJffuLLyNK) feature on DDAs gives customers access to a higher FDIC insurance limit on their DDAs.
:::

:::Paragraph{indent="1"}
Every DDA is associated with a customer record in our banking core. These customers go through normal KYC/KYB and other compliance checks.
:::

[For benefit of (FBO) accounts](docId\:TbRKOj7ConnpBGQUkLe_t):&#x20;

- Standard FBO with subledgers
- Pooled FBO

As part of the process of becoming a Cross River partner, we work with you to identify what your needs are, and what kinds of accounts will best suit those needs.

## Tutorials

See our tutorials to learn how to:

- [Open an account via API](docId\:ZtQ-EXuMODfi9pu3z10FW)
- [Withdraw CD funds early via API](docId\:WDAQ0M_t5wowKtdPXnnk_)&#x20;
- [Open a subledger via API](docId\:xqDRbzh8lzHUQIWZEdHoZ) &#x20;
- [Perform accounts actions in COS Explorer](docId\:Gd5Lr5-2G8C1enoOEk5P3)&#x20;


[title] Open an account
[path] Accounts/

## About bank accounts

For any kind of money movement, you need a bank account. Your  helps you define exactly what types of accounts meet your needs. Each different type of account you define is also called a  in Cross River COS. You use the product type as a basis to create individual accounts. Think of it as a template or configuration package.

### Requirements to open an account &#x20;

- Product ID: Cross River-provided unique product ID that references the defined product type of the new account. See [Account types and rules](docId\:cmmg7siJ20SmZszKDBb4Q) for more details on how you get a product ID before opening an account.
- Customer ID: The system returns this unique ID when you [create a customer record](docId\:Td-K_prObOXEklwM6CnnG).
- Address and phone number: The account holder must have at least one address and phone number in their customer record.
- OFAC status: the account holder OFAC status must be *Clear*.
- Customer classification: The customer and product classifications must match. For example, only business customers can be added to a business product.

See our tutorial for [opening a deposit account](docId\:ZtQ-EXuMODfi9pu3z10FW) and our [API](docId\:abKDIZOKHXLSswzwrbBJ1).

## Account types and rules

Cross River provides many different account types and solutions through a suite of products. You work with us to identify the types of accounts relevant to your business needs. For type of account type you want we create a template called a . The product type has a unique *product ID* you use to create specific accounts, so it has to be supplied before you can open an account.

## Use cases by account type

When integrating with our platform, choosing the right account type is critical to support your product functionality, compliance, and reporting needs. These short descriptions can help you determine which account structure is best suited for your use case.

### Checking and savings accounts

**Description**
Standard accounts that can hold customer funds, support money movement (ACH, wires, card transactions), and accrue interest (savings).

**Best for**

- Holding end-user deposits (e.g., neobank checking/savings)
- Supporting card spend and ACH transfers
- Offering interest-bearing savings accounts
- General-purpose custodial accounts

**Example use cases**

- Neobanks offering everyday consumer banking
- Direct deposit accounts
- Spend-and-save features

Learn more about [Deposit accounts (DDA)](docId\:CH79CVvK5RKYdFluIvp-D).&#x20;

### Subledgers

**Description**
Virtual accounts that sit under a parent account. These do not exist at the bank ledger level but are used for internal balance tracking and reconciliation.

**Best for**

- Tracking user balances without opening a full bank account for each user
- Managing program-level treasury with per-user accounting
- Supporting use cases that don't require individual account numbers

**Example use cases**

- Wallets or prepaid balances
- Marketplace payouts or platform credit tracking
- Funds segregation within a pooled account

Learn more about [subledgers](docId\:OdZF-4AInebu2YUz5GRCs).

### Certificates of Deposit (CDs)

**Description**
Time-bound deposit accounts that offer a fixed interest rate. Funds are locked for a specified term.

**Best for**

- Users or businesses looking to earn a higher yield on idle funds
- Offering fixed-term savings products
- Treasury management for long-term cash holdings

**Example use cases**

- Consumer savings products with higher yield and term commitments
- Business treasury optimization

Learn more about [Certificates of Deposit](docId\:waCTNKIkSMBfK0rigKvrC).&#x20;

### FBO (For Benefit Of) Accounts

**Description:**
Legal accounts opened by a fintech or platform, holding funds **for the benefit of** end users. Often used to maintain compliance with custodial fund regulations.

**Best for**

- Programs where the fintech or platform acts as custodian
- Regulatory separation of end-user funds
- Platforms needing to manage funds on behalf of many users without full KYC at the bank level

**Example use cases**

- Investment apps holding funds before allocation
- Gig platforms managing worker payments
- Crowdfunding or pooled escrow solutions

Learn more about [For benefit of (FBO) accounts](docId\:TbRKOj7ConnpBGQUkLe_t).&#x20;

## Rules

When you create your product types, you also define the configuration of what that account can do. For example, you define which [payment methods](docId:57CdhMu9NvUP1Q3jtBYzq) the account can use and any payment limits for for a given payment method.

## Update account details

Sometimes even after you open a bank account, you need to add or update details of the account holder [customer record](docId\:EDJywbh2OgbvTQleF_QZZ). You can update the account holder address, phone number and email. You can also add details to the customer record about an ID document for that account holder.

For every record, you can have multiple addresses and so forth, but you designate one of each as the primary detail. For example you have a primary address and phone number.

Among other purposes, these details are important for identity verification to fight fraud and money laundering.

See our customer record management [APIs](docId\:Q4-jm-3VHwwmDDeEzxEWg) and [tutorials](docId\:BNQ9s0wM-7NQITbQakhdb)  to learn how to update or add this information.&#x20;

[title] Accounts features
[path] Accounts/

Cross River accounts give you a number of special features and functionalities:

- [Interest rates](docId\:lPNlKoLNM6GnHnsfGi7VI): What we offer and how to apply interest rates to savings accounts&#x20;
- [Deposit sweeps](docId:1uMkKV1qCvkWJffuLLyNK): Our feature to increase the scope of deposit insurance for your customers&#x20;
- [Statements and tax forms](docId\:IoApblax1oljNrucKK6o_): Download monthly statements and 1099s


[title] Cards
[path] /

:::CtaButton{label="Card Issuing APIs" docId="ctPgBWhSjawyngKlCY73a" openInNewTab="true"}

:::

## Cross River cards solution

Cross River delivers a flexible, scalable card issuing platform that enables partners to create debit, credit, and prepaid card programs. Our solutions are designed to meet a range of customer and business needs — from traditional deposit-linked debit cards to innovative prepaid products and various credit offerings. Partners can offer both physical and virtual cards and select the issuing model that best fits their operational and technical requirements.

## What we offer

### Card product options

Cross River supports three primary card product types. Selecting the right type of card is a foundational step in building a compliant and scalable card program.

- **Debit cards**: Debit cards allow our partners’ customers to access available funds directly through card network transactions. This card product is associated with funds in an underlying bank account. The customer's account is debited by the amount of the transaction when the card is used.
- **Credit cards**: Credit cards provide customers with access to a line of credit. Cards can be structured as secured (collateralized by customer deposits or other assets) or unsecured (based on creditworthiness). Interest can be charged on any outstanding balance carried over month to month, depending on specific program terms.
- **Prepaid cards**: A prepaid card is not linked to a traditional bank account. Instead, it allows a customer to spend money that has been loaded into a prepaid card account in advance. They offer flexibility for general-purpose spending, payroll, corporate- use cases, and mobile-first experiences.

### Issuing models

Cross River offers two flexible operating models for card issuing.

- [Partner-managed](docId\:n-sV1g5OiDbnWae2xWnSj): This model provides Cross River partners with maximum involvement in how the card program operates.
- [Integrated issuing](docId\:fziT-TwcIdJLJprbecwed): This model offers partners a Cross River-managed infrastructure for launching and managing card programs.

### Program services

Cross River provides essential banking, compliance, and settlement services to support the full lifecycle of a card program.

- **BIN sponsorship**: Cross River sponsors the use of Bank Identification Numbers ( ), enabling partners to offer cards without needing direct membership with Visa or Mastercard.
- [Compliance](docId\:i4b_iqAVcQFp9m1611twC)**&#x20;and risk management**: Cross River handles regulatory obligations including KYC onboarding, AML transaction monitoring, OFAC screening, and network compliance oversight.
- **Settlement and&#x20;**[reporting](docId\:i4b_iqAVcQFp9m1611twC)  : Cross River manages daily settlement with card networks, financial reconciliation, and operational reporting.
- **Processor flexibility**: Partners may work with supported processors already integrated with Cross River or bring their own processor \[1]. Integration models are designed to minimize technical overhead while meeting compliance and reporting requirements

:::hint{type="info"}
\[1] This is subject to due diligence review and at in the sole discretion of Cross River
:::

## Find out more

- [Issuing models](docId\:R6sp5ZBFkpgMUQfBoTob2)&#x20;
- [Card transactions](docId\:K9zdYpQIPm_qhHCU3uRQ6)&#x20;
- [Advanced authorization](docId:88_iQwsRFzVb0Wp1UlwYP)&#x20;
- [Card lifecycle](docId:8vYtQnPfAOXDgK-GgRCq6)&#x20;
- [Reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC)&#x20;

## Tutorials

See our API tutorials to learn how to:

- [Create a card](docId\:RZZRD7am62-KTyv9G1n9-)&#x20;
- [Activate a card](docId\:WZYv6QGm31LDTeAGrt2fc)&#x20;
- [Simulate card management](docId\:cY6Inx4O9CeJ74FOVu7o6)&#x20;


[title] Advanced authorization
[path] Cards/Issuing models/Integrated issuing/

## Cross River advanced authorization solution

Cross River’s advanced authorization capability allows partners using the [Integrated Issuing](docId\:fziT-TwcIdJLJprbecwed) model to actively participate in the real-time decision-making process for card transactions. This opens up opportunities to reduce declines, improve user experience, and support alternative funding models while Cross River retains network compliance oversight.

Partners can participate through one of two modes:

- [Direct mode](docId\:fTR4CLg4XBVgw9KqrpZuy): The partner makes the real-time authorization decision for every transaction. Cross River will send to the partner all authorization requests and the partner must respond within the required time window with an approval or a decline, which Cross River will communicate to the card network. If the partner does not reply in under 1 second, Cross River will decline the transaction.
- [Assist mode](docId\:fMOS52Hkn6siNvg16ah4h): Cross River makes the decision for all card transactions, provided there is enough balance in the account. Cross River will only reach out to the partner to request approval for transactions that would have otherwise been declined due to insufficient funds.&#x20;

:::hint{type="warning"}
These capabilities are available only to partners who meet Cross River’s operational, technical, and compliance standards.
:::

# Read more

- [Direct mode](docId\:fTR4CLg4XBVgw9KqrpZuy)&#x20;
- [Assist mode](docId\:fMOS52Hkn6siNvg16ah4h)&#x20;
- [Program requirements](docId\:x-LGCHmpqNjq--3q9DKx8)&#x20;
- [Advanced authorization flow](docId\:f0t-EXsw0j8b3imdECq1C)&#x20;
- [Reconciliation](docId:01dCqwxq22LUp2Dl3HP1_)&#x20;


[title] Digital wallet tokenization
[path] Cards/Issuing models/Integrated issuing/

# What is a digital wallet?

A digital wallet securely stores payment information and credentials for electronic transactions. You don't need physical cards. The benefits include:

### 1. Security benefits (the big win)

- Tokenization returns tokens (not real card numbers) when someone steals data
- Merchant tokens only work in specific places (like one specific phone or one specific merchant)
- Stolen tokens are worthless elsewhere

**Real-world example**

Think of tokens like hotel key cards. If someone steals your hotel key card, they can only open *your* room at *that* hotel. They cannot use it at other hotels or for anything else. Stealing your actual house key would be much worse. That works everywhere.

**Business impact**

- Lower fraud losses
- Fewer customer complaints
- Better security without more work

### 2. Better customer experience

**What it means**

- Add a card to Apple Pay in seconds
- Use the same card on phone, watch, and tablet
- Get automatic updates when cards expire

**Real-world example**&#x20;

Before tokenization, your card expiration forced you to update your card number on 15 different websites expired. With tokenization, that happens automatically. Netflix, Spotify, gym membership - all keep working.

**Business impact**

- Fewer failed payments
- Less customer frustration
- Lower support costs

## Card provisioning

Card provisioning is the process of adding a payment card to a digital wallet (Apple Pay, Google Pay, Samsung Pay, etc.). Cross River P1 supports multiple provisioning methods to enable cardholders to securely add their cards to digital wallets.

| Supported networks                                                        | Supported wallets                      |
| ------------------------------------------------------------------------- | -------------------------------------- |
| - Visa Token Service (VTS)
- Mastercard Digital Enablement Service (MDES) | * Apple Pay
* Google Pay
* Samsung Pay |

## Provisioning types

### 1. Manual provisioning

**Description:** Cardholder manually enters card details into the digital wallet app

**Flow:**

```mermaid
%%{init: {'theme': 'base', 'themeVariables': {'noteBkgColor': '#fff3cd', 'noteTextColor': '#333'}}}%%
sequenceDiagram
    box rgba(66, 133, 244, 0.3)
        participant CH as 🧑 Cardholder
    end
    box rgba(52, 168, 83, 0.3)
        participant W as 📱 Wallet App<br/>(Apple Pay / Google Pay)
    end
    box rgba(234, 67, 53, 0.3)
        participant CN as 🌐 Card Network<br/>(VTS / MDES)
    end
    box rgba(142, 36, 170, 0.3)
        participant CR as 🏦 Cross River P1
    end

    Note over CH,CR: 1️⃣ Cardholder Opens Wallet

    CH->>W: Opens wallet app

    Note over CH,CR: 2️⃣ Enters Card Details

    CH->>W: Enters card details
    Note right of CH: • Primary Account Number (PAN)<br/>• Expiry date<br/>• CVV

    Note over CH,CR: 3️⃣ Tokenization Request

    W->>CN: Sends tokenization request

    Note over CH,CR: 4️⃣ Forward to Issuer

    CN->>CR: Forwards request to<br/>Cross River P1

    Note over CH,CR: 5️⃣ Risk Checks & Validation

    CR->>CR: Performs risk checks<br/>and validation

    Note over CH,CR: 6️⃣ Additional Verification

    alt Additional verification required
        CR-->>CH: Requests OTP<br/>(via SMS or email)
        CH->>CR: Submits OTP
    end

    Note over CH,CR: 7️⃣ Token Creation

    CR-->>CN: Approves tokenization
    CN->>CN: Creates and activates token

    Note over CH,CR: 8️⃣ Token Stored

    CN-->>W: Delivers token
    W->>W: Token stored securely<br/>in wallet

    Note over W: 🔒 Token is device-bound<br/>and ready for use
```

1. Cardholder opens wallet app (Apple Pay, Google Pay, etc.)
2. Cardholder enters card details:&#x20;
   - Primary Account Number (PAN)
   - Expiry date
   - CVV
3. Wallet sends tokenization request to card network (VTS or MDES)
4. Card network forwards request to Cross River P1
5. Cross River P1 performs risk checks and validation
6. Cross River P1 may require additional verification (OTP via SMS or email)
7. Upon approval, card network creates and activates token
8. Token is stored securely in the wallet

**Use case:**

- Cardholder adding card for the first time
- Cardholder doesn't have access to partner's mobile app
- Standard wallet provisioning without pre-authentication

**Advantages & disadvantages:**

| Advantages                                                                        | Disadvantages                                                                                          |
| --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| - Works with any wallet app
- No partner app required
- Standard industry process | * Manual data entry (friction)
* May require additional OTP verification
* Slower provisioning process |

### 2. Tap to provision (NFC provisioning)

**Description:** Cardholder taps physical card to smartphone to provision card to digital wallet

**Flow:**

```mermaid
%%{init: {'theme': 'base', 'themeVariables': {'noteBkgColor': '#fff3cd', 'noteTextColor': '#333'}}}%%
sequenceDiagram
    box rgba(66, 133, 244, 0.3)
        participant CH as 🧑 Cardholder
    end
    box rgba(52, 168, 83, 0.3)
        participant W as 📱 Wallet App
    end
    box rgba(255, 152, 0, 0.3)
        participant PC as 💳 Physical Card<br/>(NFC)
    end
    box rgba(234, 67, 53, 0.3)
        participant CN as 🌐 Card Network<br/>(VTS / MDES)
    end
    box rgba(142, 36, 170, 0.3)
        participant CR as 🏦 Cross River P1
    end

    Note over CH,CR: 1️⃣ Open Wallet App

    CH->>W: Opens wallet app<br/>on smartphone

    Note over CH,CR: 2️⃣ Tap Physical Card

    CH->>PC: Taps physical card<br/>to phone

    Note over CH,CR: 3️⃣ NFC Card Read

    PC-->>W: Phone reads card data via NFC
    Note right of PC: • Primary Account Number (PAN)<br/>• Expiry date

    Note over CH,CR: 4️⃣ Tokenization Request

    W->>CN: Sends tokenization request

    Note over CH,CR: 5️⃣ Forward to Issuer

    CN->>CR: Forwards request to<br/>Cross River P1

    Note over CH,CR: 6️⃣ Validation & Risk Checks

    CR->>CR: Validates card and<br/>performs risk checks

    Note over CH,CR: 7️⃣ Additional Verification

    alt Verification required
        CR-->>CH: Requests OTP<br/>(via SMS or email)
        CH->>CR: Submits OTP
    end

    Note over CH,CR: 8️⃣ Token Created

    CR-->>CN: Approves tokenization
    CN->>CN: Creates and activates token

    Note over CH,CR: 9️⃣ Card Added to Wallet

    CN-->>W: Delivers token
    W->>W: Card added to wallet
    Note over W: 🔒 Ready for contactless<br/>payments

```

1. Cardholder opens wallet app on smartphone
2. Cardholder taps physical card to phone (NFC)
3. Phone reads card data via NFC (PAN, expiry)
4. Wallet sends tokenization request to card network
5. Card network forwards request to Cross River P1
6. Cross River P1 validates card and performs risk checks
7. Cross River P1 may require verification (OTP)
8. Token created and activated
9. Card added to wallet

**Use Case:**

- Quick provisioning without manual data entry
- Cardholder has physical card and NFC-enabled phone
- Alternative to manual entry

**Advantages and disadvantages:**

| Advantages                                                                              | Disadvantages                                                                                      |
| --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| - No manual typing required
- Fast card data capture via NFC
- Works with physical card | * Requires NFC-enabled phone
* Requires physical card in hand
* May still require OTP verification |

**Availability:**

- **Visa:** Supported via Visa Token Service
- **Mastercard:** Supported via MDES
- **Cross River P1:** All cards are contactless-enabled and support Tap to Provision

## Provisioning comparison

| Type                 | User Effort   | Speed | OTP Required? | Partner App Required? | Best For             |
| -------------------- | ------------- | ----- | ------------- | --------------------- | -------------------- |
| **Manual**           | High (typing) | Slow  | Often         | No                    | First-time users     |
| **Tap to provision** | Low (1 tap)   | Fast  | Sometimes     | No                    | Physical card owners |

## Post-provisioning process

After any provisioning method, the following occurs:

1. **Token creation:**&#x20;
   - Card network (VTS or MDES) issues device-specific token
   - Token is cryptographically linked to original card
   - Token is unique to device and wallet combination
2. **Token storage:**&#x20;
   - Token stored securely in device's secure element
   - Original PAN never stored on device
   - Token cannot be extracted or cloned
3. **Token activation:**&#x20;
   - Visa/Mastercard activates token
   - Token status updated in Cross River P1 system
   - Card ready for transactions
4. **Token management:**&#x20;
   - Cross River P1 can suspend, resume, or delete tokens
   - Partner can manage tokens via API
   - Cardholder can manage tokens via wallet app

## Cross River P1 provisioning capabilities

Cross River P1 manages provisioning tasks including:

### 1. Risk checks

- Geolocation validation
- Cardholder verification
- Fraud detection

### 2. Token status updates

- Token activation
- Token suspension
- Token resumption
- Token deletion

### 3. Token lifecycle management

- Monitor token usage
- Track token status
- Process token renewal

## Use cases

### Use case 1: First-time cardholder (manual provisioning)

**Scenario:** New cardholder receives physical card, no mobile app

**Implementation:**

- Cardholder opens Apple Pay or Google Pay
- Manually enters card details
- Receives OTP via SMS
- Completes verification

**Result:**

- Standard provisioning flow
- Additional friction (manual entry + OTP)
- Longer time-to-wallet (minutes)

### Use case 2: Quick provisioning (tap to provision)

**Scenario:** Cardholder has physical card and NFC phone

**Implementation:**

- Cardholder opens wallet app
- Taps card to phone
- Card data captured via NFC
- OTP verification (if required)

**Result:**

- Faster than manual (no typing)
- Moderate friction (tap + possible OTP)
- Medium time-to-wallet

## Network-specific features

### Visa Token Service (VTS)

**Supported Provisioning Types:**

- Manual provisioning
- Tap to provision

**Key Features:**

- Cloud Token Framework (CTF) for connected devices
- Visa Card Enrollment Hub (VCEH) for merchant-initiated provisioning
- Multi-device token management
- Risk-based authentication

### Mastercard Digital Enablement Service (MDES)

**Supported provisioning types:**

- Manual provisioning
- Tap to provision (NFC Provisioning)

**Key features:**

- Remote Notification Service for token status updates
- Token Lifecycle Management
- Multi-device tokenization
- Enhanced security with cryptographic authentication

[title] Issuing models
[path] Cards/

## Card issuing operating models

Cross River (CR) offers two flexible operating models for card issuing. Partners can select the approach that best matches their technical capabilities, operational preferences, and program goals.

| Feature                          | Partner-managed      | Integrated issuing     |
| -------------------------------- | -------------------- | ---------------------- |
| BIN sponsorship                  | CR managed           | CR managed             |
| Compliance                       | CR managed           | CR managed             |
| Network settlement and reporting | CR managed           | CR managed             |
| Processor integration            | Partner              | CR managed             |
| Ledger management                | Partner              | CR managed             |
| Transaction authorization        | Partner or processor | CR managed             |
| Card network connectivity        | Partner              | CR managed             |
| Card lifecycle management        | Partner or processor | Partner, using CR APIs |
| Customer experience and app dev  | Partner              | Partner, using CR APIs |

## Integrated issuing

In an [integrated issuing](docId\:fziT-TwcIdJLJprbecwed)  model, Cross River provides BIN sponsorship, acts as the ledger, manages transaction authorization, integrates directly with supported processors, and provides network and regulatory compliance oversight. This model simplifies setup, reduces technical burden, and enables faster time to market for our partners. It is designed for partners who want to focus primarily on delivering customer experience without managing banking infrastructure or complex back-office processes.

## Partner-managed issuing

In a [partner-managed](docId\:n-sV1g5OiDbnWae2xWnSj) model, Cross River partners maintain control over ledgering, authorization, and customer experience by working with a processor of their choosing. Cross River provides BIN sponsorship, regulatory oversight, and manages settlement with card networks. This model is ideal for partners who already have established processor relationships and operational capabilities. It enables greater customization of authorization rules, ledger management, and customer-facing experiences while leveraging Cross River's banking infrastructure and compliance oversight.

##


[title] Replace and reissue cards
[path] Cards/Card lifecycle/Partner-managed model/

Order a replacement for damaged, lost or stolen cards using the  [replace card by ID](docId\:AxI2pLSUCMHXDN8-vhCoH)`/cardmanagement/v1/cards/{id}/replace` endpoint. Damaged cards remain active until the cardholder activates the replacement card. Lost or stolen cards are immediately closed and a replacement card is issued.&#x20;

:::hint{type="warning"}
**IMPORTANT**
When you replace a card, you must make the replacement card the primary card in the Cross River system to avoid issues once the card is supplied.
:::

The following replace reasons are available:

- Damaged
- Lost
- FraudCompromised
- Returned
- Expired
- Stolen


[title] Card transaction flow
[path] Cards/Issuing models/Integrated issuing/Card transactions/

## Intro to card transaction flows

A card transaction flows through multiple systems to authorize and settle a payment. In the standard four-party model, such as that of the Visa or Mastercard networks, the participants include:  

- **Cardholder** – the individual or business using the card.
- **Merchant** – the entity accepting the card.
- **Acquirer** – the merchant’s bank or payment provider. 
- **Issuer** – the bank that issued the card (Cross River, via its BIN sponsorship). 

The process typically involves an issuer processor and an acquirer processor, which route the transaction through the card network (Visa, Mastercard) to complete the payment securely. 

## Authorization flow 

![](https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-3-i3FZm0y0UvxoBPUtTEG-20250910-095855.png)

The authorization phase determines whether a card transaction is approved or declined. This typically happens in milliseconds. Here are the steps:

1. The cardholder taps, swipes, or enters card info at the merchant’s terminal or app.
2. The merchant sends transaction data to its acquirer processor.&#x20;
3. The acquirer processor formats the request and sends it to the appropriate card network (Visa, Mastercard).&#x20;
4. The card network forwards the request to the issuer processor associated with the BIN on the card for real time authorization.&#x20;
5. The card issuer or issuing processor responds with an approval or decline decision to the card network.&#x20;
6. The card network routes the decision back to the acquirer processor.&#x20;
7. The merchant receives the response and the transaction is approved or declined at the point of sale.&#x20;

## Transaction lifecycle 

After a transaction is authorized, it may go through several additional phases depending on the program, network behavior, and any disputes: 

- **Authorization:&#x20;**&#x54;he transaction is approved and a hold is placed on funds. 
- **First presentment:&#x20;**&#x54;he merchant submits the transaction for clearing and settlement.
- **Clearing:&#x20;**&#x54;he acquirer sends the presentment file to the card network, which routes it to the issuer.
- **Settlement:&#x20;**&#x54;he issuer transfers funds to the network for any posted transactions while the network transfers funds to the acquirer.
- **Chargeback:&#x20;**&#x49;f the cardholder disputes the transaction, the issuer initiates a chargeback through the card network.
- **Representment:&#x20;**&#x54;he merchant can respond with evidence, re-presenting the transaction.
- **Arbitration (optional):&#x20;**&#x49;f the chargeback is unresolved, the network may arbitrate. 
- **Adjustment (optional):&#x20;**&#x41; final correction is made by the issuer or acquirer to resolve an error or reverse a prior action. 


[title] Issuer processor
[path] Cards/Issuing models/Integrated issuing/

## What is an issuer processor

The card issuing (issuer) processor is the technical backbone that connects your card program to schemes (Visa, Mastercard, etc.) and performs real‑time authorization, clearing, and settlement on behalf of the issuer or sponsor bank.

From the cardholder’s perspective, it underpins every tap, swipe, or click. When a terminal sends a transaction through the acquirer → network → issuer, the issuer processor is the system that decides “approve” vs “decline” and later moves money for settlement.

## Role of issuer processor

An issuer processor connects card issuers with card networks and acquirers. It performs four key functions:

:::Heading{depth="3" indent="1"}
Card lifecycle and program management
:::

- **Card issuance and activation:**
  - Generate PANs, CVV/CVC1/2, and associated keys per BIN/program rules.
  - Manage virtual and physical card creation, activation, blocking, replacement, and closure
- **Product‑level configuration**
  - Maintain **BIN‑level configs** (wallet‑provisioning enabled/disabled, MCC‑filters, region‑blocks, Merchant ID block).
  - Support **chargeback handling** per scheme and issuer‑defined rules.

:::Heading{depth="3" indent="1"}
Authorizes transactions
:::

- **Route and normalize** every authorization request from the network (ISO‑8583‑format messages) into an internal card‑transaction object, including PAN, amount, MID, MCC, channel, and cryptographic data (ARQC, PIN, Track‑1/Track‑2, CVC3/Magstripe contactless, etc.)
- **Evaluate card‑and‑account state**:
  - Check card status (active/blocked/suspended),
  - Verify funds/available credit,
  - Enforce product‑level limits (single‑transaction, daily, monthly),
  - Run scheme‑compliant rules (prepaid, corporate, etc.).
- **Execute cryptographic validation** (crypto‑gate before business rules):
  - ARQC, CVC3/contactless, PIN, Track‑1/Track‑2, and CVC2 are validated against card‑keys in the HSM; mismatches or replays are declined at the crypto layer.
- **Return approval/decline and risk codes** to the network within the network response time threshold, preserving scheme‑specific response codes and reason‑codes for downstream reporting and disputes.

:::Heading{depth="3" indent="1"}
Maintains the system of record
:::

The issuer processor maintains your system of record for operational card and transaction data required for real-time authorization processing. This includes:

- Card status
- Transaction history
- Card controls&#x20;
- Cryptographic materials
- Minimum cardholder information necessary for verification services. Specifically, we store cardholder name (for name matching) and billing address (for Address Verification Service).&#x20;

The processor does not store extended cardholder PII such as:

- Social Security Numbers,
- Date of birth
- Government IDs
- KYC documentation

This information remains with the issuer/sponsor bank. During authorization, the processor retrieves the stored billing address and cardholder name from its database.  It performs real-time AVS and name matching verification, returning match result codes in the authorization response.



:::Heading{depth="3" indent="1"}
Communicates with settlement entities
:::

The issuer processor facilitates information exchange during the settlement process. It does not move actual funds. After authorization and clearing, the card networks (Visa, Mastercard) move actual money between member banks through their settlement banks. The processor receives settlement reports from the networks to reconcile transactions and generate reports for the issuer bank. The processor's role is to route transaction information and perform reconciliation between authorization, clearing, and settlement phases. The processor also provides visibility into settlement activity. The network's settlement infrastructure moves money, not the processor. In the case of P1, since it’s integrated with Cross River as the issuing bank, this reconciliation process happens automatically.

[title] Assist mode
[path] Cards/Issuing models/Integrated issuing/Advanced authorization/

## Intro to Assist mode

Assist Mode allows partners to participate in the authorization flow, specifically for transactions that would otherwise fail due to insufficient funds. The partner can apply an alternate funding source, such as a rewards balance or promotional credit, and then reconcile with Cross River to make the account whole.

## Key characteristics

- Partner creates an API endpoint based on Cross River's specifications to be able to receive requests for authorization in real time. Contact your  to get the specifiations required. Cross River's advanced authorization certification testing must be completed before going live.
- Cross River runs initial authorization logic, including account balance check.
- Partner is notified if a transaction is about to be declined due to insufficient account balance.
- Partner can override the decision and avoid the decline.
- At the end of the day, the partner updates the account balance with funds from their operating account at Cross River.

## Use cases

- Travel or loyalty platforms enabling real-time rewards redemption.
- Fintechs aiming to reduce NSF declines without owning full auth logic.
- Partners offering cashback, auto-top-up, or other alternate funding logic.


[title] Velocity controls
[path] Cards/Issuing models/Integrated issuing/Issuer processor/

# What velocity controls do

## Overview

Use velocity controls as card-level spending limits and budget management tools. They enable your customers (cardholders) to set their own spending restrictions. Velocity controls allow cardholders to:

- Set personal spending budgets (daily, weekly, monthly, yearly, lifetime)
- Control their own transaction frequency (maximum number of transactions)
- Use general spending limits across all transaction types OR set different limits per type (POS, e-commerce, ATM)
- Self-service spending control without requiring issuer intervention

**Who Sets Controls:**

- **Cardholders/end users:** Set card-level controls for their own spending management
- **Partners (via API):** Can programmatically set controls for their customers cards
- **Issuers:** May set account-level defaults or maximums

**Secondary benefit:** Velocity controls also provide fraud mitigation by limiting the potential loss if a card is compromised.

## Core function

**Primary purpose:** Spending control and budget management.

**Secondary purpose:** Limit fraud exposure by capping potential losses.

**How it works:**

- Tracks cumulative transaction amounts over defined time periods
- Counts transaction frequency (usage limits)
- Automatically declines transactions that exceed configured spending limits
- Resets counters based on period definitions (rolling or fixed windows)

## API endpoints

For a full description of the APIs used to configure `velocityControls` refer to the following API endpoints:

[PUT /v1/cards/\{cardId}/controls](docId\:r_Cxcl0l2UoyWkuuJpaJ1)&#x20;

[GET /v1/cards/\{cardId}/controls](docId\:AT16WGXZGoV5cqFuFNPTP)&#x20;

## Control types

Velocity controls support five transaction types:

### 1. General spend

**Description:** Overall card spending limit across all transaction types.

**Characteristics:**

- Applies to ALL enums transaction types (POS, e-commerce, general\_spend, withdrawals)
- Single spending limit regardless of how the card is used
- Simplest control type for basic spending limits

**Use case:** Set a total daily/monthly spending limit without distinguishing between POS, online, or ATM usage.

**Example:**

:::BlockQuote
\{
&#x20; "type": "general\_spend",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   \{
&#x20;     "period": "DAY",
&#x20;     "amount": 100000,
&#x20;     "usage\_limit": 10
&#x20;   }
&#x20; ]
}
:::

**Result:** Card can spend up to $1,000/day across any combination of POS, e-commerce or ATM transactions.

### 2. POS (Point of Sale)

**Description:** Card-present transactions at physical terminals.

**Characteristics:**

- Physical card swipe, chip, or contactless payment
- Only control type supporting the cashback parameter
- Cashback setting controls whether cashback amounts are included in velocity limit calculations
- cashback: "ALLOW" includes cashback in spending limit
- cashback: "DENY" excludes cashback from spending limit

### 3. E-commerce (ecomm)

**Description:** Card-not-present online purchases.

**Characteristics:**

- Online shopping, mobile app purchases
- Remote/digital transactions
- No physical card presentation

### 4. Withdrawal

**Description:** Cash withdrawals at ATMs and bank branches.

**Characteristics:**

- ATM cash withdrawals
- Over-the-counter cash advances
- Balance inquiries and PIN changes are exempt

**How withdrawal limits work**

There is a combined withdrawal pool. All cash withdrawals transactions contribute to the same velocity limit, regardless of the type of cash withdrawals, such as:

- ATM
- Over the counter bank branch withdrawals

## Action types

### ALLOW (whitelist)

**Behavior:** Transactions are allowed UP TO the specified limits

**Example:**

:::BlockQuote
\{
&#x20; "type": "pos",
&#x20; "action": "ALLOW",
&#x20; "list": \[\{"period": "DAY", "amount": 50000}]
}
:::

**Result:** Allows up to $500/day, declines any transaction that would exceed this limit.

### DENY (blacklist)

**Behavior:** Blocks transaction types that exceed specified limits

**Use Case:** Less common for velocity controls, more useful for authorization controls

## Period types

Velocity controls can be set for five time periods:

| Period    | Description         | Behavior                                             |
| --------- | ------------------- | ---------------------------------------------------- |
| **DAY**   | 24-hour rolling     | Rolling 24-hour window from current time             |
| **WEEK**  | 7-day rolling       | Rolling 7-day window from current time               |
| **MONTH** | Monthly threshold   | Calendar month or rolling 30-day period              |
| **YEAR**  | Annual spending cap | Calendar year or rolling 365-day period              |
| **TOTAL** | Lifetime/card limit | Cumulative since card activation or control creation |

**Rolling windows:** Most periods use rolling time windows (e.g., last 24 hours, last 7 days)

## Limit parameters

**Currency handling in velocity controls:&#x20;**&#x56;elocity control limits always use the account currency, which is the currency in which you hold the card account.

**Key principle:&#x20;**&#x56;isa and Mastercard convert all transaction amounts to the account currency.

This applies to the amount and cashback fields below.

| Attribute name | Information                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `amount`       | **Description:** Maximum cumulative transaction amount allowed within the period.<br />* Tracks sum of all approved transactions in the period
* Automatically declines when limit is reached
* Resets based on period type<br />**Examples:**<br />* $500.00 = 50000
* €100.00 = 10000
* £250.50 = 25050                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `usage_limit`  | **Description:** Maximum number of transactions allowed within the period.****<br />**Example:** Allow max 5 transactions per day regardless of amount<br />**Purpose:** Block high-frequency fraud attempts, even when each transaction is small.<br />**Behavior:**<br />* Counts all approved transactions in the period
* Automatically declines when count is reached
* Can be combined with amount limits                                                                                                                                                                                                                                                                                                                                                                                              |
| `cashback`     | **Description:** Controls whether cashback amounts are included in velocity control amount calculations.****<br />**Availability:** POS transactions only<br />**Behavior:**<br />* "ALLOW" - Cashback amount is **included** in the velocity control limit calculation
* "DENY" - Cashback amount is **excluded** from the velocity control limit calculation<br />**Important:** This setting does NOT deny cashback transactions. It only determines whether cashback amounts count toward the spending limit.<br />**Default:** If not specified, cashback behavior follows card defaults<br />**Example:**<br />* POS transaction: $50.00 purchase + $20.00 cashback = $70.00 total
* If cashback: "ALLOW" → velocity control tracks $70.00
* If cashback: "DENY" → velocity control tracks $50.00 only |

## Configuration examples

**Example 1: Daily spending limit**

Restrict POS transactions to $500 per day:

:::BlockQuote
\{
&#x20; "type": "pos",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   \{
&#x20;     "period": "DAY",
&#x20;     "amount": 50000,
&#x20;     "usage\_limit": null
&#x20;   }
&#x20; ],
&#x20; "cashback": "DENY"
}
:::

**Example 2: multi-period limits**

Daily $500 limit AND lifetime $1000 limit:

:::BlockQuote
\{
&#x20; "type": "pos",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   \{
&#x20;     "period": "DAY",
&#x20;     "amount": 50000,
&#x20;     "usage\_limit": null
&#x20;   },
&#x20;   \{
&#x20;     "period": "TOTAL",
&#x20;     "amount": 100000,
&#x20;     "usage\_limit": null
&#x20;   }
&#x20; ],
&#x20; "cashback": "ALLOW"
}
:::

**Behavior:** Both limits must pass for approval. Card stops working after $1000 total spend, regardless of remaining daily limit.

**Example 3: transaction frequency limit**

Maximum 5 POS transactions per day, up to $500:

:::BlockQuote
\{
&#x20; "type": "pos",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   \{
&#x20;     "period": "DAY",
&#x20;     "amount": 50000,
&#x20;     "usage\_limit": 5
&#x20;   }
&#x20; ]
}
:::

**Behavior:** Declines after 5 transactions OR $500 total, whichever comes first.

**Example 4: ATM withdrawal limits**

Restrict ATM withdrawals to $200 per day, $1000 per month:

:::BlockQuote
\{
&#x20; "type": "withdrawal",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   \{
&#x20;     "period": "DAY",
&#x20;     "amount": 20000,
&#x20;     "usage\_limit": 3
&#x20;   },
&#x20;   \{
&#x20;     "period": "MONTH",
&#x20;     "amount": 100000,
&#x20;     "usage\_limit": null
&#x20;   }
&#x20; ]
}
:::

**Example 5: E-commerce controls**

Limit online purchases to $200 per week:

:::BlockQuote
\{
&#x20; "type": "ecomm",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   \{
&#x20;     "period": "WEEK",
&#x20;     "amount": 20000,
&#x20;     "usage\_limit": null
&#x20;   }
&#x20; ]
}
:::

**Example 6: combined transaction types**

Separate limits for POS and e-commerce:

:::BlockQuote
\{
&#x20; "velocityControls": \[
&#x20;   \{
&#x20;     "type": "pos",
&#x20;     "action": "ALLOW",
&#x20;     "list": \[
&#x20;       \{
&#x20;         "period": "DAY",
&#x20;         "amount": 100000,
&#x20;         "usage\_limit": 10
&#x20;       }
&#x20;     ],
&#x20;     "cashback": "ALLOW"
&#x20;   },
&#x20;   \{
&#x20;     "type": "ecomm",
&#x20;     "action": "ALLOW",
&#x20;     "list": \[
&#x20;       \{
&#x20;         "period": "DAY",
&#x20;         "amount": 50000,
&#x20;         "usage\_limit": 5
&#x20;       }
&#x20;     ]
&#x20;   }
&#x20; ]
}
:::

## Transaction processing

### MTI messages that trigger velocity controls

**Increase counters:**

- **0100** - Authorization Request
- **0200** - Financial Authorization Request
- **0120** - Authorization Advice (approved transactions only)

**Decrease counters (reversals):**

- **0400** - Reversal
- **0420** - Reversal Advice

**Approval requirement:**

- Only transactions with DE 39 = 00 (approved) increment counters
- Only approved transactions count toward limits

### Exemptions

**ATM withdrawal controls exempt:**

- Balance inquiries
- PIN changes
- Mini statements
- Other non-cash ATM transactions

## Counter reset behavior

### Automatic resets

- **DAY:** Rolling 24-hour window, continuous reset
- **WEEK:** Rolling 7-day window, continuous reset
- **MONTH:** Reset at month boundary or rolling 30 days
- **YEAR:** Reset at year boundary or rolling 365 days
- **TOTAL:** Never resets automatically

### Manual reset

**To reset spend counter:**

1. Delete the velocity control
2. Recreate the velocity control

**Note:** This is the only way to reset TOTAL period counters.

## Control hierarchy

Velocity controls work alongside authorization controls:

### Evaluation order

1. Account level authorization controls (set by issuer)
2. Card level authorization controls (set by issuer/partner)
3. Account level velocity controls (set by issuer/partner as defaults)
4. Card level velocity controls (set by cardholder/end user)

**All controls must pass for transaction approval.**

### Control management

- **Account level:** Typically set by issuer or partner as program-wide defaults
- **Card level:** Set by individual cardholders through partner's application or API
- **Self-service:** End users can update their own card-level velocity controls in real-time

## Use cases

**Basic consumer card - general spending limit**

:::BlockQuote
\{
&#x20; "velocityControls": \[
&#x20;   \{
&#x20;     "type": "general\_spend",
&#x20;     "action": "ALLOW",
&#x20;     "list": \[
&#x20;       \{"period": "DAY", "amount": 50000},
&#x20;       \{"period": "MONTH", "amount": 300000}
&#x20;     ]
&#x20;   }
&#x20; ]
}
:::

**Purpose:** Simple daily and monthly spending limits across all transaction types
**Who sets:** End user through partner's mobile app
**Result:** $500/day and $3,000/month total spending regardless of POS, e-commerce, or ATM usage

**Consumer self-service spending control**

:::BlockQuote
\{
&#x20; "velocityControls": \[
&#x20;   \{
&#x20;     "type": "ecomm",
&#x20;     "action": "ALLOW",
&#x20;     "list": \[
&#x20;       \{"period": "DAY", "amount": 20000},
&#x20;       \{"period": "MONTH", "amount": 100000}
&#x20;     ]
&#x20;   }
&#x20; ]
}
:::

**Purpose:** Cardholder sets their own online shopping limit: $200/day, $1,000/month
**Who sets:** End user through partner's mobile app or web portal

**Fleet card - driver-set daily limit**

:::BlockQuote
\{
&#x20; "velocityControls": \[
&#x20;   \{
&#x20;     "type": "pos",
&#x20;     "action": "ALLOW",
&#x20;     "list": \[\{"period": "DAY", "amount": 15000}],
&#x20;     "cashback": "DENY"
&#x20;   }
&#x20; ]
}
:::

**Purpose:** Fleet driver sets their own daily fuel spending limit of $150.
**Who sets:** Driver through fleet management app or fleet manager sets for driver.

**Wholesale travel agency - B2B supplier payments**

:::BlockQuote
\{
&#x20; "velocityControls": \[
&#x20;   \{
&#x20;     "type": "general\_spend",
&#x20;     "action": "ALLOW",
&#x20;     "list": \[
&#x20;       \{"period": "DAY", "amount": 10000000},
&#x20;       \{"period": "MONTH", "amount": 500000000}
&#x20;     ]
&#x20;   }
&#x20; ]
}
:::

**Purpose:** Travel agency virtual card for paying travel suppliers (airlines, hotels).
**Who sets:** Travel agency or platform (requires wholesale program enrollment).
**Use case:** OTA or TMC using virtual cards to pay third-party travel suppliers under special commercial agreement with Visa/Mastercard and Cross River.

**Teen debit card - self-set limits**

:::BlockQuote
\{
&#x20; "velocityControls": \[
&#x20;   \{
&#x20;     "type": "pos",
&#x20;     "action": "ALLOW",
&#x20;     "list": \[
&#x20;       \{"period": "DAY", "amount": 5000, "usage\_limit": 3}
&#x20;     ],
&#x20;     "cashback": "DENY"
&#x20;   },
&#x20;   \{
&#x20;     "type": "withdrawal",
&#x20;     "action": "ALLOW",
&#x20;     "list": \[
&#x20;       \{"period": "DAY", "amount": 2000, "usage\_limit": 1}
&#x20;     ]
&#x20;   }
&#x20; ]
}
:::

**Purpose:** Teen (or parent) sets their own daily spending limit of $50 (max 3 purchases) and $20 ATM limit (1 withdrawal/day).
**Who sets:** Cardholder through mobile app or parent through parental control interface.

## Best practices

**1. Layer multiple periods**

Combine daily, monthly, and lifetime limits for comprehensive spending control:

:::BlockQuote
\{
&#x20; "list": \[
&#x20;   \{"period": "DAY", "amount": 50000},
&#x20;   \{"period": "MONTH", "amount": 150000},
&#x20;   \{"period": "TOTAL", "amount": 500000}
&#x20; ]
}
:::

**Use Case:** Employee expense cards with daily, monthly, and annual budgets.

**2. Use transaction frequency limits**

Add `usage_limit` to control spending patterns and reduce fraud exposure:

:::BlockQuote
\{
&#x20; "period": "DAY",
&#x20; "amount": 50000,
&#x20; "usage\_limit": 10
}
:::

**Use case:** Prevent excessive transaction activity even within spending limits.

**3. Choose between general vs specific controls**

**Option A -&#x20;**&#x53;imple general limit:

:::BlockQuote
\{
&#x20; "type": "general\_spend",
&#x20; "action": "ALLOW",
&#x20; "list": \[\{"period": "DAY", "amount": 100000}]
}
:::

**Use case:** Basic consumer cards where transaction type doesn't matter.

**Option B -&#x20;**&#x53;eparate transaction type limits:

:::BlockQuote
\{
&#x20; "velocityControls": \[
&#x20;   \{"type": "pos", "action": "ALLOW", "list": \[\{"period": "DAY", "amount": 50000}]},
&#x20;   \{"type": "ecomm", "action": "ALLOW", "list": \[\{"period": "DAY", "amount": 30000}]},
&#x20;   \{"type": "withdrawal", "action": "ALLOW", "list": \[\{"period": "DAY", "amount": 20000}]}
&#x20; ]
}
:::

**Use case:** Advanced controls where spending patterns differ by channel (e.g., fleet cards, corporate cards).

**4. Control cashback calculation**

For POS controls, explicitly set whether cashback counts toward limits:

:::BlockQuote
\{
&#x20; "type": "pos",
&#x20; "cashback": "ALLOW"  // Include cashback in velocity limit
}
:::

Or exclude cashback from limits:

:::BlockQuote
\{
&#x20; "type": "pos",
&#x20; "cashback": "DENY"   // Exclude cashback from velocity limit
}
:::

**Use case:** Set cashback: "DENY" when you want to allow cashback without it counting toward daily/weekly spending limits.

**5. Set appropriate ATM withdrawal limits**

Control cash access with daily and frequency limits:

:::BlockQuote
\{
&#x20; "type": "withdrawal",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   \{"period": "DAY", "amount": 20000, "usage\_limit": 2}
&#x20; ]
}
:::

**Use case:** Limit cash exposure and provide budget control for ATM usage.

## Limitations & constraints

**Control scope**

- Applies to authorization messages (0100, 0200, 0120)
- Applies to reversals (0400, 0420)
- Does NOT apply to clearing messages (0220)

**Period constraints**

- Maximum list items per control: Check with Cross River P1
- TOTAL period never auto-resets (requires manual deletion/recreation)

**Transaction types**

- **Cashback:** Only available for POS type
- **Withdrawal:** Excludes balance inquiries and PIN changes

**Counter behavior**

- Counters increment only for approved transactions (DE 39 = 00)
- Reversals decrement counters
- Manual reset requires control deletion and recreation

## Troubleshooting

**Control not working**

1. Verify you set the control at the correct hierarchy level (account or card)
2. Check action is ALLOW not DENY
3. Confirm transaction type matches control type

**Counter not resetting**

- Rolling periods reset automatically
- TOTAL period requires manual reset (delete + recreate)

**Cashback amount not counted in velocity control**

- Verify you set cashback: "ALLOW" to **include** cashback in velocity limit calculations
- Set cashback: "DENY" to **exclude** cashback from velocity limit calculations
- Confirm control type is pos (only type supporting cashback parameter)
- **Note:** This setting does NOT block cashback transactions, only controls whether cashback counts toward spending limits

[title] Servicing data
[path] Cards/Reporting and compliance/

## Daily servicing report

Cross River requires that a Cards Issuer, or the Servicer used by the Cards Issuer, to provide daily all servicing events.

The servicing report contains a record for every Credit Card every day. It is a snapshot of each Credit Card. The headers are the same as those listed in the data dictionary.

The table below is the reference information for servicing.

## File conventions

- File format: CSV.
- File transport mechanism: SFTP (SSH; supported public key algorithms RSA, sha2 521, sha2 384, sha 256)
- File Name: Platform\_ServicingTape\_yyyymmdd.csv, where yyyymmdd is the date of file generation.
  - Platofrm: Please check with the data team [dataengineers@crossriver.com](mailto\:dataengineers@crossriver.com) for the value to to be used in the filename
- File location: \Prod\Cards\CardServicingTapes\Platform\_ServicingTape\_yyyymmdd.csv
- Report date: should match the date of the filename
- Report data: should be from the day prior to the report date

## Dictionary updates

| Attributes       | Action | Date         |
| ---------------- | ------ | ------------ |
| Introducing V1.0 | Added  | May 29, 2026 |

## Servicing tape standard V1



| **FieldName**                             | **Data Type**             | **Description**                                                                                                                                                                                                                                                                                                    |
| ----------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Servicer                                  | String                    | Name of Servicer                                                                                                                                                                                                                                                                                                   |
| **Borrower Information**                  |                           |                                                                                                                                                                                                                                                                                                                    |
| Report\_Date                              | Date                      | Snap shot date +1                                                                                                                                                                                                                                                                                                  |
| Platform                                  | String                    | Client company name                                                                                                                                                                                                                                                                                                |
| Account\_ID                               | String                    | Unique identifier for the credit card account                                                                                                                                                                                                                                                                      |
| Card\_Type                                | String                    | Master,Visa,Discover, AMEX                                                                                                                                                                                                                                                                                         |
| Cash\_Back\_Reward                        | String                    | Yes/No                                                                                                                                                                                                                                                                                                             |
| Original\_Credit\_Limit                   | Decimal(13,2)             | Maximum credit line authorized                                                                                                                                                                                                                                                                                     |
| Current\_Credit\_Limit                    | Decimal(13,2)             | Maximum credit line authorized currently                                                                                                                                                                                                                                                                           |
| Last\_Credit\_Limit\_Change\_Date         | Date                      | Date of Last Credit Limit Change                                                                                                                                                                                                                                                                                   |
| Available\_Credit                         | Decimal(13,2)             | Remaining credit available (limit minus balance)                                                                                                                                                                                                                                                                   |
| Credit\_Utilization\_Ratio                | Decimal(1,5) e.g. 0.94567 | Percentage of credit limit currently used                                                                                                                                                                                                                                                                          |
| Cash\_Advance\_Balance                    | Decimal(13,2)             | Outstanding cash advance amount                                                                                                                                                                                                                                                                                    |
| Purchase\_Balance                         | Decimal(13,2)             | Outstanding purchase amount                                                                                                                                                                                                                                                                                        |
| Balance\_Transfer\_Amount                 | Decimal(13,2)             | Outstanding balance from transfers                                                                                                                                                                                                                                                                                 |
| Promotional\_Balance                      | Decimal(13,2)             | Balance under a promotional rate (e.g., 0% APR)                                                                                                                                                                                                                                                                    |
| Promotional\_Months                       | integer                   | Promotional period in month                                                                                                                                                                                                                                                                                        |
| Cycle\_Date                               | Date                      | Billing cycle close date                                                                                                                                                                                                                                                                                           |
| Account\_Open\_Date                       | Date                      | Date the account was opened                                                                                                                                                                                                                                                                                        |
| Account\_Status                           | String                    | Card status: Active, not activated, closed, frozen, inactive, dormant,  etc.                                                                                                                                                                                                                                       |
| Current\_Owner                            | String                    | Which investor owns the account currently                                                                                                                                                                                                                                                                          |
| Prior\_Owner                              | String                    | Which investor owned the account before the current owner                                                                                                                                                                                                                                                          |
| Current\_FICO                             | integer                   | Most recent credit score on file (IF credit score gets updated quarterly, we want to see that score)                                                                                                                                                                                                               |
| Current\_Vantage                          | integer                   | Most recent credit score on file (IF credit score gets updated quarterly, we want to see that score)                                                                                                                                                                                                               |
| FICO\_Score\_Update\_Date                 | Date                      | Date of Score updated                                                                                                                                                                                                                                                                                              |
| Vantage\_Score\_Update\_Date              | Date                      | Date of Score updated                                                                                                                                                                                                                                                                                              |
|                                           |                           |                                                                                                                                                                                                                                                                                                                    |
| **Borrower Payments and Accruals**        |                           |                                                                                                                                                                                                                                                                                                                    |
| Current\_Balance                          | Decimal(13,2)             | Outstanding Principal balance at time of reporting                                                                                                                                                                                                                                                                 |
| Statement\_Balance                        | Decimal(13,2)             | Balance as of the last statement date                                                                                                                                                                                                                                                                              |
| Last\_Statement\_Date                     | Date                      | Last Statement Date                                                                                                                                                                                                                                                                                                |
| Minimum\_Payment\_Due                     |                           | Minimum required monthly payment                                                                                                                                                                                                                                                                                   |
| Next\_Payment\_Due\_Date                  |                           | Date by which payment must be received                                                                                                                                                                                                                                                                             |
| Last\_Payment\_Amount                     | Decimal(13,2)             | Amount of the most recent payment                                                                                                                                                                                                                                                                                  |
| Last\_Payment\_Received\_Date             | Date                      | Last Payment Received Date (not due date)                                                                                                                                                                                                                                                                          |
| Total\_Payment                            | Decimal(13,2)             | The total amount of payments towards card                                                                                                                                                                                                                                                                          |
| Total\_Payment\_LTD                       | Decimal(13,2)             | LTD amount of payments towards card                                                                                                                                                                                                                                                                                |
| Interest\_Payment                         | Decimal(13,2)             | Periodic (within a payment cycle)                                                                                                                                                                                                                                                                                  |
| Interest\_Payment\_LTD                    | Decimal(13,2)             | LTD interest payments                                                                                                                                                                                                                                                                                              |
| Purchase\_Payment                         | Decimal(13,2)             | The payment towards reducing purchase balances                                                                                                                                                                                                                                                                     |
| Purchase\_Payment\_LTD                    | Decimal(13,2)             | LTD payments towards purchase balances                                                                                                                                                                                                                                                                             |
| Fee\_Payment                              | Decimal(13,2)             | Periodic (within a payment cycle)                                                                                                                                                                                                                                                                                  |
| Fee\_Payment\_LTD                         | Decimal(13,2)             | LTD fee payments                                                                                                                                                                                                                                                                                                   |
| Payment\_Method                           | String                    | ACH, check, online, auto-pay, phone, etc.                                                                                                                                                                                                                                                                          |
| Amount\_Past\_Due                         | Decimal(13,2)             | Total overdue amount, if any                                                                                                                                                                                                                                                                                       |
| Over\_Limit\_Amount                       | Decimal(13,2)             | Amount exceeding credit limit (if applicable)                                                                                                                                                                                                                                                                      |
| Accrued\_Interest                         | Decimal(13,2)             | Interest accrued since on boarding or last date paid                                                                                                                                                                                                                                                               |
|                                           |                           |                                                                                                                                                                                                                                                                                                                    |
| **Delinquency Data**                      |                           |                                                                                                                                                                                                                                                                                                                    |
| Delinquency\_Status                       | String                    | Current, delinquent, charged-off, paid/closed/BK/Deceased/debt sale/Fraud, Settlement in Process, settlement closed                                                                                                                                                                                                |
| Grace\_Period                             | integer                   | Number of days before interest accrues on new purchases                                                                                                                                                                                                                                                            |
| Revolving\_Status                         | String                    | Less than minimum, Minimum, statement balance, Partial, overpay                                                                                                                                                                                                                                                    |
| Days\_Past\_Due                           | integer                   | Number of days the account is past due                                                                                                                                                                                                                                                                             |
| Charged\_Off\_Date                        | Date                      | Date the account was charged off (roll forward in daily report)                                                                                                                                                                                                                                                    |
| Charged\_Off\_Amount                      | Decimal(13,2)             | Balance at time of charge-off                                                                                                                                                                                                                                                                                      |
| Collections\_Status                       | String                    | Whether the account has been sent to collections                                                                                                                                                                                                                                                                   |
| Collection\_Agency\_ID                    | String                    | Identifier for the assigned collection entity                                                                                                                                                                                                                                                                      |
|                                           |                           |                                                                                                                                                                                                                                                                                                                    |
| **Modification**                          |                           |                                                                                                                                                                                                                                                                                                                    |
| Modification\_Type                        | String                    | Rate reduction, payment plan, settlement, Deferred Payment (forbearance/Hardship), any collection program, etc.                                                                                                                                                                                                    |
| Modification\_Start\_Date                 | Date                      | Date the modification is implemented                                                                                                                                                                                                                                                                               |
| Modification\_End\_Date                   | Date                      | Date the modification is end                                                                                                                                                                                                                                                                                       |
| Modification\_Status                      | String                    | Active, completed, cancelled, not completed                                                                                                                                                                                                                                                                        |
| Modification\_APR                         | Decimal(13,4) E.g. 0.2378 | Interest rate for modification                                                                                                                                                                                                                                                                                     |
| Deferred\_months                          | integer                   | Duration of the modification agreement                                                                                                                                                                                                                                                                             |
| Hardship\_Program\_Indicator              | String                    | Whether enrolled in issuer's hardship program                                                                                                                                                                                                                                                                      |
| Modification\_Reason\_Code                | String                    | Job loss, medical, disaster, military, etc.                                                                                                                                                                                                                                                                        |
| Settlement\_Amount                        | Decimal(13,2)             | Agreed-upon payoff amount (if applicable)                                                                                                                                                                                                                                                                          |
| Settlement\_Date                          | Date                      | Date settlement was agreed or completed                                                                                                                                                                                                                                                                            |
| Debt\_Management\_Plan\_Indicator         | String                    | Whether enrolled via credit counseling agency                                                                                                                                                                                                                                                                      |
| SCRA                                      | String                    | Y/N  Servicemembers Civil Relief Act, a U.S. federal law that provides a wide range of legal and financial protections to individuals entering, called to, or serving on active duty in the military. Limits interest rates to 6% on debts incurred before active duty (credit cards, mortgages, auto loans, etc.) |
| SCRA\_Start\_Date                         | Date                      | SCRA start date                                                                                                                                                                                                                                                                                                    |
| SCRA\_End\_Date                           | Date                      | SCRA End Date                                                                                                                                                                                                                                                                                                      |
|                                           |                           |                                                                                                                                                                                                                                                                                                                    |
| **Interest & Fee Data**                   |                           |                                                                                                                                                                                                                                                                                                                    |
| Introductory\_APR                         | Decimal(13,4) E.g. 0.2378 | Promotional rate                                                                                                                                                                                                                                                                                                   |
| Introductory\_APR\_Expiration\_Date       | Date                      | Promotional rate expiration date                                                                                                                                                                                                                                                                                   |
| Purchase\_APR                             | Decimal(13,4) E.g. 0.2378 | Current interest rate on purchases                                                                                                                                                                                                                                                                                 |
| Cash\_Advance\_APR                        | Decimal(13,4) E.g. 0.2378 | Interest rate on cash advances                                                                                                                                                                                                                                                                                     |
| Balance\_Transfer\_APR                    | Decimal(13,4) E.g. 0.2378 | Interest rate on balance transfers                                                                                                                                                                                                                                                                                 |
| Penalty\_APR                              | Decimal(13,4) E.g. 0.2378 | Rate applied after delinquency triggers                                                                                                                                                                                                                                                                            |
| Interest\_Assessed\_(Monthly)             | Decimal(13,2)             | Total interest assessed in current period                                                                                                                                                                                                                                                                          |
| Fees\_Assessed\_(Monthly)                 | Decimal(13,2)             | Late fees, over-limit fees, annual fees, etc.                                                                                                                                                                                                                                                                      |
| Late\_Fee\_Assessed                       | Decimal(13,2)             | Fee for missed payment                                                                                                                                                                                                                                                                                             |
| Over\_Limit\_Fee\_Assessed                | Decimal(13,2)             | Fee for exceeding credit limit                                                                                                                                                                                                                                                                                     |
| Foreign\_Transaction\_Fee\_Assessed       | Decimal(13,2)             | Fee for international purchases                                                                                                                                                                                                                                                                                    |
| Balance\_Transfer\_Fee\_Assessed          | Decimal(13,2)             | Fee for transferring a balance                                                                                                                                                                                                                                                                                     |
| NSF\_Fee\_Assessed                        | Decimal(13,2)             | Fee for a payment was returned (NSF)                                                                                                                                                                                                                                                                               |
| Current\_Annual\_Fee\_Assessed            | Decimal(13,2)             | Yearly fee for the card                                                                                                                                                                                                                                                                                            |
|                                           |                           |                                                                                                                                                                                                                                                                                                                    |
| **Reward**                                |                           |                                                                                                                                                                                                                                                                                                                    |
| Rewards\_Program\_Type                    | String                    | Points, Miles, Cash Back                                                                                                                                                                                                                                                                                           |
| Cash\_Reward\_Balance\_LTD                | Decimal(13,2)             | LTD $                                                                                                                                                                                                                                                                                                              |
| Rewards\_Points\_Balance\_LTD             | Decimal(13,2)             | Points LTD # Integer                                                                                                                                                                                                                                                                                               |
| Rewards\_Miles\_Balance\_LTD              | Decimal(13,2)             | Miles LTD #                                                                                                                                                                                                                                                                                                        |
| Redemption\_Cash\_Reward\_Balance\_LTD    | Decimal(13,2)             | Redemptions LTD $                                                                                                                                                                                                                                                                                                  |
| Redemption\_Rewards\_Points\_Balance\_LTD | Decimal(13,2)             | Redemptions LTD #                                                                                                                                                                                                                                                                                                  |
| Redemption\_Rewards\_Miles\_Balance\_LTD  | Decimal(13,2)             | Redemptions LTD #                                                                                                                                                                                                                                                                                                  |
|                                           |                           |                                                                                                                                                                                                                                                                                                                    |
| **Risk & Fraud/BK/Deceased/Dispute**      |                           |                                                                                                                                                                                                                                                                                                                    |
| Fraud                                     | String                    | Yes/No  Flag for suspicious activity                                                                                                                                                                                                                                                                               |
| Fraud\_Status                             | String                    | Confirmed, Suspicious, Not resolved, Cleared                                                                                                                                                                                                                                                                       |
| Dispute\_Status                           | String                    | Open, Resolved, Denied                                                                                                                                                                                                                                                                                             |
| Dispute\_Flag                             | String                    | Whether the transaction has been disputed                                                                                                                                                                                                                                                                          |
| Dispute\_Amount                           | Decimal(13,2)             | Dispute Amount                                                                                                                                                                                                                                                                                                     |
| Bankruptcy                                | String                    | Yes/no                                                                                                                                                                                                                                                                                                             |
| Bankruptcy\_Filing\_Date                  | Date                      | Bankruptcy filing date                                                                                                                                                                                                                                                                                             |
| Bankruptcy\_Chapter                       | String                    | 11 or 7 or 13                                                                                                                                                                                                                                                                                                      |
| Deceased                                  | String                    | Yes/no                                                                                                                                                                                                                                                                                                             |
| Deceased\_Date                            | Date                      | Deceased Date                                                                                                                                                                                                                                                                                                      |
|                                           |                           |                                                                                                                                                                                                                                                                                                                    |
| **ExtraFileds**                           | **JSON**                  | **Any info not covered above.&#xA0;**                                                                                                                                                                                                                                                                              |
| Debt\_Sold\_Flag                          | String                    |                                                                                                                                                                                                                                                                                                                    |
| Debt\_Sold\_Date                          | Date                      |                                                                                                                                                                                                                                                                                                                    |
| Receivable\_Sold\_Date                    | Date                      |                                                                                                                                                                                                                                                                                                                    |
| Receivables\_sold                         | Decimal (13,2)            | Receivables sold to trusts/investors                                                                                                                                                                                                                                                                               |
| Card\_Expiration\_Date                    | Date                      | Date of card expiration                                                                                                                                                                                                                                                                                            |
| Account\_Closure\_Reason                  | String                    | Why the account was closed (voluntary, involuntary, fraud, etc.)                                                                                                                                                                                                                                                   |
| Account\_closure\_date                    | Date                      | Date of Account closed                                                                                                                                                                                                                                                                                             |


[title] Merchant tokenization
[path] Cards/Issuing models/Integrated issuing/Digital wallet tokenization/

## What is merchant tokenization

Merchant tokenization is a security capability that replaces a cardholder's  with a unique network token specific to a single merchant.

Merchant tokenization differs from digital wallet tokenization in one key way. Digital wallet tokenization starts when a user adds a card to a wallet. Merchant tokenization is driven by the merchant when a user saves their card on file for future use.

## How it works

```mermaid
%%{init: {'theme': 'base', 'themeVariables': {'actorBkg': '#ffffff', 'actorTextColor': '#333333', 'actorBorder': '#333333'}}}%%
sequenceDiagram
    box rgba(163, 230, 247, 0.3)
        participant CH as 🧑 Cardholder
    end
    box rgba(123, 186, 237, 0.3)
        participant M as 🏪 Merchant
    end
    box rgba(37, 125, 201, 0.3)
        participant PP as 🔄 Payment Processor
    end
    box rgba(37, 56, 201, 0.3)
        participant CN as 🌐 Card Network<br/>(Visa / Mastercard)
    end
    box rgba(6, 144, 250, 0.3)
        participant IS as 🏦 Issuer
    end

    Note over CH,IS: 1️⃣ Initiation

    CH->>M: Enters card details (PAN)<br/>e.g., Netflix, Amazon
    M->>M: Cardholder saves card<br/>for future billing

    Note over CH,IS: 2️⃣ Token Request

    M->>PP: Requests network token
    PP->>CN: Forwards token request<br/>(includes raw PAN)
    CN->>IS: Validates card &<br/>requests approval
    IS-->>CN: Approves tokenization
    CN-->>PP: Returns network token<br/>(replaces raw PAN)
    PP-->>M: Delivers token

    Note over CH,IS: 3️⃣ Storage

    M->>M: Stores merchant token<br/>in place of sensitive<br/>card number in database
    Note right of M: Raw PAN is discarded —<br/>only token is retained

    Note over CH,IS: 4️⃣ Transacting

    M->>CN: Submits payment using token<br/>+ unique cryptogram
    CN->>CN: Validates cryptogram<br/>(ensures token is bound<br/>to this merchant)
    CN->>IS: Forwards transaction<br/>with original PAN
    IS-->>CN: Approves / Declines
    CN-->>M: Transaction result
    M-->>CH: Payment confirmed

    Note over CN: 🔒 Stolen token cannot<br/>be used elsewhere —<br/>cryptogram is merchant-specific

    loop Recurring & One-Click
        M->>CN: Future payment with<br/>same token + new cryptogram
        CN-->>M: Validated & processed
    end
```

### 1. Initiation

A cardholder enters card details at an online merchant or subscription service. For example, Netflix or Amazon. The user saves the card for future billing.

### 2. Token request

The merchant or their payment processor requests a network token. The request goes to the card network (Visa or Mastercard). The DPAN (Device Primary Account Number) token replaces the raw PAN (Primary Account Number).

### 3. Storage

After the issuer approves, the merchant stores the token. The merchant token replaces the sensitive card number in their database.

### 4. Transacting

The merchant uses this token for all future payments. This covers recurring charges and one-click purchases. Each transaction includes a unique cryptogram. The network validates this cryptogram, ensuring that a stolen token cannot be used elsewhere.

## Key benefits

- **Security:** The network restricts the token to a specific domain. The token only works at the merchant that requested it. Other merchants cannot use a stolen token.
- **Lifecycle management:** When a cardholder loses or reissues a physical card, the network automatically updates the merchant token. Services like VAU/ABU handle this. Subscriptions continue without interruption.
- **Control:** Issuers can view and manage tokens individually. Suspend a specific subscription token without canceling the physical card.


[title] Payment types
[path] Payments/ACH/

## Cross River ACH payment types

Cross River offers both Standard and Same Day ACH payments. You can send payments using our API either individually, or in [batched payments](docId\:A6PiIKl4qllwWNkFJ5tXq).

:::hint{type="warning"}
**IMPORTANT**
The payment information and data you send to Cross River must include a [Nacha SEC code](docId\:M8a5dbzFhH5TV1NytK9Aw) and conform to  [Nacha settlement rules](docId\:qQ3D8sBTuETGRtKaXTK1M).
:::

## Standard ACH

Use standard ACH payments for regular funds transfers such as paychecks or bill payment.  A standard ACH payment can take up to two business days to [settle](docId\:qQ3D8sBTuETGRtKaXTK1M). The Fed refers to this as “future dated.”&#x20;

Cross River supports all domestic ACH payment transactions. You can transfer funds from one US bank account to another. The `serviceType` attribute value in the [originate an ACH payment](docId\:ILwmF5qnTMLo30D2H3rCH) API will always be **standard**.

An ACH payment is either a push or pull depending on your [role](docId\:gP67oDbdcrlUrhNnyUKKr) in the transaction. Both the originator and the receiver can push or pull funds.

- The Originating Depository Financial Institution (ODFI) sends fund or sends a pull requests (to receive funds)
- The Receiving Depository Financial Institution (RDFI) receives funds or receives a pull request (to send funds)

Set the value to **pull** or **push** for the **transactionType** attribute in the [originate an ACH payment](docId\:ILwmF5qnTMLo30D2H3rCH) API.

See our [ACH APIs](docId\:r05hYQE8nVccwBGm1Ja1-) and our [ACH originate a payment](docId\:HLIqOJNMHJwJRI29Z0Ryt) tutorial.

### International payments

:::hint{type="info"}
For the Cross River comprehensive international payment solution, see [International payments](docId:3EvRgfMqC_15mbLV_j3cp).
:::

The ACH system is domestic (US only). However, it can facilitate funds transfers through similar payment systems in other countries. This allows you to transfer funds internationally using ACH.

If you want to transfer funds internationally using Cross River and ACH, you need a US intermediary  (a US bank that can do international transfers) with a relationship with the FI of the international account. We pass the payment information and funds to the intermediary FI, which sends it to the corresponding international account.

If you want to receive funds from outside the US using ACH, the funds will first be transferred to an intermediary FI, and from there be transferred to us.&#x20;

*Any* payment over the ACH network that originates or ends in a foreign FI must use the **IAT** [SEC transaction code](docId\:M8a5dbzFhH5TV1NytK9Aw). The Cross River service type will always be **Standard**.

### Validation (prenote)

You can use an *ACH prenote&#x20;*&#x69;f you want to validate bank account information before sending or receiving any funds.

For example, if a utility company automatically withdraws a payment from a customer account, it sends an ACH prenote before it sends the request to withdraw the funds. A successful prenote call results in no error or change notification.

Sending an ACH prenote is simple. You [originate the payment](docId\:HLIqOJNMHJwJRI29Z0Ryt) with a value of **$0.00**. You can use ACH prenotes for both credits and debits.

Learn more about ACH prenotes and account validation from the Nacha [Validation Resource Center](https://www.nacha.org/content/account-validation-resource-center).

## Same day ACH

When you send a payment using Same day ACH, the funds are available to the  on the [settlement date](docId\:qQ3D8sBTuETGRtKaXTK1M) provided the payment is sent within the defined Same Day [time window](docId\:E2visF8PQW49xrCm5AYLY).

There is a limit of $1,000,000.00 per Same day ACH transaction.

Same Day ACH uses the [same endpoint](docId\:ILwmF5qnTMLo30D2H3rCH)  as Standard ACH, however the [time window](docId\:E2visF8PQW49xrCm5AYLY) is smaller and you set the `serviceType` attribute to **SameDay**.&#x20;

:::hint{type="warning"}
**IMPORTANT**
The payment information and data you send to Cross River must conform with the [Nacha SEC codes](docId\:M8a5dbzFhH5TV1NytK9Aw)  and [Nacha settlement rules](docId\:qQ3D8sBTuETGRtKaXTK1M).
:::




[title] Network interoperability
[path] Payments/Instant payments/

## Cross River network interoperability

With Cross River's simple API, your company can use RTP®, FedNow®, or CRNow (Cross River Partner network transfers) without having to worry about their interoperability.&#x20;

## Benefits of network interoperability

- **Reachability handled for you:&#x20;**&#x43;ross River selects a network that can reach the receiving institution, so you don't need to maintain your own view of which institutions are reachable on which network.
- **Flexibility:** You can define routing preferences at both the **product** and **transaction** levels.
- **Reliability:** Payments leverage CRNow (intra-bank transfers), RTP®, and FedNow® to ensure seamless delivery.

## Routing preferences

Cross River offers two ways to select a network for an instant payment.

**Automatic network selection** If you don't name a network, Cross River selects one that can reach the receiving institution. You can set a network preference for your product. Payments to accounts held at Cross River settle over CRNow when both partners are enabled for it. If the receiving institution isn't reachable on any network available to you, Cross River returns an error when you submit the payment, so you can send it over another rail.

**Choosing the network yourself** Include the `networkPlatform` attribute in your request to name the network for an individual payment. See the [originate a credit transfer](docId:727H0GkQerqHAFKEy67Uu) endpoint.


[title] Payment settlement
[path] Payments/ACH/

## ACH payment settlement

ACH transactions, whether debit or credit, typically settle within 1–3 business days. Some payments may settle the same day if originated as Same Day ACH.

Settlement timing depends on:

- Same Day vs. Standard submission
- Entry type (credit vs. debit)
- Federal Reserve processing windows and operating hours
- Batch processing cut-offs

ACH payments settle only on bank business days. No settlement happens on weekends or Federal holidays.

## Credit entries

An ACH Credit occurs when an originator instructs their bank () to push funds to a receiver’s account at another financial institution ().

### Posting and availability

- Funds availability is determined by the *settlement date* in the company/batch header record.
- RDFIs must make funds from credit entries available to receivers by the settlement date.

### Standard ACH credits

Certain requirements apply for standard ACH credits:

- The credit must be delivered to the RDFI by the ACH Operator no earlier than two banking days prior to settlement date
- It must be posted (or memo-posted) by opening of business on the settlement date.
- Funds must be available for withdrawal *no later than 9:00 a.m. local time* on the Settlement Date if received by 5:00 p.m. the prior business day.

These requirements apply for all SEC codes.

### Same Day ACH credits

For Same Day credits, these requirements apply:

- The credit must be delivered to the RDFI on the settlement date.
- Funds become available according to these deadlines (depending on when sent):
  - First Same Day window → by 1:30 p.m. local time
  - Second Same Day window → by 5:00 p.m. local time
  - Third Same Day window → posting required on the settlement date. Withdrawal availability may be deferred until the next day.
- Exception: If the RDFI reasonably suspects the credit is unauthorized, it may delay availability subject to legal requirements, but must promptly notify the ODFI.

## Debit entries

An ACH Debit occurs when an Originator instructs their bank (ODFI) to pull funds from a Receiver’s account at another financial institution (RDFI).

### Standard ACH debits

Certain requirements apply for standard ACH debits:

- Credits are made available to RDFIs no earlier than one banking day before settlement date.
- RDFIs may not post debit entries prior to the settlement date.

### Same Day ACH debits

For Same Day debits, these requirements apply:

- The debit must be delivered to the RDFI on the settlement date.
- The debit must *not* be posted prior to the settlement date.

## Nacha settlement rules

- **Standard credits:** Settle in 1–2 business days.
- **Standard debits:** Settle on the next business day.
- **Same day entries:** Settle on the originated date, if submitted before the ACH Operator deadline (FedACH cut-off \~4:45 p.m. ET).
- **Same day ACH Limits:**
  - Maximum transaction value: $1,000,000
  - Only eligible for domestic payments (no international transactions)

ACH transactions may still be returned for reasons such as insufficient funds or unauthorized activity. Consumer unauthorized debits can be returned for up to 60 calendar days under Nacha rules. Finality of settlement is therefore subject to Nacha return windows.

[title] Batched payments
[path] Payments/ACH/

## ACH batched payments

The Cross River system supports the ability to send up to 5000 payments in a single request via the [client batch API](docId:0Hu-sm4gNXr4XbIZCHkTA). A batch request is always the preferred method of originating multiple payments at a given time.

Once a batch is accepted, we break it into individual payment records that may go on hold or be sent to the Federal Reserve independently. [Webhook events](docId\:AVRvavzdk7hC0UfXn6XZ9) fire as usual on each of these individual payments. The overall [payment workflow](docId\:rqqtpgcfU3hQrGMqMuERM) is identical to that of payments originated individually.

It is important to note that client batch origination requests are asynchronous and the associated payment records may not be available immediately. You can monitor the progress using the API via the `status` and `importCount` fields of the batch object.

:::hint{type="info"}
See our tutorial to learn how to [send ACH client batch payments](docId:93yC84GGRygSZe1OPiW2m).
:::


[title] Payment send limits
[path] Payments/Instant payments/

## Cross River instant payment limits

When you use instant payments, there are limits imposed both by the payment network and by Cross River.

## Payment network transaction limits

Each payment network has its own limits for credit transfer amounts, per transaction.

| Network   | Limits                                                                                                                                                                                |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| RTP (TCH) | - Transaction Limit: $10,000,000 per transaction.
- Receiving Limit: Cross River adheres to this maximum limit for receiving funds.                                                   |
| FedNow    | * Transaction Limit: $10,000,000 per transaction.
* Receiving Limit: Cross River adheres to this maximum limit for receiving funds.                                                   |
| CRNow     | - Transaction and Receiving Limits: No inherent limits, offering greater flexibility.
- Partner-Specific Limits: Managed and periodically reviewed by Cross River’s Credit Risk team. |

## Cross River daily send limits

Cross River sets a daily send limit for Instant Payments per partner to ensure smooth operations and prevent disruptions. Tracking utilization helps manage limits and prevent payment disruptions. We provide a [webhook](docId\:ffGq2OHYEbWPzn2old6Mc) to allow you to monitor usage and to be aware when you are approaching your daily send limit.

- **Limit Determination** based on:
  - Previous instant payment usage.
  - Daily average balance in your Instant Payments-eligible account.
  - Projections provided during onboarding.
- **Adjustments:&#x20;**&#x4C;imits can be adjusted up or down with Cross River approval.

Cross River calculates your limit utilization by calculating the total amount of successful credit transfers and comparing it to your daily send limit for Instant Payments.

- **Calculation Frequency:&#x20;**&#x54;he system calculates utilization every 10 minutes for active products (products with successful transfers that day). This interval can be configured.
- **Processing Window:&#x20;**&#x55;tilization resets at **1 pm (ET)** each day. Payments are tracked based on a timestamp.
- **Data Retention:&#x20;**&#x55;tilization history is stored for 28 hours. Data older than 28 hours is removed hourly.


[title] Statement descriptor
[path] Payments/Card payments/

## Cross River statement descriptors

A *statement descriptor* is the text that appears for each transaction listed on the monthly statement sent to your customer. The statement descriptor gives the cardholder information to identify each transaction.

You can configure the text of a statement descriptor for your organization.

Statement descriptions are important because:

- Bank customers need an easy way to identify the charges that appear on their bank statements.
- Banks and card networks need information to help end-customers understand their bank statements.
- Chargeback and return-risk increases if end-customers don’t recognize a transaction by its description.

Cross River supports 2 kinds of statement descriptors: *static* and *dynamic*.

When you onboard to Cross River you supply your merchant name and abbreviated name. Tell your payments implementation manager whether you prefer a static or dynamic descriptor. If you're configured for dynamic descriptors your sub merchant name will be used.

## Static descriptor format

This text is always the same and also appears as part of the dynamic descriptor. Tell your implementation manager which types of static descriptor you prefer:

- Merchant name
- Abbreviated name and merchant name

For example, if the merchant name is **Cross River** and the abbreviated name is **CRBT**, the descriptor could appear in these ways:

- `CrossRiver*`
- `CRBT*CrossRiver`

Some processors automatically append city and state to the descriptor:

- `CrossRiver* Newark, NJ`
- `CRBT*CrossRiver Newark, NJ`

## Dynamic descriptor format

The statement descriptor depends on how the Partner is configured. If static, then the statement descriptor is just the Partner name.

If dynamic, then the statement descriptor is now the Partner Name\*\{Second Part}

**Scenario 1&#x20;**

Parent merchant: "ACME Payments"
Sub-merchant: "Widget Store"
Initiator name (override): "Widget Store - Returns Dept"

**Statement descriptor → ACME\*Widget Store - Returns Dept**


**Scenario 2&#x20;**

Parent merchant: "ACME Payments"
&#x20;Sub-merchant: "Widget Store"
&#x20;Initiator name: (not provided)

**Statement descriptor → ACME\*Widget Store**


**Scenario 3&#x20;**

Parent merchant: "ACME Payments"
&#x20;Sub-merchant: "ACME Payments"
&#x20;Initiator name: (not provided)

**Statement descriptor → ACME\*(empty)**


[title] Push and pull
[path] Payments/Card payments/

## Push payments

When you send funds directly to a debit card, we call this a push payment, or a push-to-card (P2C) transaction using the [Send payments](docId\:c6CjUrm0nl_nOY4oeJ8Gu) API with a value of "push" in the `paymentType`field. The issuing bank (of the registered debit card) receives the transaction. The issuing bank either authorizes or declines the transaction. If the bank authorizes the transaction, your payee will receive the funds. A push payment is also known as Original Credit Transaction (OCT).&#x20;

## Pull payments

Are also known as an Account Funding Transaction (). It lets you pull funds from a debit card for specific purposes, such as funding a digital wallet through the [Send payments](docId\:c6CjUrm0nl_nOY4oeJ8Gu) API with a value of "pull" in the `paymentType`field. Or, you can use it to initiate a person to person (P2P) transfer through the card network rails. AFTs are not available cross-border.


[title] International payments FAQ
[path] Payments/International payments/

## &#x20;International payments – Frequently Asked Questions

This section answers common questions about International Payments, including how Cross River supports global payouts for business entities, where payments can be sent, which rails are available, and what timelines to expect.&#x20;

# Cross River International Payments – Top FAQs

**What are International Payments?**
They allow U.S.-based business entities to send money globally using SWIFT or local in-country rails.&#x20;

**Who can use this service?**
Only U.S.-based business entities. Individuals cannot use International Payments.

**Which countries and currencies are supported?**
22 countries and 9 currencies are [supported ](docId\:p_Cb7wXlzG8of31c9xlgj). Payment rails (SWIFT or local) vary by country. Coverage can be expanded based on partner needs. &#x20;

**Can I send cryptocurrency or gaming-related payments?**
No. These types of transactions are currently not supported.

**How do I send an international payment?**
[Steps](docId\:v6X5yKUfI7SEu3gHP7pKW):

1. Obtain an FX rate estimate&#x20;
2. Verify quote requirements&#x20;
3. Generate an executable quote (valid \~60 seconds)&#x20;
4. Originate payment using the quote ID via API
   &#x20;Webhooks notify acceptance or rejection.&#x20;

**How are payments routed?**

- [SWIFT](docId\:ZbEtirMC3fdQjvz5teR0i)**&#x20;:** Secure global messaging; may involve intermediary fees; settlement T+0 to T+1.&#x20;
- [Local rails](docId\:ZbEtirMC3fdQjvz5teR0i)**:** Country-specific systems; minimal fees; settlement T+0 to T+2.&#x20;

**Can I prioritize SWIFT or local rail in the API?**
Yes. Set priority = TRUE for SWIFT, FALSE for local rail.

**How can I track payments?**
Real-time updates are available via [webhooks](docId\:o9fUc2dKPczcl1h4yIChr), from quote generation to payment completion.

**Are there compliance checks?**
Yes. Cross River integrates BSA/AML and other compliance processes.&#x20;

**When are funds delivered?**
Certain currencies, such as Euro, GBP, and CAD, can be delivered as early as the same day and guaranteed for next-day delivery, ensuring timely and efficient transactions.



:::hint{type="info"}
For more information, please visit our [International payments](docId:3EvRgfMqC_15mbLV_j3cp) pages.
:::


[title] Participant roles
[path] Payments/Instant payments/

## Ultimate debtor and creditor roles

Ultimate debtor and creditor roles provide receiving banks with greater transparency about the true originator or recipient of funds. These roles are essential when multiple parties are involved on either the sender (debtor) or receiver (creditor) side, clarifying which party is acting on behalf of another. This ensures precise and efficient transaction processing.

If the debtor or creditor account is a business account, then the ultimate debtor or creditor must also be a business account.&#x20;

The ultimate debtor and ultimate creditor information is provided in the [instant payments](docId\:dZy2COChKwicpi_0rKK2P)  API.

**Example flow**

- The *Sender&#x20;*(end user) initiates payment through the Merchant’s app.
- The *Merchant&#x20;*(Ultimate Debtor) facilitates the transaction on behalf of the Sender.
- *You&#x20;*&#x61;ct as the Debtor, affiliated with Cross River.
- *Cross River* (Sending FI) manages and processes the transaction.
- The *Receiving FI* receives the funds on behalf of the final beneficiary.
- The *Receiver* (end beneficiary) collects the disbursement.

This diagram shows the fund flow variations involving Ultimate Debtors and Creditors.

![Instant payments ultimate debtors and creditors flow](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j-DXquPHx1tiP1bnw9De7vB-20250123-104224.png)






[title] Holds
[path] Payments/Wires/

## Wire holds

A wire transaction on-hold status is a measure Cross River takes to protect our customers. Holds are a reflection of internal policies and regulatory requirements designed to mitigate risks like fraud, financial instability, or compliance violations. The **Wire Holds** area in COS Explorer displays information on the holds imposed on the wire, including the status of the hold and the type of the hold.

In some cases, system validations may trigger a hold for a variety of reasons explained below.

| Type                   | Reason                                                                                                                                             | Applies to        | Clearing method   |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ----------------- |
| Beneficiary Account    | The beneficiary account number in the payment did not match an account in COS                                                                      | Inbound           | Automated, Manual |
| Beneficiary Title      | The beneficiary name in the payment did not match the beneficiary account title                                                                    | Inbound           | Automated, Manual |
| Catchy Scan            | Some of the payment details potentially matched information within our fraud prevention database                                                   | Inbound, Outbound | Automated, Manual |
| Collected Funds        | The core was unable to successfully collect funds for the payment from the originator’s account                                                    | Outbound          | Automated         |
| Duplicate Suspect      | Some of the payment details matched a payment that has been processed within the same business day                                                 | Inbound, Outbound | Automated, Manual |
| Inbound International  | Some of the payment details indicate that the payment is an international transaction                                                              | Inbound           | Automated, Manual |
| Internal Review        | The payment was originated by an internal user via the COS Explorer portal                                                                         | Outbound          | Manual            |
| Manual                 | Miscellaneous hold placed on a wire                                                                                                                | Inbound, Outbound | Manual            |
| OFAC Scan              | Some of the payment details potentially matched information within the OFAC database                                                               | Inbound, Outbound | Automated, Manual |
| Outbound International | Some of the payment details indicate that the payment is an international transaction                                                              | Outbound          | Automated         |
| Authorization          | The amount of the wire requires one or more approvals. One or more partner users must access COS Explorer to clear the hold.                       | Outbound          | Manual            |
| Phone Confirmation     | The payment was originated by an external user (partner) via the COS portal and must be processed using the Bank’s callback verification procedure | Outbound          | Automated, Manual |
| Travel Rule            | The payment is missing some information that is required by the FinCen Travel Rule - see below for more information                                | Outbound          | Automated         |

Wires must achieve a pending status to be eligible for distribution.

This happens when either:

- The validation process did not trigger any holds
- All triggered holds were manually cleared by a user

### Travel Rule

The Bank Secrecy Act Travel Rule (31 CFR 1010.410(f)) requires information identifying the sender of a wire to travel with the payment, so that the receiving institution and any bank in between can tell who  sent the funds. **It applies to transfers of $3,000 or more.**

Always supply:

- Originator name
- Originator address - street, city and country at a minimum
- Originator account number, or another identifier if no account was used

Wires missing any of these may be held for compliance review. We cannot supply the missing details on your behalf and the payment is returned to you for correction.

To avoid holds, send complete originator details on every wire, or configure a default originator on the account and let us populate it.

[title] Benefits and limitations
[path] Payments/International payments/

## Benefits

International Payments introduces a new dimension to our bank payments offering, enabling you to send and receive international payments.

International payments with Cross River provide:

- **Expanded reach**: International payments seamlessly connects you to a robust network of correspondent banks worldwide, expanding our reach to 36 countries and accommodating 18 currencies.
- **Integration simplicity**: International payments effortlessly integrates with our existing domestic payments framework, creating a plug-and-play solution for outbound payments across the globe.
- **Versatile processing options**: International payments are available through API integration, interface, and file ingestion. You simply provide payment information, and we take care of the entire end-to-end processing.
- **Cost efficiency**: You don't incur a domestic wire fee as a part of your transaction, enhancing cost-effectiveness.
- **Accelerated processing**: International payments ensures faster processing compared to using a domestic partner bank, streamlining the payment workflow for increased efficiency.
- **Fast delivery for key currencies**: Certain currencies, such as Euro, GBP, and CAD, can be delivered as early as the same day and guaranteed for next-day delivery, ensuring timely and efficient transactions.

## Limitations

The following limitations currently exist for International payments at Cross River:

- We only provide outbound capabilities. In the future we'll support inbound payments as well.
- Exclusively for entities based in the United States.
- Only used by business entities (payers), covering both Business-to-Consumer (B2C) and Business-to-Business (B2B) scenarios.
- No support for transactions related to cryptocurrencies or gaming activities.
- No foreign exchange (FX) wallet holding capabilities.
- No remittance payments.


[title] Send payment
[path] Payments/International payments/

## Flow of funds

![](https://archbee-image-uploads.s3.amazonaws.com/511c8QBH-VHiwWnyzIwUb/UJajtfvmpudqk2pe-v1-O_image.png)

## Outbound payments

:::hint{type="info"}
See our [tutorial](docId:0mIEXzUcyTurPvZq13y1Z) to learn how to send an international payment. &#x20;
:::

The following diagram shows the status and webhook flows for outbound International Payments:

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/HtL_SkxLyyKnRQT2a288T-20260121-065527.png)

## How it works

**Step 1: Obtain Exchange Rate Estimate**

Before committing to sending an international payment, you can [obtain an estimate](docId:13BVdESRAI7mGFGTl8FjF) of the exchange rate. The estimate includes the current FX rate, with spread and transaction fees. This step does not require beneficiary data.

**Step 2: Verify Requirements for Quote**

Once satisfied with the exchange rate estimate, you can use the [get list of required fields for quote request](docId\:tFujxIwREvywNETqogCv-) API to validate the specific attributes/information required for creating a valid quote. This step is crucial as international payment requirements vary by country.

**Step 3: Generate Executable Quote**

- After gathering the necessary requirements for a quote, you [request a payment quote](docId\:OnbkGeBIHVb4ihvB1haKL). The quote includes the transfer cost, fees, and the exchange rate for a foreign currency. Beneficiary details are required, and the quote is valid for a limited amount of time (60 seconds).&#x20;
- It is mandatory to Include the originator details.&#x20;
- For any payments to Mexico:&#x20;
  - The `accountNumber` and `iban` fields must be left blank.&#x20;
  - `routingCodeType1 `must be &#x20;
  - `routingCodeValue1` must be the 18 digits CLABE number.
- All outbound payments where the “To” currency is one of: INR (India), MYR (Malaysia), and AED (United Arab Emirates) require the use of the [Payment Purpose Code](docId\:kmgW82p6BkYZJX-aojTae) field to be populated with the corresponding PPC for the respective currency.
- The generated quote ID is essential for the next step.&#x20;

**Step 4: Originate International Payment**

Using the obtained quote ID, you use the [originate a payment ](docId\:eVBwhQlRGZlamLd2hRwVd)endpoint to initiate an international payment. The payment process involves clearing holds, acceptance of conversion, and eventual completion. You are notified via a [webhook](docId\:o9fUc2dKPczcl1h4yIChr) about the acceptance or rejection of their payment.

:::hint{type="info"}
Some payments may trigger holds or require additional information from the recipient bank, initiating an RFI (Request for Information) process. Completion of the RFI process is necessary for payment completion. Customers are notified of payment rejection, if any, with reasons provided via a webhook.
:::

[Learn more about payment transactions and settlement](docId\:luDEbxnwU8p7Knb_bDM6I)&#x20;

[title] Reconciliation
[path] Cards/Issuing models/Integrated issuing/Advanced authorization/

## Reconciliation intro

At the end of each day, the partner is responsible for updating Cross River on any external activity that needs to be posted to the customer’s account, and for ensuring that all Cross River account balances match the partner's ledger.  This update takes place through reconciliation. The table below describes each step of this process.

| Reconciliation step           | Description                                                                                                                                                                                                                                                                                      | Detail                                                                                                                     |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| Daily activity reconciliation | Cross River generates a reconcliation file and supplies it to the partner to be used for reconciliation.  The contents will ensure that all messages were received and all transactions were posted correctly.                                                                                   | [Comma-separated (.csv) file](docId:01dCqwxq22LUp2Dl3HP1_) that will include every transaction message received that day.  |
| Daily account balance sync    | After reconciling the daily operations, the partner will post net balance updates to any Cross River accounts that had any activity on that day to ensure the balances match the partner's ledger.<br />If an account has not had any external activity, it is not necessary to post any update. | [POST core/v1/transactions](docId\:n4nww9wNTwf93qt_vdLvh) <br />Use this API to move funds between Cross River accounts.   |

## Cut-off time

Cross River requires partners to post net external activity into Cross River accounts and ensure that all accounts have been updated before midnight U.S. Eastern Time (ET).&#x20;

The transaction cut-off time is 8:00 pm ET, to allow enough time for the end-of-day synchronization process to conclude before midnight. Any external activity that takes place between 8:00 pm and 11:59 pm ET should be posted the following day.

## Reconciliation file record&#x20;

Cross River provides a daily transaction detail file for the purposes of partner reconciliation. This comma-separated (.CSV) file will have all the transaction messages for a given day of operation, including those that were sent to the partner via the authorization stream and any others that may have been posted by the card networks after close of operation.

### Format

:::BlockQuote
MessageTypeIdentifier: \[“AuthorizationRequest”,”AuthorizationAdvice”, “AuthorizationIncremental”, “FinancialAdvice”, “FinancialRequest”, “AuthorizationReversal”, “ClearingReversal”, “Fee”]
Id: Guid
RelatedTransactionId: Guid of Related Transaction Id
Amount: number in cents
TransactionType: \[“Debit”,”Credit”, "BalanceInquiry"]
CardId: Guid for COS Card
AccountNumber: string, nullable
CardAcceptorIdentificationCode: string
MerchantNameLocation: string
MerchantCategoryCode: string
DeviceType: string
IsMultiClearing: bool
IsFinalMultiClearing: bool
IsChargeback: bool
Response: \[“Approve”, “Deny”].
Reason: \[“Approve”, “AccountRestricted”, “InsufficientFunds”, “InactiveCard”, “SuspectedFraud”, “DuplicateTransmission”,"TimeOut", "SystemError"].
LastModifiedAt: MMddyyyy HH\:mm\:ss
:::

### Sample CSV header

:::BlockQuote
`MessageTypeIdentifier,Id,RelatedTransactionId,Amount,TransactionType,CardId,AccountNumber,CardAcceptorIdentificationCode,MerchantNameLocation,MerchantCategoryCode,DeviceType,IsMultiClearing,IsFinalMultiClearing,isChargeback,Response,Reason,LastModifiedAt`
:::

### Sample CSV record

:::BlockQuote
`AuthorizationRequest, dcaa6541-657f-4c59-abbb-b163005b6d8d, fd09a580-bf59-4d0f-a0c2-b2100027a6df,300,Debit,dbd4f4eb-1975-4119-bb44-b1d80110ddef,2429153915,111111111111111,USPS PO 54137206 224 2ND CHENEY WAUSA,1111,POS terminal,FALSE,FALSE,FALSE,Approve,Approve,10202024 22:24:31`
:::


[title] Deposit sweeps
[path] Accounts/Accounts features/

:::CtaButton{label="Deposit Sweeps APIs" docId="Q6S6Db3yL7LxoCbsGhIzn" openInNewTab="true"}

:::

## Cross River deposit sweeps solution

Cross River partners with IntraFi to offer you deposit sweeps. IntraFi connects Cross River to a large network of banks and also handles the complexity of managing deposit placements across the network of institutions. Through our partnership with Intrafi, you can increase FDIC insurance coverage for your customers' deposits up to $170M per depositor (in each insurable capacity).&#x20;

## Why you'd be a great candidate

- You want to offer your customers an insurance limit of up to $170 million per tax ID.
- Your customers deposit accounts have cash balances of over $250,000.

## Prerequisites&#x20;

To implement deposit sweeps, you need to:

1. [Register](https://www.crossriver.com/contact-us)**&#x20;as a Cross River partner:** Required for new partners.
2. [Request](https://crossriver.service-now.com/csm?id=cos_sandbox_request_form\&sys_id=713de878c300b5105d3eafdc7a013184\&sysparm_category=df09f2623310c2906b697d934d5c7b4a)**&#x20;sandbox access:&#x20;**&#x59;ou'll need to:
   - Have a deposit product
   - In addition to your regular configuration, be sure to include IntraFi Sweeps
3. **Sign the service agreement: &#x20;**
   - For a new partner, ensure it covers deposit products.&#x20;
   - For an existing partner, covers deposit IntraFi Sweeps.
4. **Complete sandbox certification:** Ensure all testing is validated and certified.
5. **Obtain production access:&#x20;**&#x50;erform production testing to finalize integration.
6. **Enable deposit IntraFi Sweeps capabilities:&#x20;**&#x41;ctivate services for your account product on Cross River.

:::hint{type="info"}
Before you offer IntraFi Sweeps to your customers, they must accept the IntraFi deposit placement agreement.
:::

## Key features

Once you've added IntraFi Sweeps to your deposit product, our APIs let you offer your customers the ability to:&#x20;

- View deposit placements and balances. See the breakdown of where funds are and how much is at each institution.
- Settlement happens every day. Cross River sends records to IntraFi of what needs to be swept or returned and IntraFi accepts those records.&#x20;
- At the end of day, either Cross River sends a settlement wire of funds to IntraFi or Intrafi return funds to Cross River.
- [Opt out](docId\:VzAWBxjbGlGAVDQddxN8j) of a particular bank. We recommend customers do this if they already have funds at a specific institution.

### Sample flow

In our example, you use Cross River as your partner bank. You offer a deposit product enabled for IntraFi sweeps. The flow looks like this:

1. Your customer opens an account and deposits $750K.
2. This $750K now resides in a Cross River Account.
3. Since this deposit is enabled for sweeps, anything in excess of $250K will get picked up for sweeps through the IntraFi network.
4. Cross River wired $500K to IntraFi.
5. IntraFi handles the relationship with a network of banks. IntraFi sweeps $250K into two FDIC compliant banks.
6. Your customer is insured for the entire available balance of $750K.
7. $250K remains at Cross River, but the available balance remains at $750K.&#x20;
8. Your customer can withdraw from their full balance at any time.

## Reasons to choose Cross River

Once we enable the deposit sweeps add-on for your deposit product, *any&#x20;*&#x6F;f your customer accounts with funds in excess of the FDIC insurance limit are picked up for sweeps and funds will be swept to the IntraFi network.

- **Account balance always visible**: The total account balance remains visible as if all the funds are in a single account.
- **Interest rate stability:** The interest rate on the various accounts remains same as offered in your Cross River deposit account product.
- **Withdraw funds at any time:** The available balance includes the swept balance and your customer can withdraw funds at anytime.&#x20;

## Find out more

- Have a look at our sweeps [APIs](docId:6E-0rluXn21VojfGN5wEE).
- [Get started](docId\:wmg-1Fqwq3bj-D3c3HFfs) with Cross River.<font color="#ae213d"> </font>
- Any questions? Contact Cross River [support](mailto\:cos.support@crossriver.com).


[title] Balance visibility
[path] Cards/Issuing models/Partner-managed/

## Why balance visibility matters

Cross River holds customer funds in FBO (For Benefit Of) accounts. Federal banking regulations require records that show who owns each portion of those funds.

This visibility gives each customer their own $250,000 in FDIC pass-through insurance. Without it, the entire pooled account shares a single $250,000 limit.

How you achieve balance visibility depends on your program's balance model:

- [FBO subledger](docId\:Z5zkbYq_txaz_1bVhxbYG)**:** subledgers in COS
- [FBO pooled account](docId\:Z5zkbYq_txaz_1bVhxbYG)**:** daily balance files

FDIC pass-through insurance eligibility requires balance visibility.

## FDIC pass-through insurance

Pass-through insurance gives customers in pooled accounts individual FDIC coverage. Each customer receives up to $250,000 in coverage. The insurance passes through the custodian (you) to the end customers.

You must meet three regulatory requirements.

### 1. Disclosure

Account records must show that you hold funds in a fiduciary or custodial capacity.

**How you satisfy this:**

- Use an FBO account title like "Partner, Inc. FBO Customers"
- Maintain clear designation in Cross River's account records
- Structure the account to demonstrate the custodial relationship

### 2. Identity ascertainment

Cross River must identify the beneficial owners and their balances. This information must come from account records. You must maintain these records in good faith as part of regular business operations.

**How you satisfy this in the FBO account model:**

- Map each customer ID to a balance in a daily balance file
- You or your processor maintain the file
- Cross River receives the file daily  [via SFTP](docId\:i4b_iqAVcQFp9m1611twC)

**How you satisfy this in the subledger model:**

- Each customer has a subledger in COS
- Each subledger links directly to a customer ID
- Cross River has real-time visibility into balances within its systems

### 3. Beneficial ownership

Customers must actually own the funds. They cannot be creditors with claims against you, the partner. You must hold funds in trust for customers, separate from corporate funds.

**How you satisfy this:**

- Execute legal FBO agreements with Cross River
- Segregate customer funds from your operating accounts
- Restrict use of customer funds for corporate purposes
- Ensure customers have direct beneficial ownership rights

**What does not qualify:**

Depositing customer funds into a general corporate account creates a creditor relationship. If you record "owes customer $X" in an internal database, that is not beneficial ownership. This structure does not qualify for pass-through insurance.

## Balance visibility by model

| Model                                                     | Visibility method  | FDIC compliance mechanism                       |
| --------------------------------------------------------- | ------------------ | ----------------------------------------------- |
| [Card only BIN sponsorship](docId\:Z5zkbYq_txaz_1bVhxbYG) | N/A                | No funds at Cross River, no insurance required  |
| [FBO subledger](docId\:Z5zkbYq_txaz_1bVhxbYG)             | Subledgers in COS  | Internal records provide identity ascertainment |
| [FBO pooled account](docId\:Z5zkbYq_txaz_1bVhxbYG)        | Daily balance file | File provides confirm identity                  |

Both the FBO pooled account and FBO subledger models satisfy the three FDIC requirements differently:&#x20;

- The FBO subledger model gives you real-time visibility.&#x20;
- The FBO pooled account model relies on daily file submission.

[title] Outbound and inbound
[path] Payments/Instant payments/

## Instant Payment flow

Cross River allows you to immediately send or receive funds via Book Transfer, the Federal Reserve's FedNow Service and The Clearing House's Real Time Payment Network. These transfers can be sent to and from Cross River 24/7/365 and the funds are credited instantly, as long as the CRNow, FedNow and RTP networks are operational and the requested service is [supported ](docId\:ady9aKdnxL8FHhlRo5o1D)by the receiving institution.

[Learn more about payment transactions and settlement](docId\:luDEbxnwU8p7Knb_bDM6I)&#x20;

## Outbound credit transfer

The following diagram shows the status and [webhook event](docId\:ffGq2OHYEbWPzn2old6Mc) flows for outbound instant payment credit transfers.

:::hint{type="info"}
See our tutorial to learn how to [send an instant payment](docId:5yRR2S4_i1B34CdzDxR68).
:::

![Instant payments outbound credit transfer flow](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j-HrSkgHVcdD5XrcYQGG8vF-20250122-071841.png)

## Inbound credit transfer

The following diagram shows the status and webhook flows for inbound instant payment credit transfers:

![Instant payments inbound credit transfer flow](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j-8CtWSG8RRlh0E6JqLIJgB-20250122-071951.png)

## Financial institution - supported services

Cross River provides a [directory API](docId\:KdgFKJ1Rv7Dq0VNusrSJw) to retrieve a list of TCH and FedNow services available from a financial institution. A successful API call returns a JSON response listing the supported services for the specific institution. If the institution participates in both networks, the response includes a separate list of services for each.

- The `receiveServices` object contains the service codes.
- The `networkPlatform` attribute specifies the Instant Payments network.

:::hint{type="info"}
Even if the financial institution lists a specific service, it does not guarantee that the creditor or debtor account at that institution is eligible for it.
:::

Using our APIs you can see a complete list of [TCH services](docId\:OuBLrmwxsKT1EpHZtEo0i) and [FedNow services](docId\:OuBLrmwxsKT1EpHZtEo0i).




[title] Payment authorization
[path] Payments/Wires/

:::hint{type="warning"}
**IMPORTANT**
DISCLAIMER:****
This is a new process being provided as a service to customers of Cross River (CR). This process was created so that you can authorize wires online *yourself instead of receiving a callback&#x20;*&#x66;rom Cross River.

As such, you may use this online wire authorization method instead of receiving a callback from Cross River, as long as your wire meets certain conditions mentioned below.

By opting to use this online authorization method *instead* of receiving a callback, you understand that:

- You now have more control of the timeliness of processing wires, but that the process does have additional risks.
- You are now authorizing these wires yourself, and Cross River will no longer verify the wire details with you before processing it.
- Once wires have been authorized by you, funds are directly released. There is *NO RECOURSE* once funds are released.
- You are responsible for:
  - Safekeeping credentials used by you, and your company to initiate, and authorize wires.
  - Setting up approvers in the system in advance to ensure you have enough approvers to provide dual authorization on wires.
:::

See our [video demo](https://www.crossriver.com/products/bank-rails/wires/how-to-authorization-a-wire-using-cos-explorer).

## Verification and authorization

To protect you and your customers, Cross River  may require you to verify the details of your wire before it can be processed. Traditionally, we only obtained this verification using a callback, where we would call you or another member of your team to verify details of the wire.

Authorization is a feature that you can use instead of a callback to verify the details of your wire using COS Explorer. It is a hold type in Explorer, designed to be cleared by you without needing someone from Cross River to clear the hold. Read more about [holds](docId\:eqf1PFq31_W9BcmfO73z3).

:::hint{type="info"}
Payments cannot be authorized using an API. They can only be authorized using COS Explorer or by callback.
:::

Some important details about Authorization:

- Authorization can be configured at the product level or overridden at the account level.
- Cross River only allows Authorization as an alternative to callbacks for wires up to a certain amount. If we require a callback, your wire will be placed in a **Phone Confirmation** hold. This is how the current process works.
- For Authorization to be used instead of a callback, Cross River  requires dual authorization, meaning 2 different people must approve the wire for the hold to clear in Explorer. In addition, the originator of the wire cannot be one of those 2 approvers. So you may need up to 3 different people in total.
- You can still use Authorization as your own "maker-checker" workflow even when Cross River  doesn't require any verification (callback or authorization) to process your wire (which would only apply if the wire is less than a certain amount).
  In this case, you are free to customize thresholds in the system up to a certain amount so that you can require either single or dual authorization.
- In addition to the amount, depending on the source of your wire (whether originated through your own application via an API call to COS or through Explorer directly), Cross River  may still need to place a callback to you before your wire can be processed.
- Cross River will never require you to authorize your wires using both authorization methods (both callback and via COS Explorer). However, if you'd like to authorize your wire using both authorization methods, that is up to you.

Payments over a certain amount have to be authorized, depending on the how the payment is [originated](docId\:sFG6D6itNK09yfROB6oCN). COS Explorer authorization is a feature that you can use instead of a manual callback by the Wire Ops team.&#x20;

See [COS Explorer tutorials](docId\:N5Dy7Sv1CXLV682KMjtSz) to understand how to do:

- Partner wire approval role
- Authorize a wire

## Callbacks

Under [certain conditions](docId\:sFG6D6itNK09yfROB6oCN), the Wire Ops team calls the wire initiator to confirm a request for a wire transfer.

- If the department is closed when the request arrives, the callback will be made the next business day.
- As a courtesy for our clients in the Pacific time zone, our team refrains from performing callbacks until 12:00pm EST.

## Authorize outbound transfers

Authorizations (approvals) are only done through [COS Explorer](docId\:tngiN7QqXuXvuvYwmYsUB) for *outbound* wire transfers originated using the [wire transfer](docId\:mC0d1W1u80umazO85mEIz) API.

- You can define either 1 or 2 approvers in the system in advance
- You can define 2 thresholds for approvals. The lower threshold would require 1 approver, and the higher would require 2. In any case, wires above 1,000,000 USD always require two approvers.
- You can configure the minimum thresholds that require authorization
- Use this feature to avoid callbacks from the Wire Ops team (for wire transfers above 1,000,000 USD but below 5,000,000 USD)
- It is a hold type in Explorer, designed to be cleared by you without needing someone from Cross River to clear the [holds](docId\:eqf1PFq31_W9BcmfO73z3).


[title] ACH FAQ
[path] Payments/ACH/

## ACH – Frequently Asked Questions

This section answers common questions about how ACH works at Cross River, from standard vs. same-day processing, to settlement windows, return reasons, NOCs, and compliance checks.&#x20;

**What is ACH?**
[ACH](docId:3tt7a4nY2fyVMzEEmFwUt) (Automated Clearing House) is a common electronic payment method for direct deposits, bill payments, and other transfers. Cross River supports domestic ACH payments, validating files to meet Nacha rules before sending to the Federal Reserve.

**What services does Cross River offer?**

- [Outbound](docId\:rqqtpgcfU3hQrGMqMuERM) and [Inbound](docId\:rqqtpgcfU3hQrGMqMuERM) ACH payments.&#x20;
- Single or [batched payments](docId\:A6PiIKl4qllwWNkFJ5tXq) (up to 5,000 per batch).&#x20;
- [Same day](docId:0papBZYBjF0LZPac8-tRW) and [Standard](docId:0papBZYBjF0LZPac8-tRW) settlement.
- Early Direct Deposit (EDD) for faster access to payroll.&#x20;

**How do outbound and inbound ACH payments work?**

- [Outbound](docId\:rqqtpgcfU3hQrGMqMuERM) push: Send funds to another account (credit).&#x20;
- Outbound pull: Request funds from another account (debit).&#x20;
- [Inbound](docId\:rqqtpgcfU3hQrGMqMuERM) push: Receive funds from another account (credit).&#x20;
- Inbound pull: Authorize another account to pull funds (debit).&#x20;

**What are ACH payment types?**

- [Standard](docId:0papBZYBjF0LZPac8-tRW)  AC&#x48;**:** Settles in 1–2 business days, used for payroll, bill payments, and recurring transactions.&#x20;
- [Same day](docId:0papBZYBjF0LZPac8-tRW)**&#x20;ACH:** Settles the same business day (max $1,000,000 per transaction).&#x20;
- [Prenotes](docId:0papBZYBjF0LZPac8-tRW)**:** $0.00 test transactions to validate bank account info before sending funds.&#x20;

**What are SEC codes?**
[SEC codes](docId\:M8a5dbzFhH5TV1NytK9Aw) classify ACH transactions per Nacha rules (e.g., PPD for payroll, CCD for corporate payments, WEB for online payments). Correct SEC codes must be included when originating payments.

**What is Early Direct Deposit (EDD)?**
[EED](docId\:LYAdAnyTj_OJAi8XBow98) lets employees access payroll funds as soon as Cross River receives the ACH file, instead of waiting for the scheduled payment date. Requires customer enrollment and payroll delivery to the Federal Reserve on time.

**How does settlement work?**

- [Credits](docId\:qQ3D8sBTuETGRtKaXTK1M): Funds must be available by settlement date (9:00 a.m. local for Standard ACH; multiple windows for Same Day ACH).&#x20;
- [Debits](docId\:qQ3D8sBTuETGRtKaXTK1M): Processed on settlement date; Same Day debits must not post early.&#x20;
- [Returns and reversals](docId\:Jb5sWmyqlTTdp8VQvsuIp)  Governed by Nacha rules for insufficient funds, errors, or disputes.&#x20;

**What are the roles in an ACH transaction?**

- Originator: Initiates payment (credit or debit).&#x20;
- ODFI (Originating Bank): Sends payment to ACH operator.&#x20;
- ACH Operator: Processes and forwards payments (e.g., Federal Reserve).&#x20;
- RDFI (Receiving Bank): Receives and posts payment to receiver account.&#x20;
- Receiver: Final recipient of funds.&#x20;
- Third-party sender (optional)**:** Facilitates origination on behalf of originator or ODFI.&#x20;

**Can ACH support international payments?**
ACH is domestic (US only), but [international](docId:0papBZYBjF0LZPac8-tRW)  transfers can be facilitated via a US intermediary bank using the IAT SEC code.

**How are batch payments handled?**
[Batches](docId\:A6PiIKl4qllwWNkFJ5tXq) are split into individual records for processing. Each payment can go on hold or be sent independently; progress can be tracked via API.

**What are returns and reversals?**

- [Returns](docId\:Jb5sWmyqlTTdp8VQvsuIp)**:** When the RDFI cannot post a payment (e.g., insufficient funds, unauthorized debit).&#x20;
- [Reversals](docId\:Jb5sWmyqlTTdp8VQvsuIp)**:** Correct errors in settled payments (duplicate, wrong amount/account). Must comply with Nacha rules.



:::hint{type="info"}
For more information, please visit our [ACH](docId:3tt7a4nY2fyVMzEEmFwUt) pages.
:::


[title] Time windows
[path] Payments/ACH/

## ACH time windows

When [sending an ACH payment](docId\:ILwmF5qnTMLo30D2H3rCH), it's important to understand how the time of day the transaction is sent and the `serviceType` value impact when the funds actually arrive in the account. You need to be aware of the [processing schedule](docId\:E2visF8PQW49xrCm5AYLY).&#x20;

## Payment effective date

When an ACH payment [settles](docId\:qQ3D8sBTuETGRtKaXTK1M) in an account:

- Any transaction tied to an ACH payment executes on the effective date of the payment.
- The `serviceType` (either *Standard* or *Same Day*) and the configured cutoff time as per your contract influence the effective payment date.
- When the payment is released to the Federal Reserve and receipt of payment is acknowledged, we execute the transactions on the payment `effectiveDate`.

See [payment types](docId:0papBZYBjF0LZPac8-tRW) and the [send an ACH payment](docId\:ILwmF5qnTMLo30D2H3rCH) API.

### Example

- A Same Day payment originates on Tuesday, 8/24 at 12 pm. If the cutoff time is configured for 1 pm, the `effectiveDate` of the payment is 08/24.
- A Same Day payment originates on Tuesday, 8/24 at 3 pm. If the cut off time is configured for 1 pm Same Day cutoff, the `effectiveDate` of the payment is 08/25 because the payment originated after the cutoff time. The service type remains `SameDay` in the system, despite the next-day effective date.
- A Standard payment originates on Tuesday, 08/24. The `effectiveDate` of the payment is 08/25.

## Processing schedule

Cross River batch-sends files received throughout the day. To process a payment for any time window, the files must go through the due diligence process before the cutoff time.

Cross River accepts Same day and Standard transactions in accordance with the FedACH processing schedule shown below. The windows ensure sufficient flexibility in processing and submitting transactions in a timely manner to meet settlement times. Talk to your  about window customization.

As a rule, payments need to be sent to Cross River in advance of when we send the ACH batch file, to be included in that time's payment batch.

:::hint{type="info"}
FedACH policy states: "*Settlement for all ACH items processed by a Reserve Bank pursuant to Operating Circular 4 will be made at the times set forth in the Federal Reserve Policy on Payment System Risk and&#x20;*[this document](https://www.frbservices.org/resources/resource-centers/same-day-ach/fedach-processing-schedule.html)*, as amended from time to time.*"&#x20;
:::

### Same Day ACH window

| Cross River sends ACH batch file   | Transmission deadline | Settlement schedule                  | Restrictions          |
| ---------------------------------- | --------------------- | ------------------------------------ | --------------------- |
| 10:00 am (10:00) Eastern Time (ET) | 10:30 am (10:30) ET   | 1:00 p.m. ET (1300 ET) – current day | Monday through Friday |
| 2:00 pm (14:00) ET                 | 2:45 pm (14:45) ET    | 5:00 p.m. ET (1700 ET) – current day | Monday through Friday |
| 4:00 pm (16:0) ET                  | 4:45 pm (17:45) ET    | 6:00 p.m. ET (1800 ET) – current day | Monday through Friday |

### Standard (future dated forward items) ACH

:::hint{type="info"}
FedACH policy states: "*Settlement for ACH items not eligible for same day will occur at 8:30 a.m. ET on the later of (i) the next banking day or (ii) the settlement date that results from the application of paragraph 3 of Appendix B of Operating Circular 4."&#x20;*
:::

| Cross River sends ACH batch file   | Transmission deadline | Restrictions                                           |
| ---------------------------------- | --------------------- | ------------------------------------------------------ |
| 10:00 am (10:00) Eastern Time (ET) | 10:30 am (10:30) ET   | Monday through Friday                                  |
| 2:00 pm (14:00) ET                 | 2:45 pm (14:45) ET    | Monday through Friday                                  |
| 4:00 pm (16:00) ET                 | 4:45 pm (17:45) ET    | Monday through Friday                                  |
| 7:00 pm (19:00) ET                 | 8:00 pm (20:00) ET    | <font color="#2166AE">*Sunday through Thursday*</font> |
| 10:00 pm (22:00) ET                | 10:45 pm (22:45) ET   | Monday through Friday                                  |
| 1:45 am (01:45) ET                 | 2:15 am (02:45) ET    | Monday through Friday                                  |


[title] Participant roles
[path] Payments/ACH/

## Understand ACH roles

An [ACH payment transaction](docId\:ILwmF5qnTMLo30D2H3rCH) can be complex, involving a number of individuals and financial institutions. The table below describes participants involved in a typical transfer of funds.

| Participant                                         | Explanation                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Originator                                          | The party - individual or company - that originates a [ credit, debit, or non-monetary entry](docId\:qQ3D8sBTuETGRtKaXTK1M) into the ACH payment system for receipt by the Receiver account.<br />The Originator must have an arrangement with the  directly or through a third-party sender and an authorization from the Receiver to initiate the transaction.                                                                                                                                                                                                                                                                                                    |
| Originating Depository Financial Institution (ODFI) | The financial institution that originates the payment and forwards it to the ACH Operator.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ACH Operator                                        | Receives entries from ODFIs, sends the entries to appropriate RDFIs, and performs settlement functions for the financial institutions. Cross River works with the [Federal Reserve Bank (FedACH)](https://www.frbservices.org/financial-services/ach/index.html).                                                                                                                                                                                                                                                                                                                                                                                                   |
| Receiving Depository Financial Institution (RDFI)   | The financial institution that receives the credit or debit entry from the ODFI and posts it in the receiver account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Receiver                                            | The party (individual or company) that receives the debit or credit entry.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Third-Party Service Provider (optional)             | Acts on behalf of the originator, ODFI, or RDFI regarding ACH entries and transactions. This includes creating ACH files for an originator or ODFI and acting as a sending or receiving point for an ODFI or RDFI.<br />A third-party sender acts on behalf of the originator when there is no agreement between the ODFI and originator for ACH origination services. A third-party sender is never the originator for entries it transmits on behalf of another organization. A third-party sender of entries may be an originator of other entries.<br />Cross River can act as the ODFI for outbound ACH transactions or the RDFI for inbound ACH transactions. |

:::hint{type="info"}
A Depository Financial Institution (DFI) can act as an RDFI without being an ODFI. If a DFI wants to originate ACH entries, it must act as both the ODFI and the RDFI. The ODFI must be able to receive payment returns.
:::

All parties in an ACH transaction must comply with [Nacha rules](docId\:qQ3D8sBTuETGRtKaXTK1M).

[title] Wires
[path] Payments/

:::CtaButton{label="Wires APIs" docId="Mm_yqgvcWNtsGDLnNX-og" openInNewTab="true"}

:::

## Cross River wires solution

Wire transfers serve as a reliable method for both domestic and international payments. As a Cross River customer, you can transfer money electronically to a recipient, who can typically access the funds on the same day.

Wire transfers are conducted through Fedwire®, which is operated by the US Federal Reserve. When a wire payment is accepted and acknowledged by the Federal Reserve, it is assigned an Input Messaging Accountability Data (IMAD) number, allowing you to track the payment via the FedWire Funds Transfer system.

For both [outbound](docId\:r5Em5zsqCEnn70GiAiwsT) and [inbound](docId\:r5Em5zsqCEnn70GiAiwsT) international wire transfers at Cross River, transactions are processed through a domestic intermediary bank using Fedwire. Additionally, to send or receive international wires in USD, you must contact the beneficiary bank to obtain the necessary wire transfer instructions.

## What Cross River offers

- ****[Outbound wires](docId\:r5Em5zsqCEnn70GiAiwsT): Send a payment to an account outside Cross River
- [Inbound wires](docId\:r5Em5zsqCEnn70GiAiwsT): Receive a payment from an account outside Cross River
- [Fedwire](https://www.frbservices.org/financial-services/wires): Full support is available for wire transfers.
- [Domestic and international](docId\:sFG6D6itNK09yfROB6oCN): Account funding using wire transfers.
- [Drawdown request](docId\:sFG6D6itNK09yfROB6oCN): Request funds from an account outside Cross River to be sent to a Cross River account.
- [Drawdown response](docId\:sFG6D6itNK09yfROB6oCN)**:** Respond to a request for funds received from an account outside Cross River.

## Find out more

- [Outbound and inbound](docId\:r5Em5zsqCEnn70GiAiwsT)&#x20;
- [Payment types](docId\:sFG6D6itNK09yfROB6oCN)&#x20;
- [Payment authorization](docId\:By1OOJJEjkCo2_P-yGTA-)&#x20;
- [Time window and funds availability](docId\:JoJixVBqs49cuWK3UVJ5m)&#x20;
- [Holds](docId\:eqf1PFq31_W9BcmfO73z3)&#x20;

## Tutorials

See our tutorials to learn how to:

| Through APIs                                                   | Through COS Explorer                                     |
| -------------------------------------------------------------- | -------------------------------------------------------- |
| [Send a wire payment](docId\:PtkMaOjX6exmQAsKrcJNv)            | [Send a Wire](docId:7jfMNFCuzGkxG1hun7qEp)               |
| [Send a drawdown request](docId:91eId7VJOqz4lK3xcERKN)         | [Find a Wire](docId\:kw9NunIkqkD9iJvxRCGu9)              |
| [Respond to a drawdown request](docId\:XhGAI8DtioKUeD9qvar3R)  | [Cancel a Wire](docId\:XcgSt7W-uy7Tx3pyAibRE)            |
| [Simulate an inbound wire](docId:22hF8HedChZVKiHnSFrYC)        | [Return requests](docId:9-7XKUrdbnZwk33TM2Sr0)           |
|                                                                | [Originate drawdown](docId\:xYyi008QfPgCvVhQQCoM9)       |
|                                                                | [Investigation requests](docId\:p-Cl9gnzvKi3S0S3SdtSs)   |
|                                                                | [Create payment template](docId\:f5O9TXlLKdIsC3OVULE_H)  |






[title] Reporting and compliance
[path] Cards/

## Reporting and compliance intro

As the issuing bank and BIN sponsor, Cross River provides card network access and regulatory oversight for card programs. Cross River maintains full responsibility for regulatory and network compliance for all partner-managed Issuing programs.

You must submit regular reporting to Cross River to maintain compliance with regulatory requirements, credit risk management obligations, and card network operating rules. Reporting lets Cross River fulfill its role as issuing bank and BIN sponsor. This maintains oversight of partner program activity and risk exposure.

To meet these obligations, submit regular reports to Cross River.&#x20;

You must submit these reports:

- ****[Daily](docId\:i4b_iqAVcQFp9m1611twC)**&#x20;transaction, card balance and network settlement files** for transaction monitoring and reconciliation
- ****[Daily](docId\:i4b_iqAVcQFp9m1611twC)**&#x20;servicing tapes** for servicing events monitoring and reconciliation
- ****[Monthly](docId\:i4b_iqAVcQFp9m1611twC)**&#x20;credit risk metrics** for credit card programs and chargeback metrics for all programs
- ****[Quarterly](docId\:i4b_iqAVcQFp9m1611twC)**&#x20;card network reports** for Visa and Mastercard compliance

Submit timely and accurate reports to maintain a compliant card program under Cross River’s sponsorship.

## Daily reporting requirements

### Daily files

You or your processors must deliver three types of daily files:

- [Transaction master file](docId\:PVjJRzxx5Ut2Km9q2lyt_)**:&#x20;**&#x43;aptures all balance-affecting transactions you or the processor posted into the ledger during the previous business day. This file supports transaction monitoring, fraud detection, and settlement processes.
- [Daily balance file](docId\:TqfXbaVGD8UdqwlgL7bLH)**:&#x20;**&#x50;rovides the ending balance and status for each issued card at the end of each business day. This file supports account reconciliation, negative balance monitoring, and charge-off reporting. It also supports other Cross River operational and compliance oversight functions.
- **Network settlement file:** Provides network settlement details to reconcile against daily payments to the network.
- [Servicing data](docId:2imBAozOUuzQ-cUrNX7th)**:** Captures all servicing data on a daily basis. This is required for credit cards issued by Cross River. The data includes principal/interest breakdown, next due date, and delinquency info. The data is submitted via SFTP.

### Balance visibility for FDIC compliance

For partner-managed programs using the FBO account model, the daily card balances file is critical for FDIC pass-through insurance compliance. In this model, Cross River holds customer funds and you maintain the external ledger. This file lets Cross River ascertain beneficial owner identity and ownership interests as required by federal banking regulations.

Without this visibility, individual customers would not benefit from up to $250,000 FDIC pass-through insurance coverage. The balance file must accurately represent each customer's ownership interest in the pooled FBO account.

For more information on balance visibility requirements and the three partner-managed balance models, refer to [Balance and ledger models](docId\:Z5zkbYq_txaz_1bVhxbYG).

### File delivery

Daily files must be securely delivered via Cross River’s [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25) (Secure File Transfer Protocol) server. Encrypt them using PGP (Pretty Good Privacy). Format them according to Cross River’s data exchange specifications.

Once a partner is set up for SFTP, they must ensure they have a PROD\CreditCardProcessing\DailyReports\ subfolder. This goes in their Cross River SFTP folder. This is where they will place the files. Partners should review the Cross River Card Files specification and data dictionary and submit sample files for validation to Cross River prior to launching their card program.

The Card Files monitor money movement and key data elements. These elements relate to compliance and BSA/AML. They also let Cross River and their partners to reconcile card program operation and account balances.

### Files format

The Cross River Card Files must be formatted in a specific way. Cross River prefers comma-separated value (.CSV) files. The partner or their processor delivers them via Cross River's SFTP. Encrypt files with PGP using Cross River’s public key. File naming convention is flexible, but we advise Partners to include the date in the name. Append .pgp to encrypted file names. Lastly, make the file names unique.

Cross River can work with you to discuss adjustments to the files if your processor already has files that fulfill the same purpose. Once you and Cross River agree on the files, the project for data ingestion can begin.

## Monthly reporting requirements

### Credit card programs only

:::hint{type="info"}
Monthly reporting is mandatory for credit card programs to maintain portfolio transparency and meet regulatory obligations.
:::

If your program issues credit cards, you must also deliver [credit risk data reports](docId\:jKTOt5UGr29dnMBqS4fQm)  on a monthly basis.

- **Purpose:&#x20;**&#x54;o provide Cross River with credit risk indicators daily transaction monitoring doesn't show, supporting risk management and regulatory oversight.
- **Required data:&#x20;**&#x4D;etrics such as application volumes, approvals, declines, credit limits you assigned, delinquency rates (30/60/90+ days past due), charge-offs, fraud losses, recoveries, and collection activity.
- **Format and delivery:**
  - CSV file format according to Cross River’s specification.
  - Delivered to the /ClientCredit subfolder on Cross River’s SFTP server.
  - All required metrics must be reported, with zeros for metrics that don't apply.

### All card programs

:::hint{type="info"}
All programs must submit monthly dispute and chargeback reports including summary data per the below
:::

[Monthly dispute and chargeback reporting](docId\:qPdMDs9mO8lOySCIxKh4_)****

- Includes summary dispute and chargeback indicators across the partner’s program portfolio.
- Must include number of disputed transactions and amounts, and the dispute rate as a percentage of disputes to total transactions and program spend.
- Must include number of chargeback transactions and amounts, and the chargeback rate as a percentage of chargebacks to total transactions and program spend.

Monthly files must be securely uploaded to Cross Riverʼs ***SFTP&#x20;***&#x73;erver, encrypted using PGP.

## Quarterly reporting requirements

### All card programs

:::hint{type="info"}
All programs must submit quarterly network reports to ensure compliance with Visa and Mastercard operating rules.
:::

- **Visa Quarterly Operating Certificate (QOC):**
  - Reports Visa-branded card activity associated with the BINs Cross River provided to the partner.

:::hint{type="warning" indent="3"}
**IMPORTANT:&#x20;**&#x53;ubmit to Cross River no later than the 5th business day following the end of each calendar quarter.
:::

:::Paragraph{listStyleType="disc" indent="2"}
**Mandatory** file format: Visa-provided Excel template.
:::

:::Paragraph{listStyleType="disc" indent="2"}
[Quarterly report templates](docId\:wXzBeKn3HV0pQbK0C6UQA)&#x20;
:::

- **Mastercard Quarterly Mastercard Report (QMR):**
  - Reports Mastercard, Maestro, and Cirrus-branded card activity associated with the BINs Cross River provided to the partner.

:::hint{type="warning" indent="3"}
**IMPORTANT:&#x20;**&#x4D;ust be submitted to Cross River no later than the second Friday after each quarter ends.
:::





:::Paragraph{listStyleType="disc" indent="2"}
**Mandatory&#x20;**&#x66;ile format: Mastercard-provided Excel template.
:::

:::Paragraph{listStyleType="disc" indent="2"}
[Quarterly report templates](docId\:wXzBeKn3HV0pQbK0C6UQA)&#x20;
:::

Quarterly files must be securely uploaded to Cross River’s [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25)  server, encrypted using PGP.


[title] Statements and tax forms
[path] Accounts/Accounts features/

:::hint{type="warning"}
**IMPORTANT**
Only pull documents as needed. If you want to pull a large number of documents, speak to your .
:::

## Statements

For each deposit account CR provides a monthly account statement. The statement contains all posted activity inclusive of the period start and end dates. The statement lists details according to the posting sequence of the account activity records. The document is retrievable as a PDF file through COS Explorer or using the [GET /v1/dda/accounts/\{accountNumber}/statements/\{statementId}/documents/\{documentId}](docId:0UFqTtK_tYvg-zF44H0Cr) endpoint.

[Subledgers](docId\:OdZF-4AInebu2YUz5GRCs) do not have bank statements.

## Tax document retrieval

Cross River enables you to get PDFs of tax documents such as IRS Form 1099. When your customer wants to see a tax document, use our APIs to retrieve and display the PDF in your app. Use COS Explorer if you want to retrieve a single document directly.

Your  lets you know when a specific type of tax document is available for download.

Tax document retrieval uses these API endpoints:

- [Tax document list](docId\:T5K0QeW58PeTTey4QlG2j)&#x20;
- [Tax document](docId\:hHDTdVSPONreJhJT_0rhw)&#x20;

:::hint{type="info"}
The IRS requires Cross River to provide account holders with an IRS Form 1099 for earnings equal to or greater than $10.00, per taxpayer identification number (TIN). Should the customer have more than one account, the system generates a 1099 for *each* account if the earnings of *all* accounts total $10.00 or more.
:::


[title] Returns and reversals
[path] Payments/ACH/

## ACH returns and reversals

When an ACH payment cannot be accepted by the receiving financial institution, it is *returned* to the originator by the receiving bank (). If a payment has settled successfully but was sent in error, it can be *reversed* by the originating bank (). Both returns and reversals are governed by Nacha Operating Rules, which define when and how each may be used.

## Returns

A return occurs when the RDFI cannot post the entry to the receiver’s account. The typical flow is:

1. The Originator (sender) initiates an ACH payment.
2. The RDFI determines it cannot accept or post the payment (for example, account closed, invalid account, insufficient funds, or consumer claims the debit was unauthorized).
3. The RDFI sends the transaction back to the ODFI with a standard [Nacha return code](docId\:oDtRP7ARfnpQuFEGy4Sfh)  (R01–R85) identifying the reason.

You can use our [Returns](docId:7ji1ODgdnaKSdq88PIVDu) API to return a payment.

A Cross River  is associated with an *inbound* payment only after it has successfully posted to the receiver’s Cross River account. Therefore, you will not see inbound payments that fail posting for reasons such as an invalid routing number or an account restriction.

### Timing rules

- Many administrative or processing returns must be transmitted by midnight of the second banking day following settlement.
- Consumer unauthorized debit returns (for example, R10/R11) may be transmitted for up to 60 calendar days after settlement, provided the RDFI obtains a Written Statement of Unauthorized Debit (WSUD). RDFIs must return such items no later than the opening of the sixth banking day after completing WSUD review.

:::hint{type="info"}
## ACH return payment processing update

Effective Date: 9/29/26

This update improves ACH return timeframe validation for reversal payments.

- **Standard inbound payments:** Uses the payment's effective date (no change)
- **Inbound reversals:** Uses the payment's creation date (new behavior)

This ensures reversal returns follow the correct NACHA timeframe rules. No action is required; the system automatically applies the correct logic based on payment type.

**Technical details**

1. Inbound payment with description **"REVERSAL"** → uses Creation Date
2. All other inbound payments → uses Effective Date
:::

## Reversals

A reversal is an outbound entry initiated by the ODFI to correct an incorrect original entry. Examples of incorrect entries include:

- Duplicate entry
- Incorrect receiver account
- Incorrect amount
- Payment sent earlier than intended (for outbound pull debits)
- Payment sent later than intended (for outbound push credits)

When you initiate a reversal via API, you must supply the original payment ID and a reversal reason using the [Reversals](docId\:vzl0bctqLshMKGDQ13zjT) endpoint.

You can also [manage reversals](docId\:EI1pm4iL1sOOTT-7iX45N) using the COS Explorer interface.

### Nacha requirements

- A reversal must be originated within five banking days of the original entry’s settlement date.
- The originator must make a reasonable attempt to notify the receiver of the reversal and the reason no later than the reversal’s settlement date.
- Improper reversals may themselves be returned by the RDFI (for example, code R11— consumer, up to 60 days, code R17—non-consumer, within 2 banking days).
- Reversals are not guaranteed to recover funds. The RDFI may reject a reversal if the account is closed, lacks funds, or the receiver disputes.


[title] Integrated card actions
[path] Cards/Card lifecycle/

:::CtaButton{label="Cards APIs" docId="ctPgBWhSjawyngKlCY73a" openInNewTab="true"}

:::

## Card actions

COS supports full card lifecycle management, enabling partners to control card operations via:

- COS APIs (direct system-to-system integration)
- COS Explorer (Cross River’s operational UI)

Key lifecycle events include:

- [Card creation](docId\:JqNuGyrOXQL_0n5hPyCmv)**:&#x20;**&#x50;hysical or virtual.&#x20;
- [Card activation](docId\:JqNuGyrOXQL_0n5hPyCmv)**:&#x20;**&#x20;Transition from Unactivated to Active.&#x20;
- [Set card PIN](docId\:JqNuGyrOXQL_0n5hPyCmv)**:&#x20;**&#x53;et intial PIN for the card.
- [Replacement](docId\:JqNuGyrOXQL_0n5hPyCmv)**&#x20;or re-issue:&#x20;**&#x20;For lost, stolen, or expired cards
- **Suspension and unsuspension:&#x20;**&#x54;emporary blocks
- **Card closure:&#x20;**&#x50;ermanent deactivation

:::hint{type="warning"}
Once a card is closed, it cannot be reactivated. A new card must be issued if card access is needed again.
:::

## Card creation

For card creation using our [create a new card](docId\:EJCciNVxb0oMKjA567gUM) API endpoint, you need a valid deposit account number, the configuration ID, and other card-specific information such as the name and address of the cardholder. A newly created card has the status `Unactivated`. When the card is successfully created, the order status is `OrderPending`.

:::hint{type="info"}
See our tutorial to learn how to [create a card](docId\:RZZRD7am62-KTyv9G1n9-).
:::

## Card activation&#x20;

Cards can only be used once they are activated. To activate the card, use the  [Activate card by ID](docId\:E_U42earZiwDZOiIXuunI) API endpoint with the COS card ID.

:::hint{type="info"}
See our tutorial to learn how to [activate a card](docId\:WZYv6QGm31LDTeAGrt2fc).
:::

## Set card PIN

Use the [Set PIN](docId\:yFZLDNDP2NxSd7hQ2tIKu)  API endpoint to set a customer personal identification number (PIN). This will be the customer's ATM PIN.

## Card replacement

Order a replacement for damaged, lost or stolen cards using the [replace](docId\:AxI2pLSUCMHXDN8-vhCoH) API endpoint. Damaged cards remain active until the cardholder activates the replacement card. Lost or stolen cards are immediately closed and a replacement card is issued.

:::hint{type="warning"}
**IMPORTANT**
When you replace a card, you must make the replacement card the primary card in the Cross River system to avoid issues once the card is supplied.
:::


[title] Early direct deposit
[path] Payments/ACH/

## Cross River ACH early direct deposit

Generally, when an employer deposits a paycheck directly into an employee bank account, the money only becomes available to the employee up to 2 days later.

Cross River Early Direct Deposit (EDD) gives your customer earlier access to their money if they receive their paycheck directly to their bank account. Cross River gives your customers EDD functionality for payments sent via ACH. Funds settle when Cross River gets the ACH file from the Federal Reserve, instead of waiting to release the money to the account on the payment effective date. When you apply EDD to a specific product type, all your customers using that product are eligible.

:::hint{type="info"}
While EDD is primarily used for paycheck deposits, any deposit amount that falls between 0 and the EDD threshold set for the deposit account product type and has the values shown in the [sandbox testing section](docId\:LYAdAnyTj_OJAi8XBow98) will be treated as an EDD.
:::

## Requirements for your customers

Ensure that your customers:

- Understand the requirements and limitations
- Understand that EDD is not guaranteed and depends on timely transfer of ACH files
- Have checking or savings accounts set up with Cross River
- Are enrolled for direct deposit with their employers. Once EDD is enabled, 1 to 2 pay cycles are usually necessary before it takes effect.

## Typical flow

1. Your customer's employer instructs their bank or payroll agency to initiate payroll payment.
2. The employer’s bank sends an ACH file to the Federal Reserve.
3. The Federal Reserve sends the ACH file to Cross River.
4. Cross River settles funds to customer’s account on the same day the ACH file is received (up to 2 days before the effective date). A memo post\* is added to the available balance. On the effective date, the memo post is replaced seamlessly by a full transfer.
5. The customer can access funds upon settlement.

\*[Memo posts](docId\:W9F_pj1EuDrAzI9f2f4mF) indicate that funds will go out or come in and affect the available balance accordingly. For example, with debit cards the available balance drops. In this case, the available balance increases.

## Enable early direct deposit

Reach out to your  to enable Early Direct Deposit. Once you sign a contract addendum, COS Ops enables EDD for your customers.

## Limitations

Be aware of the following limitations:

- EDD is not guaranteed and depends on timely transfer of ACH files.
- The customer's employer must initiate the payroll payment on time, and the employer’s bank or payroll agency must ensure delivery of ACH files to the Federal Reserve before the effective date.
- The amount sent must be greater than 0 but less than the early ACH threshold configured for your product.

## Test in the sandbox

Once we enable EDD for you in the sandbox, call the simulate ACH inbound payment endpoint to generate an ACH credit transfer that matches the EDD requirements.

1. [Register](docId\:BN5XtgkJogBe-CtwomCbS) for the `Ach.Payment.ReceivedEarly` webhook.
2. Use the ACH `POST /v1/payments/simulated-inbound-originations` endpoint with these values for the following attributes:
   - `transactionType` = **Push**
   - `secCode` = **PPD**
   - `serviceType` = **Standard**
3. Make sure the amount you send is greater than 0 but less than the EDD payment threshold configured by Cross River for your deposit account product.


[title] SEC codes
[path] Payments/ACH/

## Understand SEC codes

A SEC code indicates the Standard Entry Class required by  for every ACH transaction. When you [originate an ACH payment](docId\:ILwmF5qnTMLo30D2H3rCH) by API, you enter this code in the `secCode` field of the request.&#x20;

Learn more about SEC codes on the [Nacha website](https://achdevguide.nacha.org/ach-file-details).

## Common SEC codes

The table below explains common SEC codes.

:::hint{type="info"}
Your Operations Support Team will guide you about which SEC code to use based on the use case you support.
:::

| Code	                                | Name	                                                      | Description	                                                                                                                                                                                                                                                                                                                                      | Type                                                              | Transaction Type          | Credit/Debit    |
| ------------------------------------ | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------- | --------------- |
| ARC                                  | Accounts Receivable Entry                                  | A single debit entry to an account initiated for purchases or payments that are made in person, via US mail, or placing the payment in a dropbox.                                                                                                                                                                                                 | Consumer or Non-Consumer<br />Mail Order or Retail                | Single Entry              | Debit only      |
| BOC                                  | Back Office Conversion Entry                               | A single debit entry to an account for in-person purchases or payments made at the point-of-purchase. *Check is not returned to check writer.*                                                                                                                                                                                                    | Consumer or Non-Consumer<br />Retail                              | Single Entry              | Debit only      |
| CCD                                  | Corporate Credit/Debit Entry                               | Funds are transferred between unrelated corporate entities or transferred as intra-company cash concentration and disbursement transactions.                                                                                                                                                                                                      | Non-Consumer                                                      | Single or Recurring Entry | Credit/Debit    |
|                                      |                                                            | Proof of Authorization for transactions ran on the web using CCD will adhere to the same requirements as a web transaction.                                                                                                                                                                                                                       | Retail, Phone Order, Ecommerce, and Mail Order                    | Single or Recurring Entry | Credit/Debit    |
| CIE                                  | Customer Initiated Entry                                   | A single credit entry initiated by a consumer (originator) to a non-consumer account. CIE is a consumer-initiated credit entry, a credit push to a merchant, typically used by a financial institution's or third-party's bill pay service and would be not be Originated by a merchant.                                                          | Consumer                                                          | Single Entry              | Credit only     |
| COR                                  | Notification of Change, or Refused Notification of Change  | This Standard Entry Class Code is used by an RDFI or ODFI when originating a Notification of Change or Refused Notification of Change in automated format. It is also used by the ACH operator that converts paper Notifications of Change to automated format.                                                                                   | Consumer or Non-Consumer                                          | N/A                       | N/A             |
| CTX                                  | Corporate Trade Exchange<br />                             | Used to transfer funds between a buyer's and a seller's bank accounts.<br />                                                                                                                                                                                                                                                                      | Non-Consumer                                                      | Single or Recurring Entry | Credit/Debit    |
| DNE (Federal Govt. Agency Use Only)  | Death Notification Entry                                   | A non-monetary entry from a Federal Government agency. Notifies the Financial Institution that the recipient of a government benefit has passed away.                                                                                                                                                                                             | Consumer                                                          | N/A                       | N/A             |
| ENR                                  | Automated Enrollment Entry                                 | A Non-Monetary Entry that triggers the origination of&#xD;<br />ACH credit or debit transactions to the account holder at the DFI.&#xD;<br />The ENR process allows DFIs to transmit information to Federal Government agencies, on behalf of their account holders, that serves as enrollment for either&#xD;<br />ACH credit or debit activity. | Non-Consumer (Federal Government Agency)                          | N/A                       | N/A             |
| IAT                                  | International ACH Transaction                              | Credit or Debit Entry is part of a payment transaction that involves a financial agency's office not located within the territorial jurisdiction of the United States.<br />NOTE: This SEC code is implemented only for very specific merchants and is not generally available.                                                                   | Consumer or Non-Consumer                                          | Single or Recurring Entry | Credit/Debit    |
| POS                                  | Point of Sale payments                                     | A transaction made made with a debit card. The [POS card transaction type](docId\:oDtRP7ARfnpQuFEGy4Sfh)gives further information about the exact transaction.                                                                                                                                                                                    | Consumer                                                          | Single Entry              | Credit/Debit    |
| PPD                                  | Prearranged Payment and Deposit Entry                      | A single or recurring credit transaction for payment of payroll, expense reimbursement, dividends, retirement, interest, etc.                                                                                                                                                                                                                     | Consumer                                                          | Single or Recurring Entry | Credit/Debit    |
| RCK                                  | Re-presented Check Entry                                   | A re-presented check entry with security measures in place.                                                                                                                                                                                                                                                                                       | Consumer<br />                                                    | Single Entry              | Debit           |
| TEL                                  | Telephone-Initiated&#xD;<br />Entry                        | A single or recurring debit transaction initiated orally via the telephone.                                                                                                                                                                                                                                                                       | Consumer                                                          | Single or Recurring Entry | Debit           |
| WEB                                  | Internet-Initiated&#xD;<br />Entry                         | **Credit** - A single or recurring credit transaction from the account of a natural person to the account of a natural person. Cannot be used for business-to-consumer transactions.&#xD;<br />**Debit** - A single or recurring debit transaction initiated during a secure (minimum 128-bit encryption) internet or mobile session.             | Consumer<br /><br /><br /><br /><br /><br /><br /><br />Ecommerce | Single or Recurring Entry | Credit or Debit |



#


[title] Partner-managed ACH processing
[path] Cards/Issuing models/Partner-managed/

## Originate and receive ACH payments

Partner-managed card programs under the [FBO pooled account model](docId\:Z5zkbYq_txaz_1bVhxbYG) can use Cross River to originate and receive ACH payments. Cross River maps partner-managed customer accounts to the program's FBO account using  , enabling ACH payments to flow through that account.

## How it works

Partner-managed customer accounts do not exist individually in COS in the FBO pooled account model. Instead, Cross River uses account number prefixes to route ACH payments to the correct FBO account.

**Key mechanism:** You reserve account number ranges using 4-to-7-digit prefixes assigned to your program. COS matches the prefix to your FBO account and routes ACH payments accordingly.

## Inbound ACH

Cross River receives ACH payment instructions from the Federal Reserve. These instructions include transactions for partner-managed account numbers that do not exist as individual accounts in COS.

**Process:**

1. FED sends instructions to Cross River containing ACH payment
2. Payment includes partner-managed account number
3. COS reads the prefix (e.g., 1234) and matches it to partner's FBO account
4. COS posts the inbound ACH to the FBO account
5. You receive ACH instructions from Cross River via API or files, depending on your integration.

You must reconcile inbound ACH with your external ledger and update customer balances accordingly. FBO balances are updated as payments post in COS.

You are required to include ACH activity in the transaction detail file you provide to Cross River for transaction monitoring. Like with all other transactions, ACH transaction records must include the user and card token associated to the customer in COS.

## External prefix configuration

You must work with your Cross River representative to:

1. Reserve account number prefixes for your program
2. Map prefixes to the correct FBO account in COS
3. Define prefix length (4-7 digits)
4. Document account numbering scheme

**Important:** Prefixes must be unique within Cross River's system to avoid routing errors.

## Related topics

- [Balance and ledger models](docId\:Z5zkbYq_txaz_1bVhxbYG): Understand how ACH integrates with your balance model
- [Reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC): Daily transaction file requirements

[title] Payment types
[path] Payments/Instant payments/

## Instant Payment types

To send or receive instant payments you need to know the following basic information about credit transfers and  [request for payments](docId\:oJcyKDvHGpjflu3152-iM) (RfP) as well as the roles of the [participants](docId\:AL5W3U23-A4yt3JppL3sZ).

## Credit transfer

Instant Payments transfer funds in real time over networks like RTP®, FedNow®, or CRNow. This uses the [originate a credit transfer](docId:727H0GkQerqHAFKEy67Uu) API.

- **Message Type**: pacs.008
- **Purpose**: Sends funds from the *debtor&#x20;*(account initiating payment) to the *creditor&#x20;*(account receiving payment).
- **Debtor FI**: The financial institution sending the payment.
- **Creditor FI**: The financial institution receiving the payment.
- **Type of Payment**: Push payment (initiated by the sender).

**Key notes**

- Credit transfers are one-way payments initiated by the sender.
- Cross River enforces a daily send limit for Instant Payments per partner.&#x20;
- CRNow facilitates instant credit transfers within Cross River’s network, providing faster internal partner payments.

Refer to the diagram below for the end-to-end credit transfer process, showing interactions between the debtor, creditor, their financial institutions, and the instant payments network.

![Instant payments basic flow](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j-3kBk8P2cJO8x4oqcNZn50-20250126-080001.png)

## Request for payment

Request for Payment (RfP) enables authorized pull payments by requesting funds from the debtor. This uses the [originate a payment request](docId\:sXhwvqNXmi_6A8hyNyUPF)  API.

- **Message Type**: pain.013
- **Purpose**: Allows the creditor to send a payment request to the debtor, who must **authorize the payment**.
- **Debtor Role**: Reviews and approves the request before the transfer occurs.
- **Type of Payment**: Pre-authorized pull payment (initiated by the receiver through a request).

**Key notes**

- RfPs offer a way to collect payments securely and transparently.
- Instant Payments networks do not support automatic pull payments. Payments only proceed after debtor authorization.



Refer to the diagram below that shows the flow from the initial request by the creditor to debtor authorization and final payment execution.

![Request for Payment flow](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j-tVL8H27rS0MLz4GMnD8jL-20250126-075814.png)


[title] Supported countries
[path] Payments/International payments/

## Cross River international payments support

The table below includes the countries Cross River's international payments cover. It also shows supported currencies, and whether the payment is available using SWIFT (USD or Local) or Local Rail or both. In addition, the foreign exchange (FX) cutoff times are included in local time.

:::hint{type="info"}
We can expand country coverage based on your needs and use case.&#x20;
:::

## Local rail currency limits

International money transfer limits are imposed by Cross River to ensure compliance with international regulations.&#x20;

These limits do not apply to SWIFT transactions, as there is no regulatory maximum amount for SWIFT transfers. &#x20;

:::hint{type="info"}
The countries in the [Countries supported](docId\:p_Cb7wXlzG8of31c9xlgj) table marked with an asterisk (\*) in the **Local Rail (Local Currency)** column have maximum transfer limits, with the amounts listed.
:::

## Payment purpose codes

All outbound payments where the “To” currency is one of: CNY (China), INR (India), MYR (Malaysia), and AED (United Arab Emirates) require the use of the Payment Purpose Code field to be populated with the corresponding PPC for the respective currency. For more details, refer to [Payment purpose codes](docId\:kmgW82p6BkYZJX-aojTae).

## Transfer from USD to USD

The cutoff time for transfers from USD to USD is 11:30 (EST).

## Countries supported

| Country                                                                                                                                                                                                                                                                                 | Supported Currencies                                  | SWIFT for supported currencies & FX cutoff (EST) | Local Rail (local currency) & FX cutoff (EST) & currency limit |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------- |
| Australia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-XveNj4PrQb_wG-xmwH9fE-20250804-092431.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                            | Australian Dollar (AUD), Euro (EUR), US Dollar (USD)  | AUD - 09:00 <br />EUR - 09:30<br />USD - 11:30   | AUD - 08:30                                                    |
| Austria<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-TdRdmUr1QIHOar0yO3yGu-20250804-092431.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                              | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Belgium<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-Y-cEx3HU0E2drr7dVHIyA-20250804-092431.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                              | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Brazil<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-4wecePMdnxs7BKgBBcvC9-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                               | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Canada<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-c2N-t49NpwnfWJg1rtSQa-20250804-092431.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                               | Canadian Dollar (CAD), Euro (EUR), US Dollar (USD)    | CAD - 11:45<br />EUR - 09:30<br />USD - 11:30    | CAD - 11:00<br />\*200,000 CAD                                 |
| Chile<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/4a0Fk-dj0ZCbctuM-qBvk_chile-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="666" darkWidth="1000" darkHeight="666" showCaption="false"}               | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| China<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/G1zrAP4ZZKDPLlir_WC9y_china.png" size="30" isUploading="false" position="flex-start" width="512" height="512" darkWidth="512" darkHeight="512" showCaption="false"}                      | US Dollar (USD), CNY (Chinese Yuan)                   | Yes<br />USD - 11:30<br />CNY - 04:00            | No                                                             |
| Colombia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-g35Y63hrbt45V83hrMnEF-20250804-094002.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                             | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Costa Rica<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/lpiXgtGoq1ibJD_IEZPuQ_costa-rica.png" size="30" isUploading="false" position="flex-start" width="512" height="512" darkWidth="512" darkHeight="512" showCaption="false"}            | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Croatia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-GXlU93RqO1YW00g4pgVtZ-20250804-092431.png" size="30" isUploading="false" position="flex-start" width="512" height="512" darkWidth="512" darkHeight="512" showCaption="false"}          | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | No                                                             |
| Cyprus<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/9TDrYVnXSypIzlynNWr5l_cyprus-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="666" darkWidth="1000" darkHeight="666" showCaption="false"}             | Euro (EUR), US Dollar (USD)                           | Yes<br />EUR - 09:30<br />USD - 11:30            | EUR - 09:00                                                    |
| Estonia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-GFTqIUJXv-laWjx1x46Xk-20250804-092431.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                              | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Finland<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-TMlWH2JVRMzCTMuIyaFW0-20250804-092431.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                              | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| France<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-DRbX1K4qqZZPDOjoLF1Mz-20250804-092431.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                               | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Germany<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-c4dreglyXirImUBDN-De_-20250804-094003.png" size="30" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                              | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Georgia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/QluAdpDCNBrNeEWgaBmyW_georgia-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="667" darkWidth="1000" darkHeight="667" showCaption="false"}           | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Greece<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-yASYi9O0U9mlEcPuUdkqu-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                               | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Guatemala<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-ztHDHEPgKuRy3Bf5Xs3lU-20250804-095337.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                            | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Hong Kong<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/RC_8WSJKjInh1etBoWb0i_hong-kong-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="666" darkWidth="1000" darkHeight="666" showCaption="false"}       | Hong Kong Dollar (HKD), US Dollar (USD)               | HKD - 09:00<br />USD - 11:30                     | HKD - 09:00                                                    |
| India<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-a3fywmyc_oPV_ILUNFnDs-20250804-094252.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                                | US Dollar (USD), Indian Rupee (INR)                   | USD - 11:30                                      | INR - 11:30<br />\*1,500,000 INR<br />per beneficiary per day  |
| Ireland<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-orDz9Dxx1zVn-PBSPt-oy-20250804-094228.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                              | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Israel<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/LFJYz1MoAYak3hjtWVeEI_israel.png" size="30" isUploading="false" position="flex-start" width="512" height="512" darkWidth="512" darkHeight="512" showCaption="false"}                    | Israeli New Shekel (ILS), Euro (EUR), US Dollar (USD) | ILS - 9:00<br />USD - 11:30<br />EUR - 14:30     | No                                                             |
| Italy<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-7cS7k6EZshVgJhklHHzZc-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                                | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Japan<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-Jnk4bLPcs6EOiGrcFcnpj-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                                | Japanese Yen (JPY), Euro (EUR), US Dollar (USD)       | JPY - 09:00<br />EUR - 09:30<br />USD - 11:30    | No                                                             |
| Kyrgyzstan<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/O0uA0zRp7AKyPuyF2Egwt_kyrgyzstan-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="600" darkWidth="1000" darkHeight="600" showCaption="false"}     | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Latvia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/-kSR0yEP4uf6AUmj-FlqZ_latvia-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="500" darkWidth="1000" darkHeight="500" showCaption="false"}             | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Lithuania<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-nC1xDafwhe6WicPmCc1JX-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                            | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Luxembourg<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-cD12ISag5rN3yD16C3vWK-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                           | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Malaysia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-cP0vmuYWvd7eclpjodZjC-20250804-094531.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                             | US Dollar (USD), Malaysian Ringgit (MYR)              | USD - 11:30                                      | MYR - 11:30<br />\*100,000 MYR                                 |
| Mexico<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-s1my5pJgs5vhJTdU_1_Bm-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                               | US Dollar (USD),<br />Mexican Peso (MXN)              | USD - 11:30                                      | MXN - 04:00                                                    |
| Netherlands<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-W-6nop82ojK93f0nVGkgU-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                          | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| New Zealand<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-G3FeH_eS6IL1N-3AqvJBM-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                          | New Zealand Dollar (NZD), Euro (EUR), US Dollar (USD) | NZD - 09:00<br />EUR - 09:30<br />USD - 11:30    | No                                                             |
| Norway<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-vGAkXAPVJEbOCqCPiEoI1-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                               | Norwegian Krone (NOK), Euro (EUR), US Dollar (USD)    | NOK - 05:30<br />EUR - 09:30<br />USD - 11:30    | NOK - 07:00<br />\*25,000,000 NOK                              |
| Oman<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-YjN2dEz_JCW4i-Ss1hisZ-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                                 | US Dollar (USD), Omani Ral (OMR)                      | OMR - 09:00<br />USD - 11:30                     | No                                                             |
| Philippines<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-EpNw-KH96SxTBM9RKzY1v-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                          | US Dollar (USD), Philippine Peso (PHP)                | USD - 11:30                                      | PHP - 11:30<br />\*1,300,000 PHP                               |
| Poland<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/u7Qn3tPEMjXqw5M6rPGZO_poland-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="625" darkWidth="1000" darkHeight="625" showCaption="false"}             | Euro (EUR), US Dollar (USD)                           | Yes<br />EUR - 09:30<br />USD - 11:30            | No                                                             |
| Portugal<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij--UrVW2xxkJEDpyKooa7ZY-20250804-094846.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                             | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Singapore<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/FsC8yGtuPHeDLh3upW2zx-20260528-064346.png" size="36" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                            | Singapore Dollar (SGD), US Dollar (USD)               | SGD - 09:00<br />USD - 11:30                     | SGD - 24/5 (Monday-Friday)<br />\*200,000 SGD                  |
| Slovakia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/xHvPgB53X_IUnMXSb8qkQ_slovakia-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="667" darkWidth="1000" darkHeight="667" showCaption="false"}         | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Slovenia<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij--bwmOCFKyE2hzxL4-SVst-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                             | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Spain<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-9SUwS5Kb1c1wJ6S2vaz-R-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                                | Euro (EUR), US Dollar (USD)                           | EUR - 09:30<br />USD - 11:30                     | EUR - 09:00                                                    |
| Sweden<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-N6nXiL40k9c0e9ZJaWXFX-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                               | Swedish Krona (SEK), Euro (EUR), US Dollar (USD)      | SEK - 05:30<br />EUR - 09:30<br />USD - 11:30    | SEK - 05:30<br />\*500,000 SEK                                 |
| Switzerland<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/_Dd99GDZD1EGqmRqcsYQG_switzerland-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="1000" darkWidth="1000" darkHeight="1000" showCaption="false"} | Swiss Franc (CHF), Euro (EUR), US Dollar (USD)        | CHF - 05:30<br />EUR - 09:30<br />USD - 11:30    | No                                                             |
| Taiwan<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/X0qkX5DJC0kGMLVl_JXC0_taiwan-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="667" darkWidth="1000" darkHeight="667" showCaption="false"}             | US Dollar (USD)                                       | Yes<br />USD - 11:30                             | No                                                             |
| Thailand<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/HHxkbexaTPan4pq3vOxK5_thailand-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="666" darkWidth="1000" darkHeight="666" showCaption="false"}         | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| UAE<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-h68PFM_7w_yEnquUPBri5-20250804-094003.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                                  | US Dollar (USD), UAE Dirham (AED)                     | AED - 09:00<br />USD - 11:30                     | No                                                             |
| United Kingdom<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-Au0ZUNkQ1Z4YukqS1sG3N-20250804-090950.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                       | Pound Sterling (GBP), Euro (EUR), US Dollar (USD)     | GBP - 12:00<br />EUR - 09:30<br />USD - 11:30    | GBP - 24/7 <br />\*1,000,000 GBP                               |
| Uruguay<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/IQDApJ8x3gkpEK274YKij-9RDviaspnXqyN0u3hJBfc-20250804-094002.png" size="34" width="512" height="512" position="flex-start" darkWidth="512" darkHeight="512" showCaption="false"}                              | US Dollar (USD)                                       | USD - 11:30                                      | No                                                             |
| Uzbekistan<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/Wel8v20qHP1DFCdmwOaMT_uzbekistan-flag.png" size="30" isUploading="false" position="flex-start" width="1000" height="500" darkWidth="1000" darkHeight="500" showCaption="false"}     | US Dollar (USD)                                       | Yes<br />USD - 11:30                             | No                                                             |

:::hint{type="info"}
No crypto or gaming currencies are available.
:::


[title] Outbound and inbound
[path] Payments/ACH/

## Outbound and inbound ACH payments

ACH allows you to transfer funds electronically and cost-efficiently through the Federal Reserve ACH network. Cross River offers both outbound and inbound ACH payments, enabling you to both originate and receive ACH payments. Cross River supports both [Same Day](docId:0papBZYBjF0LZPac8-tRW) and [Next Day (standard)](docId:0papBZYBjF0LZPac8-tRW) ACH settlement.&#x20;

:::hint{type="info"}
See our tutorial to learn how to [send an ACH payment](docId\:HLIqOJNMHJwJRI29Z0Ryt).
:::

[Learn more about payment transactions and settlement](docId\:luDEbxnwU8p7Knb_bDM6I)&#x20;

## Outbound ACH payment

An Outbound ACH payment either pushes funds to or pulls funds from an account at an external bank. An *Outbound Push* sends funds to the recipient's account and this is a credit to the receiver. An *Outbound Pull* submits a request to pull funds from an external account to the account at Cross River and this is a debit for the originator.

The following diagram shows the [outbound flows](docId\:ILwmF5qnTMLo30D2H3rCH) and [webhook events](docId\:AVRvavzdk7hC0UfXn6XZ9) for ACH transactions.

:::hint{type="info"}
Note that if the `postingType` of the transaction is **individual**, the `Core.Transaction.Completed` webhook is triggered when the activity is posted for an individual payment (at the end of the flow). For the **aggregate** `postingType`, the `Core.Transaction.Completed` webhook is triggered *for an outbound push payment&#x20;*&#x77;hen the distribution is created to be sent to the Fed. See the notes inside the image.
:::

![ outbound flows and webhooks for ACH payments](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j-ytsDM_WXuStKGQAOwdHoj-20241006-124755.png)

## Inbound ACH payment

An Inbound ACH payment involves receipt (push) to or authorized withdrawal (pull) from an account at Cross River. An *Inbound push* involves a customer at an external bank sending payment to an account at Cross River and this is a credit for the receiver. An *Inbound pull* involves a customer at an external bank pulling money from an account at Cross River and is a debit to the originator.

The following diagram shows the [inbound flows](docId\:ILwmF5qnTMLo30D2H3rCH) and [webhook events](docId\:AVRvavzdk7hC0UfXn6XZ9) for an ACH payment.

![](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j---Clfy1X8mogjGMtJBHCp-20241006-124904.png)


[title] Daily balance file
[path] Cards/Reporting and compliance/

## Card balance file

This file provides the ending balance and status for each issued card at the end of each business day. This file supports account reconciliation, negative balance monitoring, and charge-off reporting. It also supports other Cross River operational and compliance oversight functions.

:::hint{type="info"}
Daily balance files are only required for Cross River held funds and external ledger
:::

## File delivery and format

Refer here for [file delivery](docId\:i4b_iqAVcQFp9m1611twC) and [file format](docId\:i4b_iqAVcQFp9m1611twC) details.

## Sample card balance file

The following file contains sample data.  If you have any questions, please be in touch with your onboarding team.

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/TgeIOM09YMTSUjm3mSRtZ-20260616-065427.csv" label="Card_Balance_Report_Template.csv"}

## Explanation of fields

| Field                   | Data Type                             | Description                                                                                                                                                                                                                         | Required/Conditional                                                                                     |
| ----------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| unique\_program\_id     | varchar(12)                           | Processors planning to have &#xD; different programs should &#xD;provide an identifier that we &#xD;would map for settlement and &#xD;<br />reconciliation.                                                                         | Required                                                                                                 |
| product\_id             | varchar(12                            | If a given program has more &#xD; than one type of card, the &#xD; processor should include a &#xD; product identifier, e.g., 1001 = &#xD;<br />Credit Card, 1002 = &#xD;<br />Commercial Prepaid, 1003 = &#xD; Platinum, etc.&#xD; | Required                                                                                                 |
| user\_id                | varchar(50)                           | Identifier given to each unique &#xD; customer or cardholder&#xD;                                                                                                                                                                   | Required                                                                                                 |
| card\_id                | varchar(50)                           | Identifier given to each unique &#xD;<br />card issued to an account&#xD;                                                                                                                                                           | Required                                                                                                 |
| card\_status            | varchar(20)                           | Card status at the prior day’s&#xD; cut-off time                                                                                                                                                                                    | Required                                                                                                 |
| status\_change\_date    |  DATETIME (YYYY-MM-DD HH\:MM\:SS.sss) | Date and time of the most &#xD;<br />recent status change of the &#xD;<br />card&#xD;                                                                                                                                               | Required                                                                                                 |
| current\_balance        | decimal(18,4)                         | Card balance, excluding &#xD;<br />pending authorizations, at the &#xD;<br />prior day’s cut-off time                                                                                                                               | Required                                                                                                 |
| available\_balance      | decimal(18,4)                         | Card balance, including &#xD;<br />pending authorizations, at the &#xD;prior day’s cut-off time                                                                                                                                     | Required                                                                                                 |
| created\_date           |  DATETIME (YYYY-MM-DD HH\:MM\:SS.sss) | Date and time when the card &#xD; was first created                                                                                                                                                                                 | Required                                                                                                 |
| activation\_date        |  DATETIME (YYYY-MM-DD HH\:MM\:SS.sss) | Date and time when the card &#xD; was first activated&#xD;                                                                                                                                                                          | Conditional- blank if card is still in 'Issued' status. Required once card transitions to 'Active'       |
| last\_transaction\_date |  DATETIME (YYYY-MM-DD HH\:MM\:SS.sss) | Date and time when the card &#xD;<br />last had a balance-affecting &#xD;<br />transaction                                                                                                                                          | Conditional- blank if the card has not had a transaction                                                 |
| negative\_balance\_date |  DATETIME (YYYY-MM-DD HH\:MM\:SS.sss) | Date and time of the most &#xD;<br />recent time the card had a &#xD;<br />negative balance                                                                                                                                         | Conditional - blank if the card has not had a negative balance                                           |
| closed\_date            |  DATETIME (YYYY-MM-DD HH\:MM\:SS.sss) | Date and time when the card &#xD;<br />was permanently closed                                                                                                                                                                       | Conditional - blank unless card is 'closed'                                                              |
| charge\_off\_amount     | decimal(18,4)                         | Balance of the card at the time &#xD; of closing following a chargeoff                                                                                                                                                              | Conditional - blank if account not charged off. Populated only when delinquency\_bucket = 'Charged-Off'. |
|                         |                                       |                                                                                                                                                                                                                                     |                                                                                                          |

### Expected values for card status

| Status        | Explanation                                                 |
| ------------- | ----------------------------------------------------------- |
| Issued        | Card was issued but it yet to be activated                  |
| Active        | Card has been activated and is open to transact             |
| Suspended     | Card temporarily suspended by cardholder or program manager |
| Fraud Blocked | Card blocked by program manager due to fraud                |
| Closed        | Card permanently closed (end state)                         |








[title] Instant payments
[path] Payments/

:::CtaButton{label="Instant payments APIs" docId="dZy2COChKwicpi_0rKK2P" openInNewTab="true"}

:::

## Cross River instant payments solution

Unlock the future of real-time payments by using Cross River’s Instant Payments solution. You can instantly clear payments, 24/7/365 to ensure continuous availability. Cross River facilitates the transfer of funds in real time over ®, ® and CRNow (Cross River Partner network transfers) networks.&#x20;

## What Cross River offers

- Payment networks:
  - [RTP®](docId\:mPks1l2ft2PP32yFuDJYW)**:&#x20;**&#x48;igh limits up to $10,000,000.
  - [FedNow®](docId\:mPks1l2ft2PP32yFuDJYW)**:&#x20;**&#x42;road reach, limits up to $10,000,000.
  - [CRNow](docId\:mPks1l2ft2PP32yFuDJYW)**:&#x20;**&#x43;ross River Partner network transfers, no inherent limits.
- [Network interoperability](docId:7HeOa4-BINjvx0kSdLKD3)**:** We select the payment network for you based on which networks can reach the receiving institution and the preference you configure for your product, or you can name the network per payment.
- **Send limits:&#x20;**&#x45;ach payment network has its own [transaction](docId\:V1rPfh_C3dlDY4cchtAsS) send limits per transaction. Cross River sets a [daily](docId\:V1rPfh_C3dlDY4cchtAsS) send limits for Instant Payments based on previous Instant Payments usage. &#x20;
- **Payment queuing:&#x20;**&#x49;nstead of a payment being rejected if the participating bank is unavailable, Cross River [queues](docId:_xZIWgk5I5ZYLLWc8va6B) the payment until the receiving institution is available. Cross River then automatically originate the payment. Queuing is available for both RTP and FedNow.
- **Fraud reporting:&#x20;**&#x45;ach instant payment network has specific requirements for reporting suspected fraud, with its own criteria for what qualifies as reportable fraud. Find out more from our [fraud reporting tutorial](docId\:Sk9mAQG4fAs9OEByqgMWP).&#x20;

## Find out more

- [Outbound and inbound](docId\:ady9aKdnxL8FHhlRo5o1D)&#x20;
- [Payment types](docId\:oJcyKDvHGpjflu3152-iM)&#x20;
- [Payment networks](docId\:mPks1l2ft2PP32yFuDJYW)&#x20;

## Tutorials

See our tutorials to learn how to:

| Through APIs                                            | Through COS Explorer                                     |
| ------------------------------------------------------- | -------------------------------------------------------- |
| [Send an instant payment](docId:5yRR2S4_i1B34CdzDxR68)  | [Send an Instant Payment](docId\:wnhWHZf600ZbitzAtNgC0)  |
| [Get service info](docId\:OuBLrmwxsKT1EpHZtEo0i)        | [Find an Instant Payment](docId\:lVTkOcnQGjh3jvGdlTl1R)  |
| [Set payment expiration](docId\:nY3A7M8Av7sp_fbHOuBLm)  |                                                          |
| [Fraud reporting](docId\:Sk9mAQG4fAs9OEByqgMWP)         |                                                          |


[title] Time deposit (CD) accounts
[path] Accounts/

You might want to offer your customers time deposit accounts. Time deposit (or CD) accounts are sold in specific amounts and with specific maturity dates. If the customer decides to withdraw the funds before the applicable maturity date, they will typically be required to pay a penalty.

A *penalty month* is a configuration that defines the maximum number of months that a penalty applies. For instance, configuring penalty months as **12** would mean that if the money is withdrawn (account is closed) before 12 months have passed, (x) fee days would be withdrawn from the account as a penalty.

*Fee days* define how many days of simple interest to assess as a penalty. COS allows a maximum of 2 penalty tiers for time deposit accounts.

Create a time deposit account with the [open a deposit account](docId\:abKDIZOKHXLSswzwrbBJ1) endpoint. You must have the proper [product ID](docId\:A4xk-yBQUtIA6tNQ5oJKf) and the [customer ID](docId\:Td-K_prObOXEklwM6CnnG) for the account holder.

Other time deposit endpoints available include:

- [Early funds withdrawal](docId\:bHeqF948uoL69C872O299)
- [CD activity](docId:9nAb7NqgEGfIpDq8flDjf)
- [Find out the penalty for early withdrawal from a CD](docId\:e4dAA6XWq3ZPAU6WMqR-c) &#x20;

#


[title] Balance and ledger models
[path] Cards/Issuing models/Partner-managed/

## Balance models at a glance

Three balance models categorize partner-managed programs. The model depends on who holds the funds and the ledger location.

|                                                 | [Card only BIN sponsorship](docId\:Z5zkbYq_txaz_1bVhxbYG)   | [FBO subledger model](docId\:Z5zkbYq_txaz_1bVhxbYG)         | [FBO pooled account model](docId\:Z5zkbYq_txaz_1bVhxbYG) |
| ----------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------- |
| Cross River holds funds                         | No                                                          | Yes (FBO)                                                   | Yes (FBO)                                                |
| FDIC insurance for individual customer balances | No (customer funds not at Cross River)                      | Yes (pass-through)                                          | Yes (pass-through)                                       |
| Daily balance file                              | No                                                          | Yes                                                         | Yes                                                      |
| Balance visibility/sync                         | N/A                                                         | Partner syncs customer balances into FBO account subledgers | Partner provides balance file for reconciliation         |
| Daily transaction file                          | Yes                                                         | Yes                                                         | Yes                                                      |
| Chargeback file                                 | Yes                                                         | Yes                                                         | Yes                                                      |

All partner-managed programs require [daily transaction files](docId\:bvd4wcnis6ZULo9cP6S5K) for monitoring. Balance visibility requirements depend on whether Cross River holds customer funds. Refer to [Reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC) for other applicable reports.

## Choosing your model

The right model depends on your program structure.

- **Card only BIN sponsorship:** Cross River does not hold customer funds.
- **FBO subledger model.&#x20;**&#x43;ross River holds funds and maintains subledgers while you sync balances. Choose this model if you require access to Cross River payment rails other than ACH. Subledgers are fully routable accounts that provide access to all Cross River payment rails.
- **Pooled FBO account model:** Cross River holds funds and you maintain the ledger with daily files.

All models where Cross River holds funds require balance visibility. This ensures FDIC pass-through insurance applies. Refer to [Balance visibility](docId:3nPVK0JfOSqRv4rbIaasf) for regulatory context.

## Card only BIN sponsorship

Cross River only sponsors the BIN and facilitates network settlement. Customer funds live elsewhere, at a different bank, in pre-funded accounts, or sourced just-in-time from external systems, such as warehouse credit lines. This model is used in BIN sponsor credit card programs, where Cross River holds no funds.

**Characteristics:**

- Cross River does not hold customer funds
- No FBO account at Cross River for customer balances
- No balance file or balance sync required
- No pass-through FDIC insurance for individual customers

**Use this model when:**

- Customer funds stay at a different financial institution
- Your program uses external funding sources
- You need Cross River's BIN but not its banking infrastructure

### Balance synchronization

Since Cross River does not hold funds for this model, there is no need to synchronize balances.

### Reconciliation checks

This model has no FBO reconciliation requirements.

Cross River Operations contacts you each business morning. They provide the amount due for settlement.

Fund your network settlement accounts on time with the exact settlement amount.

## FBO subledger model

Cross River holds customer funds in an FBO account with subledgers. You maintain your program ledger externally. You also update individual customer balances in COS at the subledger level through the [balance and synchronization process](docId\:Z5zkbYq_txaz_1bVhxbYG). Cross River becomes the system of record through these subledgers.

**Characteristics:**

- Cross River holds funds in an FBO account (maintains subledgers in COS)
- You sync balance changes to subledgers
- Each customer has a subledger in COS
- Supports all payment rails
- [Daily](docId\:i4b_iqAVcQFp9m1611twC) balance and transaction files are required

**Balance file requirements:**

- Sync balance changes through the [core/v1/transactions](docId\:n4nww9wNTwf93qt_vdLvh) endpoint.
- Sync at least once daily. High-volume programs may need multiple syncs per day.
- Each sync reflects net balance changes at the subledger level.
- An implicit subledger acts as a clearinghouse for reconciliation.

### Balance synchronization

If you use the subledger model, you must synchronize balances in Cross River. We require this model:

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/fNZV5F-JqOautzB1AaC_Z_image.png)

The implicit subledger balances all other subledgers. The system posts net credits as debits to the clearinghouse. Net debits post as credits from it.

Small residual or timing differences may appear. These accumulate in the implicit subledger. They represent your program-level net position.



Use your FBO account's implicit subledger as a clearing house. Each customer subledger that changed during the day posts one book transfer. That transfer goes against the implicit subledger.

This keeps the load light. Each changed subledger updates only once per cycle. The number of transactions does not matter.

## Reconciliation checks

- Subledger balances must match your internal customer balances.
- Total subledger balances must reconcile with the FBO balance.
- Total debits must equal total credits within rounding tolerance.

Cross River Operations contacts you for major discrepancies. Cross River will also alert you if funds do not cover network settlement.

## FBO pooled account model

Cross River holds customer funds in an FBO account with subledgers. You maintain your program ledger externally. You provide individual customer balances to Cross River through [daily balance files](docId\:i4b_iqAVcQFp9m1611twC). These files give Cross River visibility into beneficial ownership for FDIC pass-through insurance.

**Characteristics:**

- Cross River holds funds in an FBO account
- You or your processor maintain the program ledger
- A daily balance file maps each customer ID to a balance
- The file satisfies the FDIC beneficial owner identification requirement

**Balance sync requirements:**

- You or your processor provide the file, depending on who holds the program ledger.
- The file must show each customer's insured balance that Cross River holds.
- Deliver the file daily via SFTP
- Use CSV format according to Cross River specifications
- The file must reconcile to the total FBO balance

### Balance synchronization

Post daily net balance updates into your FBO. These updates must reflect all activity external to Cross River that affected any card balances from your program.

### Reconciliation checks

Confirm your total FBO account balance matches the sum of all card balances from your program. This amount must also match what you report in the daily card balance file.

[title] SWIFT or local rail
[path] Payments/International payments/

## SWIFT

SWIFT, the [Society for Worldwide Interbank Financial Telecommunication](https://www.swift.com/about-us), makes sending international payments easier by providing a secure messaging system between financial institutions.

When you send a payment by SWIFT it settles quickly, typically within T+0 or T+1. However, because intermediary financial institutions along the payment route may charge handling fees or commissions, SWIFT has additional charges. These charges are not always the same. The amount depends on the specific financial institutions involved in the transaction.

## Local rail

When you pay through a local rail, such as SEPA (Single Euro Payments Area), typically you'll have no handling fees or commissions, because this payment rail uses banks in the recipient country to make international payments easier. Payments sent by local rails settle efficiently, typically within T+0 to T+2.

:::hint{type="warning"}
**IMPORTANT**
With both SWIFT and local rails the payee receives the full amount. The sender pays any fees or commissions.
:::

Certain Local Rail currencies are subject to transfer limits. For the full list of applicable limits by currency, refer to [Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj).

For certain countries your only option is to use SWIFT because no local rail is accessible. The table of [countries supported](docId\:p_Cb7wXlzG8of31c9xlgj) shows which countries are limited to SWIFT transactions.

In the [Request payment quote](docId\:OnbkGeBIHVb4ihvB1haKL) endpoint, set `priority` to **TRUE** to transfer funds using the SWIFT network. Set `priority` to **FALSE** to use a local rail in the recipient country.


[title] Account transactions
[path] Accounts/

## Transactions in Cross River accounts

Deposits, withdrawals and transfers can be understood as being part of a transaction. In the Cross River operating system (COS) a transaction always involves a debit of one account (withdrawal) and a credit of another account (deposit), completed as a single atomic (simple) operation. Both sides of the transaction must happen for it to be considered completed. If, for example, the debit account does not have enough money to cover the transaction, the credit operation will not complete.

This makes sure that accounts are never out of balance and makes tracking where the money is much easier.

Once you've opened an account, use our payment APIs to send and receive funds between banks via [ACH](docId:3tt7a4nY2fyVMzEEmFwUt), [Instant Payments](docId\:U_TnYPQ3-5yepG7jKD5FK), [Wires](docId\:hFNmQa22W2BNqAJijpAVT), [International payments](docId:3EvRgfMqC_15mbLV_j3cp) or [Checks](docId:8MxnUqiHsMPE6vHWQex5u). You can also use Instant Payments to transfer funds within Cross River, with our [CRNow](docId\:mPks1l2ft2PP32yFuDJYW)  option.

[title] 3DS in P1
[path] Cards/Issuing models/Integrated issuing/Online authentication/

# 3DS overview

The 3D Secure (3DS) authentication system provides an additional security layer for card-not-present transactions through Strong Customer Authentication (). The system supports both rules-based decisioning and multiple authentication methods to verify cardholder identity during online purchases.

**Supported Networks:**

- Visa (Visa Secure)
- Mastercard (Mastercard SecureCode®)

**Authentication Standard:** Strong Customer Authentication (SCA) compliant

**Note:** Both Mastercard and Visa support EMV® 3D Secure.

## Quick reference

### Authentication types

OTP (One-Time Password) is a temporary, single-use, secure code. The system sends it via SMS to the customer's mobile phone or email.

For OTP-based authentication, OTPSMS or OTPEMAIL, you must provide customer contact information as follows:

- **Mobile number:** Retrieve this during card creation. It must be the customer’s verified mobile phone number.  See the `phoneNumber` attribute in the [Create new card](docId\:EJCciNVxb0oMKjA567gUM) API endpoint for the required format.
- **Email address:** Retrieve this during card creation. It must be the customer’s verified email address. See the `emailAddress` attribute in the  [Create new card](docId\:EJCciNVxb0oMKjA567gUM) API endpoint for the required format.

| Type           | Description     | Validation Required | Use Case                   |
| -------------- | --------------- | ------------------- | -------------------------- |
| OTPSMS         | SMS OTP         | ❌ No (automatic)    | Standard e-commerce        |
| OTPEMAIL       | Email OTP       | ❌ No (automatic)    | Standard e-commerce        |
| OUTOFBANDOTHER | Biometric (OOB) | ✅ Yes (manual)      | Mobile app with biometrics |

### API endpoints summary

| Endpoint                                                       | Method | Purpose                                           |
| -------------------------------------------------------------- | ------ | ------------------------------------------------- |
| [/v1/3ds/\{id}](docId\:Su5NVsUfruWN28v1O7gM8)                  | GET    | Get authentication details                        |
| [/v1/3ds/\{id}/validate](docId:0-MnW4CrKX4T_GPrujleW) <br />   | POST   | Validate OOB authentication (OUTOFBANDOTHER only) |
| [/v1/simulate/3ds/authenticate](docId\:VDmgALvyG_2Gld_bUaJXf)  | POST   | Simulate 3DS authentication (testing)             |

### Important notes

**Authentication flow:**

```mermaid
sequenceDiagram
      participant Merchant
      participant P1 as Cross River P1
      participant Partner
      participant Cardholder

      Note over Merchant,Cardholder: 3DS Authentication Flow

      Merchant->>P1: 1. Initiate 3DS authentication request
      P1->>P1: 2. Evaluate authentication rules

      alt Approve
          P1->>Merchant: Transaction Approved
      else Decline
          P1--xMerchant: Transaction Declined
      else Challenge Required
          P1->>Partner: 3. Send authentication webhook<br/>(based on authentication type)
          Note over Partner,Cardholder: Partner Configuration Applied
          Partner->>Cardholder: 4. Partner uses webhook from Cross River<br/>to present authentication options
          Cardholder->>Cardholder: 5. Complete authentication
          Cardholder->>Partner: 6. Authentication result
          Partner->>P1: 7. Return authentication response
          P1->>Merchant: 8. Final transaction result
      end
```

1. Merchant initiates 3DS authentication request
2. Cross River P1 evaluates rules (Approve/Decline/Challenge)
3. If challenge triggered, Cross River P1 sends webhook to partner (based on authentication type)
4. Cardholder presented with configured authentication options
5. Authentication method executes based on partner configuration

**Validation requirements:**

- **OUTOFBANDOTHER requires validation:** After biometric authentication completes, merchant **must** call [POST /v1/3ds/\{id}/validate](docId:0-MnW4CrKX4T_GPrujleW) to send result back to P1
- **OTPSMS and OTPEMAIL are automatic:** No validation endpoint call required. VCAS handles OTP validation internally

## Three-domain model

3DS authentication involves three separate domains:

| Domain Type                                                  | Description                                                                                                                                                                                |
| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| :::Heading{depth="3" indent="1"}
Acquirer (merchant)
:::     | - Merchant's e-commerce platform
- Initiates authentication request
- Receives authentication results                                                                                      |
| :::Heading{depth="3" indent="1"}
Issuer (Cross River P1)
::: | - Access Control Server (ACS)
- Processes authentication requests
- Sends authentication challenges                                                                                        |
| :::Heading{depth="3" indent="1"}
Interoperability (VCAS)
::: | - VCAS (Visa Card Authentication Service)
- Routes messages between domains
- Validates authentication results
- Handles both Visa and Mastercard authentication flows
- Generates  tokens |

## Authentication methods

### Method 1: Out of Band (OOB) authentication

**Type:** OUTOFBANDOTHER

**Flow:**

```mermaid
sequenceDiagram
      participant Merchant
      participant P1 as Cross River P1
      participant Partner
      participant Cardholder

      Note over Merchant,Cardholder: 3DS Authentication Flow - Challenge Required

      Merchant->>P1: 1. Initiate 3DS authentication request
      P1->>P1: 2. Evaluate authentication rules
      Note over P1: Challenge triggered
      P1->>Partner: 3. Send authentication webhook<br/>with authentication details
      Note over Partner: Partner uses webhook from Cross River
      Partner->>Cardholder: 4. Push notification to<br/>cardholder's mobile app
      Cardholder->>Cardholder: 5. Authenticate using biometrics<br/>(fingerprint, Face ID, etc.)
      Cardholder->>Partner: 6. Authentication completed
      Partner->>P1: 7. POST /v1/3ds/{id}/validate<br/>Send authentication result
      P1->>P1: 8. Process and confirm authentication<br/>(VCAS validation)
      P1->>Merchant: 9. Return final authentication result<br/>with CAVV and ECI
      Note over Merchant,P1: Result: Authentication successful<br/>Transaction approved
```

1. Merchant initiates 3DS authentication request
2. Cross River P1 evaluates authentication rules
3. If P1 triggers a challenge, P1 presents the cardholder with configured authentication options (based on partner configuration)
4. P1 initiates authentication webhook to partner with authentication details
5. Partner receives webhook and pushes notification to cardholder's mobile app
6. Cardholder authenticates using biometrics (fingerprint, Face ID, etc.) in the app
7. Partner sends authentication result to Cross River P1 via the[Validate OUTOFBANDOTHER](docId:0-MnW4CrKX4T_GPrujleW)**&#x20;&#x20;**&#x41;PI endpoint.
8. P1 confirms authentication with VCAS (Visa Card Authentication Service)
9. P1 returns final authentication result with CAVV and  to merchant

**Timeout:** 10 minutes for cardholder response

**Advantages:**

- Frictionless user experience
- Biometric authentication
- No manual code entry

**Important:** This method **requires** calling the /validate endpoint to send the authentication result back to P1.

### Method 2: One-Time Passcode (OTP) authentication

SMS OTP

**Type:** OTPSMS

**Flow:**

```mermaid
sequenceDiagram
      participant Merchant
      participant P1 as Cross River P1
      participant Partner
      participant Cardholder

      Note over Merchant,Cardholder: 3DS Authentication Flow - OTP Challenge

      Merchant->>P1: 1. Initiate 3DS authentication request
      P1->>P1: 2. Evaluate authentication rules
      Note over P1: Challenge triggered
      P1->>Partner: 3. Send authentication webhook<br/>with OTP details
      Note over Partner: Partner uses webhook from Cross River
      Partner->>Cardholder: 4. Trigger OTP delivery via SMS<br/>to cardholder's phone
      Merchant->>Cardholder: 5. Display OTP entry screen
      Cardholder->>Merchant: 6. Enter OTP on<br/>merchant's validation screen
      Merchant->>P1: 7. Submit OTP for validation
      P1->>P1: 8. Validate OTP automatically<br/>(VCAS validation)
      P1->>Merchant: 9. Return authentication result<br/>with CAVV and ECI
      Note over Merchant,P1: Result: Authentication successful<br/>Transaction approved
```

1. Merchant initiates 3DS authentication request
2. Cross River P1 evaluates authentication rules
3. If P1 triggers a challenge, cardholder is presented with configured authentication options (based on partner configuration)
4. Cross River P1 initiates authentication webhook to partner with OTP details
5. **Partner triggers OTP delivery via SMS to cardholder's phone**
6. Merchant displays OTP entry screen to cardholder
7. Cardholder enters OTP on merchant's validation screen
8. VCAS validates OTP automatically (no /validate endpoint call needed)
9. Cross River P1 returns authentication result with CAVV and ECI

**No validation endpoint required** - OTP validation happens automatically within VCAS.

**Important:** Partner is responsible for sending the OTP via SMS based on details received in webhook.

Email OTP

**Type:** OTPEMAIL

**Flow:**

```mermaid
sequenceDiagram
      participant Merchant
      participant P1 as Cross River P1
      participant Partner
      participant Cardholder

      Note over Merchant,Cardholder: 3DS Authentication Flow - Email OTP Challenge

      Merchant->>P1: 1. Initiate 3DS authentication request
      P1->>P1: 2. Evaluate authentication rules
      Note over P1: Challenge triggered
      P1->>Partner: 3. Send authentication webhook<br/>with OTP details
      Note over Partner: Partner uses webhook from Cross River
      Partner->>Cardholder: 4. Trigger OTP delivery via email<br/>to cardholder's email address
      Merchant->>Cardholder: 5. Display OTP entry screen
      Cardholder->>Merchant: 6. Enter OTP on<br/>merchant's validation screen
      Merchant->>P1: 7. Submit OTP for validation
      P1->>P1: 8. Validate OTP automatically<br/>(VCAS validation)
      P1->>Merchant: 9. Return authentication result<br/>with CAVV and ECI
      Note over Merchant,P1: Result: Authentication successful<br/>Transaction approved
```

1. Merchant initiates 3DS authentication request
2. Cross River P1 evaluates authentication rules
3. If challenge is triggered, cardholder is presented with configured authentication options (based on partner configuration)
4. Cross River P1 initiates authentication webhook to partner with OTP details
5. **Partner triggers OTP delivery via email to cardholder's email address**
6. Merchant displays OTP entry screen to cardholder
7. Cardholder enters OTP on merchant's validation screen
8. VCAS validates OTP automatically (no /validate endpoint call needed)
9. Cross River P1 returns authentication result with CAVV and ECI

**No validation endpoint required.&#x20;**&#x4F;TP validation happens automatically within VCAS.

**Important:** Partner is responsible for sending the OTP via email based on details received in webhook.

**OTP Validity:** 10 minutes per code

| Retry Logic                                                                                                                                                                                                                       | Resend Logic                                                                                                                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| - Maximum 3 attempts to enter correct OTP
- Reference code displayed to confirm expected OTP
- Authentication fails after 3 incorrect attempts
- **Important:** PAN (Primary Account Number) remains active after failed attempts | * Initial OTP sent automatically
* Up to 2 additional resends permitted (3 total OTPs maximum)
* Each resend generates a new OTP code
* Resend button becomes inactive after limit reached |

## Authentication rules system

Authentication rules provide a control layer for 3DS decisioning by allowing custom logic based on transaction attributes.

### Purpose

- Add custom decisioning logic to 3DS authentication flow
- Works with both Cross River P1 decisioning and partner custom decisioning
- Enforce stricter controls beyond base decisioning

### Key limitation

Rules only enforce stricter controls or maintain existing declines. They cannot override declines.

## Authentication decision flow

### Step-by-step process

```mermaid
sequenceDiagram
      participant Merchant
      participant P1 as Cross River P1
      participant Partner
      participant Cardholder

      Note over Merchant,Cardholder: 3DS Authentication Flow

      Merchant->>P1: 1. Initiate 3DS authentication request
      P1->>P1: 2. Evaluate authentication rules

      alt Approve
          P1->>Merchant: Transaction Approved
      else Decline
          P1--xMerchant: Transaction Declined
      else Challenge Required
          P1->>Partner: 3. Send authentication webhook<br/>(based on authentication type)
          Note over Partner: Partner uses webhook from Cross River
          Partner->>Cardholder: 4. Present authentication options
          Cardholder->>Cardholder: 5. Complete authentication<br/>(method based on partner config)
          Cardholder->>Partner: 6. Authentication result
          Partner->>P1: 7. Return authentication response
          P1->>Merchant: 8. Final transaction result
      end
```



:::BlockQuote
1. Merchant Initiates 3DS Authentication Request
&#x20;         ↓
2\. P1 Receives Authentication Request
&#x20;         ↓
3\. All Active Rules Evaluate Simultaneously
&#x20;         ↓
4\. Each Rule Checks Transaction Attributes
&#x20;         ↓
5\. Matching Rules Execute Actions (Approve/Decline/Challenge)
&#x20;         ↓
6\. Apply "Most Restrictive" Decision Logic
&#x20;         ↓
7\. If CHALLENGE triggered:
&#x20;  ├─ P1 initiates authentication webhook to partner
&#x20;  ├─ Cardholder presented with configured authentication options
&#x20;  └─ Authentication method (OTPSMS/OTPEMAIL/OUTOFBANDOTHER) executes
&#x20;         ↓
8\. Authentication Result
&#x20;  ├─ For OTP methods: VCAS validates OTP automatically
&#x20;  └─ For OOB methods: Partner calls /validate endpoint
&#x20;         ↓
9\. P1 Confirms with VCAS (Visa Card Authentication Service)
&#x20;         ↓
10\. Final Authentication Response (with CAVV and ECI)
&#x20;         ↓
11\. Response Transmitted to Merchant
:::

## Decision logic - "most restrictive" principle

The system applies the **strictest outcome** among all matching rules:

### Decision priority (most to least restrictive):

1. **Decline:** Transaction rejected immediately
2. **Challenge:** Additional verification required
3. **Approve:&#x20;**&#x54;ransaction proceeds (if no rules triggered)

### Rules interaction

```mermaid
flowchart TD
    A[Transaction Received] --> B{Evaluate All Rules}
    B --> C{Any Rule Declines?}
    C -->|Yes| D[❌ Transaction Declined]
    D --> E[Cannot Be Overridden]
    C -->|No| F{Any Rule Triggers Challenge?}
    F -->|Yes| G{Another Rule Declines?}
    G -->|Yes| D
    G -->|No| H[⚠️ Challenge Flow Continues]
    F -->|No| I{Any Rules Match?}
    I -->|No| J[🔄 Default Decisioning Applies]
    I -->|Yes| K[✅ Process Matched Rules]

    style D fill:#f44336,color:#fff,stroke:#b71c1c
    style E fill:#f44336,color:#fff,stroke:#b71c1c
    style H fill:#ff9800,color:#fff,stroke:#e65100
    style J fill:#2196f3,color:#fff,stroke:#0d47a1
    style K fill:#4caf50,color:#fff,stroke:#1b5e20
```

- If **any rule declines** → Transaction is **declined** (cannot be overridden)
- If **any rule triggers challenge** → Challenge flow continues (unless another rule declines)
- If **no rules match** → Default decisioning applies

### Example scenario

**Rules configured:**

- Rule A: Challenge when risk score > 600
- Rule B: Decline when risk score > 800

**Transaction with risk score 850:**

1. Rule A matches → Action: Challenge
2. Rule B matches → Action: Decline
3. **Result:** Transaction **DECLINED** (decline is more restrictive than challenge)

**Transaction with risk score 700:**

1. Rule A matches → Action: Challenge
2. Rule B does NOT match
3. **Result:** Transaction **CHALLENGED** (cardholder must authenticate)

## Available actions

Authentication rules can execute two actions:

### 1. Decline

- **Effect:** Reject the transaction immediately
- **Use Case:** High-risk transactions, blocked merchants, suspicious patterns
- **Result:** Transaction fails 3DS authentication

### 2. Challenge

- **Effect:** Trigger additional verification flow (OTP or OOB)
- **Use Case:** Medium-risk transactions requiring cardholder verification
- **Result:** Cardholder must authenticate to proceed

## Authentication result codes

### Success states

- **SUCCESS:** Cardholder authenticated successfully
- **APPROVED:** Authentication approved by issuer

### Failure states

- **FAILURE:** Authentication failed (incorrect OTP, biometric rejection)
- **TIMEOUT:** Cardholder did not respond within 10 minutes
- **CHALLENGE\_REQUIRED:** Additional verification needed
- **DECLINED:** Authentication declined by rules engine

## Use cases

### Use case 1: E-commerce purchase - low risk (frictionless)

**Scenario:** Customer purchases $50 item from known merchant

**Flow:**

```mermaid
sequenceDiagram
    participant Merchant
    participant P1 as Cross River 

    Merchant->>P1: 1. Initiate 3DS authentication request
    P1->>P1: 2. Evaluate rules<br/>Risk score: 450 (low)
    Note over P1: 3. No rules match<br/>No challenge triggered
    P1->>P1: 4. Approve authentication<br/>without cardholder interaction
    P1->>Merchant: 5. Return authentication result<br/>with CAVV and ECI
    Note over Merchant,P1: Result: Frictionless approval<br/>(no authentication challenge required)
```

Merchant initiates 3DS authentication request

1. P1 evaluates rules - Risk score: 450 (low)
2. No rules match - No challenge triggered
3. P1 approves authentication without cardholder interaction
4. P1 returns authentication result with CAVV and ECI
5. **Result:** Frictionless approval (no authentication challenge required)

### Use case 2: E-commerce purchase - medium risk

**Scenario:** Customer purchases $500 item from new merchant

**Flow:**

```mermaid
sequenceDiagram
    participant Merchant
    participant P1 as Cross River 
    participant Partner
    participant Cardholder
    participant VCAS

    Merchant->>P1: 1. Initiate 3DS authentication request
    P1->>P1: 2. Evaluate rules<br/>Risk score: 650 (medium)
    Note over P1: 3. Rule matches:<br/>"Challenge when risk_score > 600"
    P1->>Partner: 4. Send authentication webhook<br/>with OTP details
    Partner->>Cardholder: 5. Present authentication options<br/>(SMS OTP, Email OTP)
    Cardholder->>Partner: 6. Select SMS OTP
    Partner->>Cardholder: 7. Send OTP via SMS<br/>to cardholder's phone
    Cardholder->>Merchant: 8. Enter correct OTP<br/>on merchant's screen
    Merchant->>VCAS: 9. VCAS validates OTP automatically
    VCAS->>P1: 10. Confirm authentication
    P1->>Merchant: 11. Return CAVV and ECI
    Note over Merchant,VCAS: Result: Authentication successful<br/>Transaction approved
```

1. Merchant initiates 3DS authentication request
2. Cross River P1 evaluates rules - Risk score: 650 (medium)
3. Rule matches: "Challenge when risk\_score > 600"
4. Cross River P1 initiates authentication webhook to partner with OTP details
5. Cardholder presented with authentication options (SMS OTP, Email OTP)
6. Cardholder selects SMS OTP
7. **Partner sends OTP via SMS to cardholder's phone** (based on webhook data)
8. Cardholder enters correct OTP on merchant's screen
9. VCAS validates OTP automatically
10. Cross River P1 confirms with VCAS and returns CAVV
11. **Result:** Authentication successful, transaction approved

### Use case 3: E-commerce purchase - high risk

**Scenario:** Customer purchases $1,000 item, cross-border transaction

**Flow:**

```mermaid
sequenceDiagram
    participant Merchant
    participant P1 as Cross River 

    Merchant->>P1: 1. Initiate 3DS authentication request
    P1->>P1: 2. Evaluate rules<br/>Risk score: 850 (high)
    Note over P1: 3. Rule matches:<br/>"Decline when risk_score > 800"
    P1->>P1: 4. Apply "Most Restrictive"<br/>decision logic
    P1--xMerchant: 5. Transaction declined
    Note over Merchant,P1: Result: Transaction declined immediately<br/>(no challenge triggered,<br/>no authentication required)
```

1. Merchant initiates 3DS authentication request
2. P1 evaluates rules - Risk score: 850 (high)
3. Rule matches: "Decline when risk\_score > 800"
4. Apply "Most Restrictive" decision logic
5. **Result:** Transaction declined immediately (no challenge triggered, no authentication required)

### Use case 4: OOB authentication (OUTOFBANDOTHER)

**Scenario:** Customer uses partner's mobile app with biometric support

**Flow:**

```mermaid
sequenceDiagram
      participant Customer as Customer<br/>(Cardholder)
      participant Merchant
      participant P1 as Cross River P1
      participant Partner

      Note over Customer,Partner: 3DS Authentication Flow - OOB Biometric

      Customer->>Merchant: 1. Initiate $300 purchase<br/>in mobile app
      Merchant->>P1: 2. Initiate 3DS authentication request
      P1->>P1: 3. Evaluate authentication rules<br/>Medium risk, challenge triggered
      P1->>Partner: 4. Send authentication webhook<br/>with OOB biometric details
      P1->>Merchant: 5. Return authenticationId<br/>and transactionId
      Note over Partner: Partner uses webhook from Cross River
      Partner->>Customer: 6. Send push notification<br/>to mobile device
      Customer->>Customer: 7. Authenticate with Face ID<br/>in partner's app
      Customer->>Partner: 8. Authentication completed
      Partner->>P1: 9. POST /v1/3ds/{id}/validate<br/>status: "SUCCESS"
      P1->>P1: 10. Confirm authentication<br/>(VCAS validation)
      P1->>Merchant: 11. Return CAVV and ECI
      Note over Customer,P1: Result: Frictionless authentication<br/>Transaction approved
```

1. Customer initiates $300 purchase in mobile app
2. Merchant initiates 3DS authentication request
3. P1 evaluates rules - Medium risk, challenge triggered
4. Cardholder presented with authentication options (partner configured for OOB biometric)
5. P1 initiates authentication webhook to partner
6. P1 returns `authenticationId` and `transactionId` to merchant
7. Partner receives webhook and sends push notification to customer's mobile device
8. Customer authenticates with Face ID in partner's app
9. **Partner&#x20;**&#x63;alls [POST /v1/3ds/\{id}/validate](docId:0-MnW4CrKX4T_GPrujleW)**&#x20;&#x20;**&#x77;ith status: "SUCCESS" to send result to P1
10. P1 confirms with VCAS and returns CAVV and ECI
11. **Result:** Frictionless authentication, transaction approved

[title] Reconciliation and balance sync
[path] Accounts/

## Why balance sync matters

Balance synchronization and reconciliation are at the center of any activities that occur within a bank account. By synchronizing activity, and reconciling debits and credits, the bank and the account owner get an accurate picture of the state of the funds in the account.

When funds are insured, the FDIC requires banks to know exactly who owns each dollar. Without that clarity, insurance pass-through breaks down.

Finally, you want access to this sync, to be on top of your funds for your own accounting purposes.

## Settlement and re-sequencing

Cross River's **COS banking core&#x20;**&#x69;s a real-time system that operates 24/7. When a transaction posts to an account, it generates an activity record containing several data points, including the transaction amount and the resulting account balance. This is what appears in the Account Activity tab of the deposit account details page in **COS Explorer**.

FBO structures can involve multiple separate subledgers (subaccounts). Because COS creates subledgers in real time, each subledger stays aligned through daily or real-time reconciliation.

The COS Core performs its daily settlement process every night on all master accounts. During this time, the system re-sequences activity records to display credits before debits, standard practice among banks when presenting account activity to customers.

Resequencing records also involves adjusting the ending account balance for statements. As a result, the balance on the statement may differ from the balance after posting the transaction. The table below displays eight records for an account on a specific date, showing how the balance is reflected at different times, and showing the sequence numbers.

| **Description**                                                        | **Amount&#x20;** | **Statement balance&#x20;** | **Resulting balance at posting** | **Sequence number** |
| ---------------------------------------------------------------------- | ---------------- | --------------------------- | -------------------------------- | ------------------- |
| Monthly Fee                                                            | $(15.00)         | $ 7,833.11                  | $73.11                           | 18                  |
| SUBTESTING DIRECTDEP ACH PPD ID:3333385474 REF: A0058W3Y7963           | $7,500.00        | $7,588.11                   | $7,573.11                        | 13                  |
| SUBTESTING NETFLIX ACH PPD ID:3333385474 REF: A005Q8CU2N3M             | $(19.99)         | $7,813.12                   | $7,553.12                        | 19                  |
| SUBTESTING TRANSFER ACH PPD ID:3333385474 REF: A005E96Z78FJ            | $150.00          | $ 7,738.11                  | $7,703.12                        | 14                  |
| Fee Refund                                                             | $15.00           | $7,753.11                   | $7,718.12                        | 15                  |
| SUBTESTING NETFLIX ACH PPD ID:3333385474 REF: A005Y95DK5WJ             | $20.00           | $7,773.11                   | $7,738.12                        | 16                  |
| ACH DIS REF: ADIS00511O12 PUSHORIGINATION FUNDING 260105 - 1PAYMENT(S) | $(10.00)         | $7,803.12                   | $7,728.12                        | 20                  |
| SUBTESTING TRANSFER ACH PPD ID:3333385474 REF: A00530RDWH5X            | $75.00           | $7,848.11                   | $7,803.12                        | 17                  |


[title] Program requirements
[path] Cards/Issuing models/Integrated issuing/Advanced authorization/

## Partner requirements intro

Partners must fulfill certain requirements, as outlined below, to join the Cross River Advanced Authorization program.

## Operational and compliance readiness

- Strong compliance, risk and fraud monitoring practices must be in place.
- Participation readiness consists of Cross River third-party, credit and business risk assessments prior to onboarding.

## Technical integration capability

- Ability to extend and support API endpoints for Cross River to send authorization and clearing messages to the partner, conforming to Cross River specifications.
- Response time must be less than 1 second to avoid declines due to timeouts.
- Completion of Sandbox and Production testing, including several advanced authorization and clearing scenarios and reconciliation.

Contact your Cross River representative for an overview of requirements and launch conditions for your program, including any of our advanced authorization modes, as applicable.

[title] Implementation steps
[path] Cards/Issuing models/Integrated issuing/Digital wallet tokenization/

# Implementation steps for enabling digital wallets

Follow these steps to enable digital wallets in your card program.

## 1. Establish a BIN or BIN range

Secure a Bank Identification Number (BIN) or a specific rate within a BIN from your sponsor bank. Work with your program manager to reserve the BIN or range.

This BIN provides the foundation for all digital wallet settings. The network project for tokenization ties directly to it. It covers Apple Pay, Google Pay, and Samsung Pay support.

:::hint{type="info"}
To support additional wallets, contact your Cross River Relationship Manager
:::

## 2. Design and configure card art

Design the visual asset that represents your card in wallets. Digital wallet card art differs from physical card printing. It must meet strict digital specifications.

### Card art specs (general standard)

| Asset    | Size            | Format | Notes                                                          |
| -------- | --------------- | ------ | -------------------------------------------------------------- |
| Card art | \~1536 x 969 px | PNG    | No rounded corners; wallets add them automatically; under 3 MB |
| Logo     | \~1372 x 283 px | PNG    | Transparent background                                         |
| Icon     | \~100 x 100 px  | PNG    | Used for app and notification icons                            |

Check specific network specs for exact requirements.

### Metadata

Provide these additional details with your card art:

- **Colors:**  Define Hex/RGB codes for background, PAN text, and label text. These ensure readability in the wallet UI.
- **Terms and conditions:&#x20;**&#x41; URL or text file with the cardholder agreement. This appears during the "Add to Wallet" flow.
- **Contact info:&#x20;**&#x43;ustomer service email, phone number, and website URL.

## 3. Set up the network project

Your program manager or processor opens a "Digital Enablement" project. They open it with the card networks (Visa or Mastercard) on your behalf.

**Action:** Submit your card art assets and configuration metadata. Send these to your implementation manager.

**Next step:** The network creates a Token Service Provider (TSP) configuration. This links your BIN to the digital wallet ecosystem (such as Apple, Google, and Samsung).

## 4. Test and whitelist

Validate the tokenization flow before going live. Use test cards for all scenarios.

### Whitelisting

Your processor allows specific test PANs or ranges. Cards not on the list fail during this phase.

### Scenarios to test

- Successful provisioning (green path)
- Declined provisioning (e.g., locked card)
- Token lifecycle events (suspend and resume from your app)
- Transaction processing with provisioned wallets

## 5. Get approvals and launch

After testing, get formal approvals to activate your program.

### Network approval

Your processor submits "Financial Institution" forms. These forms confirm the setup is valid and tested.

### Wallet provider approval

The card networks forward your configuration to Apple, Google, and Samsung. This includes your art, terms, and app info.

### Outcome

Once the wallet providers approve, they switch on the BIN in their production systems.

### Go-live

Your implementation manager assists to remove whitelist restrictions. All cardholders can then add cards to their digital wallets.

[title] Monthly dispute and chargeback reporting
[path] Cards/Reporting and compliance/

## Overview

This report enables Cross River to meet its regulatory obligations, satisfy card network monitoring requirements, manage financial risk, and maintain effective third-party oversight as required by banking regulators. These reports ensure consumer protection standards are upheld and that the bank remains audit-ready at all times.

## Sample File

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/PRidKvuv6Nb_J-lpMCBNN_dispute-and-chargeback-report.xlsx" label="Dispute and Chargeback Report.xlsx"}

## Explanation of fields

| Field                              | Data Type       | Description                                                                                                                                                                                                                  | Required/Optional/Conditional |
| ---------------------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| Number of Card transactions        | Integer         | Total count of card transactions processed during the reporting period (includes purchases, ATM withdrawals, and other card-initiated transactions). Serves as the denominator for dispute and chargeback rate calculations. | Required                      |
| Card Spend ($)                     | Decimal         | Total dollar volume of all card transactions processed during the reporting period. Represents gross spend before any reversals, refunds, or chargebacks.                                                                    | Required                      |
| Number of disputed Transactions    | Integer         | Total count of transactions formally disputed by cardholders during the reporting period. Includes all disputes regardless of outcome (won, lost, pending).                                                                  | Required                      |
| Disputed Amount                    | Decimal         | Total dollar value of all transactions disputed by cardholders during the reporting period, regardless of resolution outcome.                                                                                                | Required                      |
| Dispute Rate                       | Decimal         | Ratio of disputed transactions to total card transactions. <br />**Formula:**<br />Number of Disputed Transactions ÷ Number of Card Transactions. Expressed as a percentage.                                                 | Required (Calculated)         |
| Dispute $ Rate                     | Decimal         | Ratio of disputed dollar volume to total card spend. <br />**Formula:**<br />Disputed Amount $ ÷ Card Spend $. Expressed as a percentage. Measures dollar-weighted dispute exposure.                                         | Required (Calculated)         |
| Number of Chargeback Transactions  | Decimal         | Total count of disputes that escalated to a formal chargeback (i.e., the transaction was reversed back to the merchant/acquirer through the network). A subset of disputed transactions.                                     | Required (Calculated)         |
| Number of Chargeback $             | Decimal         | Total dollar value of all chargebacks processed during the reporting period. Represents funds reversed through the network dispute process.                                                                                  | Required (Calculated)         |
| Chargeback Number rate             | Decimal         | Ratio of chargeback transactions to total card transactions. <br />**Formula:**<br />Number of Chargebacks ÷ Number of Card Transactions. Key network monitoring threshold metric (Visa VDMP triggers at 0.9%).              | Required (Calculated)         |
| Chargeback $ Rate                  | Decimal         | Ratio of chargeback dollar volume to total card spend.<br />**Formula:**<br />Chargeback $ Amount ÷ Card Spend $. Measures dollar-weighted chargeback exposure relative to overall portfolio volume.                         | Required (Calculated)         |
| Reporting Period                   | Date or VARCHAR | What period does each row represent                                                                                                                                                                                          | Required                      |




[title] Integrated status and states
[path] Cards/Card lifecycle/

## Card status and state

Cross River defines several card statuses within COS that play a key role in how transactions are processed. These statuses help govern the card’s lifecycle and support important compliance and security policies.

Each status directly impacts whether a transaction is approved and what message is sent back to the card network during a transaction attempt. COS uses this status system to make sure cards are managed securely and accurately.

Card status also helps determine the overall card state.

COS assigns both **statuses** and **states** to cards to govern their behavior during authorization:

State changes are communicated via webhook events (such as Cards.Status.Changed) to keep partner systems in sync.

## Card status

The status refers to the card’s activation level and whether the cardholder is allowed to use it. The card status also contributes to the [card state](docId\:T8YPzopBRVd8Z8-pRjiOg).

The `status` attribute is the activation status of the card and if the card can be used by the cardholder:

- *Unactivated* - The card has not been activated by the cardholder
- *Active* - The card is active and ready for use
- *Suspended* - The card is currently suspended
- *Closed* - The card is closed

The `orderStatus` attribute is the current status of the order:

- *Order Pending* - The order is pending fulfillment by the processor
- *Completed* - The order has been fulfilled by the processor. For physical cards, the card is being printed and mailed to the cardholder
- *Failed* - The order failed at the processor level

The status of a newly created card is *Unactivated* and the order status is *OrderPending*. The order status updates to *Completed* when the order is complete. For physical cards, this means the card has been mailed to the customer.

Managing a card program may require you to update card statuses for specific scenarios. For example, you may want to offer your customers added security by allowing them to temporarily suspend a card that has been misplaced.

Update activated card status when necessary to suspend, block, or close a card:

- *Suspended -&#x20;*&#x53;uspending a card temporarily inactivates it until you remove the suspension by activating the card again (unsuspending). The cardholder is allowed to remove this block.
  - Refer to the [suspend card](docId\:K4JUvw-0ny1dOxTSOVNFx) and [unsuspend a card](docId\:m4ISy77gMgYBkgwRXliaX) APIs.
- *Placed on administrative block -&#x20;*&#x41;n administrative block means that the card is both suspended and has been blocked using the `admin-block` endpoint. Only an admin can remove this block.
  - Refer to [admin-block](docId\:eRw0IIaPwTMvyz_stwvLJ) API.
- Closed
  - Refer to the [close card](docId:9tDjvhU9S37a-7Cqj3VEJ) API.

:::hint{type="warning"}
**IMPORTANT**
Once the card is closed, it cannot be reactivated.
:::

## Card states

A given card status can be due to more than one reason. For example, a card might be **suspended** because it was lost, stolen, or blocked due to fraud. Knowing the reason for a given status is important to manage the card life cycle. At Cross River we call combination of status and other attributes *card state*.

You see the card state in the `Cards.Status.Changed` webhook event.

:::hint{type="info"}
You need to [register](docId\:BN5XtgkJogBe-CtwomCbS) to receive webhooks.
:::

| Card state                        | Card status | Other related fields and their values                                                           |
| --------------------------------- | ----------- | ----------------------------------------------------------------------------------------------- |
| Card has never been Activated     | Unactivated |                                                                                                 |
| Card Activated                    | Active      |                                                                                                 |
| Card Closed                       | Closed      |                                                                                                 |
| Card Lost                         | Suspended   | `StatusReasonCode` = **Lost**                                                                   |
| Card Stolen                       | Suspended   | `StatusReasonCode` = **Stolen**                                                                 |
| Admin Blocked                     | Suspended   | `AdminBlocked` = **true**                                                                       |
| Fraud Blocked                     | Suspended   | `FraudSuspect` = **true**<br />`StatusReasonCode` = **FraudBlocked**                            |
| Card Suspended by User            | Suspended   | `StatusReasonCode` = **NotSet**                                                                 |
| Card Unsuspended by User or Admin | Active      | `StatusReasonCode` = **NotSet**<br />`FraudSuspect` = **false**<br />`AdminBlocked` = **false** |


[title] Transaction master file
[path] Cards/Reporting and compliance/

## Overview

This file captures all balance-affecting transactions you or the processor post to the ledger each business day. Use it for transaction monitoring, fraud detection, and settlement

## File delivery and format

Refer here for [file delivery](docId\:i4b_iqAVcQFp9m1611twC) and [file format](docId\:i4b_iqAVcQFp9m1611twC) details.

## Sample transaction master file

The following file contains sample data.  If you have any questions, please be in touch with your onboarding team.

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/tv0_s9FUoIIdRQsCu4vdM_transaction-master-by-program-specs.xlsx" label="Transaction Master by Program Specs.xlsx"}

## Explanation of fields

Each record must include the fields below, separated by commas. Please take note of the data type to avoid formatting or parsing issues.

This file covers several programs. The tables below show how to populate the fields:

- [Core fields: Mandatory](docId\:PVjJRzxx5Ut2Km9q2lyt_)&#x20;
- [ACH programs](docId\:PVjJRzxx5Ut2Km9q2lyt_)&#x20;
- [Prepaid/GPR programs](docId\:PVjJRzxx5Ut2Km9q2lyt_)&#x20;
- [Credit programs](docId\:PVjJRzxx5Ut2Km9q2lyt_)&#x20;
- [Commercial programs](docId\:PVjJRzxx5Ut2Km9q2lyt_)&#x20;

***

## Core fields: Mandatory

| Field                      | Data Type                            | Description                                                                                           | Required/<br />Conditional            |
| -------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------- |
| unique\_program\_id        | VARCHAR(12)                          | Identifier provided by the processor to distinguish programs for settlement and reconciliation.       | Required                              |
| product\_id                | VARCHAR(12)                          | If a given program has more than one type of card, the processor should include a product identifier. | Required                              |
| user\_id                   | VARCHAR(50)                          | Identifier given to each unique customer or cardholder.                                               | Required                              |
| card\_id                   | VARCHAR(50)                          | Identifier given to each unique card issued to an account.                                            | Required                              |
| first\_digits              | VARCHAR(8)                           | First 8 digits of the card number, also known as BIN                                                  | Conditional                           |
| last\_digits               | VARCHAR(4)                           | Last 4 digits of the card number                                                                      | Conditional                           |
| transaction\_id            | VARCHAR(50)                          | Unique identifier for each transaction.                                                               | Required                              |
| posted\_date               | DATETIME (YYYY-MM-DD HH\:MM\:SS.sss) | The date the transaction is posted to the customer account                                            | Required                              |
| settlement\_date           | DATETIME (YYYY-MM-DD HH\:MM\:SS.sss) | Date and time when the transaction was settled. For ACH- date funds were settled via FED.             | Conditional- blank if not yet settled |
| transaction\_type          | VARCHAR(20)                          | Type of transaction performed.                                                                        | Required                              |
| transaction\_status        | VARCHAR(20)                          | Current status of the transaction.                                                                    | Required                              |
| Billing\_amt               | DECIMAL(18,4)                        | The amount of the transaction in the currency of the cardholder account                               | Required/<br />Conditional            |
| Settlement\_amt            | DECIMAL(18,4)                        | The amount of the transaction in the currency of settlement between issuer and acquirer               | Conditional                           |
| transaction\_amount        | DECIMAL(18,4)                        | Amount of the transaction in settlement currency.                                                     | Required                              |
| transaction\_currency      | VARCHAR(3)                           | ISO 4217 currency code for the transaction.                                                           | Required                              |
| billing\_currency          | VARCHAR(3)                           | ISO 4217 standard currency code of the cardholder account, in this case, U.S. dollar                  | Conditional                           |
| settlement\_currency       | VARCHAR(3)                           | ISO 4217 standard currency code of settlement between issuer and acquirer – usually U.S. dollar       | Conditional                           |
| transaction\_country\_code | VARCHAR(3)                           | Country code at point of sale                                                                         | Required/<br />Conditional            |
| is\_cashback               | BOOL                                 | Indicator that a Purchase included a cashback component                                               | Conditional                           |
| cashback\_amt              | DECIMAL(18,4)                        | Indicate cash amount from a purchase with cashback                                                    | Conditional                           |
| transaction\_CDI           | VARCHAR(1)                           | Transaction Credit (C) or Debit (D) indicator                                                         | Required                              |
| network                    | VARCHAR(10)                          | Card network the transaction was processed on.                                                        | Required                              |
| is\_chargeback             | BOOL                                 | Chargeback transaction indicator (True, False)                                                        | Conditional                           |
| Interchange                | DECIMAL(18,4)                        | Interchange fee associated to this transaction                                                        | Required/<br />Conditional            |
| description                | VARCHAR(100)                         | Human-readable transaction description.                                                               | Required                              |
| is\_ecommerce              | BOOL                                 | E-commerce indicator (True, False)                                                                    | Conditional                           |
| is\_pin                    | BOOL                                 | PIN transaction indicator(True, False)                                                                | Required/<br />Conditional            |
| is\_sig                    | BOOL                                 | Signature transaction indicator(True, False)                                                          | Required/<br />Conditional            |
| Merchant\_id               | VARCHAR(50)                          | Merchant identifier from the card network                                                             | Conditional                           |
| merchant\_category\_code   | VARCHAR(4)                           | Code identifying category of the merchant, also known as MCC                                          | Required                              |
| merchant\_name             | NVARCHAR(100)                        | Merchant name as sent by the card network                                                             | Required                              |
| merchant\_city             | VARCHAR(50)                          | Merchant city as sent by the card network                                                             | Required                              |
| merchant\_state            | VARCHAR(20)                          | Merchant state as sent by the card network                                                            | Required                              |
| merchant\_country          | NVARCHAR(100)                        | Merchant country as sent by the card network                                                          | Required                              |
| is\_mobile                 | BOOL                                 | Whether a token requestor ID was present, indicative of a mobile wallet transaction(True, False)      | Conditional                           |
| is\_contactless            | BOOL                                 | Whether the card used contactless POS interface(True, False)                                          | Conditional                           |
| card\_present              | BOOL                                 | Whether the card was physically present when conducting the transaction(True, False)                  | Conditional                           |

## ACH programs

| Field                       | Data Type   | Description                                                                                                                            | Required/<br />Conditional |
| --------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| ach\_sec\_code              | VARCHAR(3)  | Standard NACHA defined entry Class code identifying the type of ACH entry.                                                             | Required                   |
| ach\_direction              | VARCHAR(10) | Direction of the ACH entry relative to the cardholder's account.                                                                       | Required                   |
| source\_trace               | VARCHAR(20) | ACH Trace Number assigned by the external ODFI to incoming ACH transactions                                                            | Required                   |
| originator\_routing\_code   | VARCHAR(9)  | 9-digit ABA routing number identifying the bank that initiated the ACH transaction. Tells you which institution the payment came from. | Required                   |
| recipient\_routing\_code    | VARCHAR(9)  | ABA routing number of the receiving financial institution.                                                                             | Conditional                |
| originator\_name            | VARCHAR(50) | Name of the ACH originator (company or individual).                                                                                    | Required                   |
| payee\_name                 | VARCHAR(50) | Name of the ACH payee/receiver.                                                                                                        | Conditional                |
| ach\_return\_code           | VARCHAR(4)  | Reason code if the ACH entry was returned.                                                                                             | Conditional                |
| ach\_return\_date           | DATETIME    | Date and time the ACH return was received.                                                                                             | Conditional                |
| ach\_batch\_number          | VARCHAR(7)  | Batch number within the ACH file this entry belongs to.                                                                                | Required                   |
| ach\_effective\_entry\_date | DATE        | Date the originator intended the entry to settle.                                                                                      | Required                   |
| odfi\_id                    | VARCHAR(9)  | Routing number of the Originating Depository Financial Institution.                                                                    | Required                   |

### Prepaid/GPR programs

| Field         | Data Type     | Description                                      | Required/<br />Conditional |
| ------------- | ------------- | ------------------------------------------------ | -------------------------- |
| load\_source  | VARCHAR(30)   | Source of the card load/funding.                 | Required                   |
| load\_amount  | DECIMAL(18,4) | Amount loaded onto the card in this transaction. | Conditional                |
| load\_channel | VARCHAR(20)   | Channel through which the load was performed.    | Conditional                |
| fee\_type     | VARCHAR(30)   | Type of fee charged (if transaction is a fee).   | Conditional                |
| fee\_amount   | DECIMAL(18,4) | Fee amount charged.                              | Conditional                |

## Credit programs

| Field               | Data Type     | Description                                                                 | Required/<br />Conditional |
| ------------------- | ------------- | --------------------------------------------------------------------------- | -------------------------- |
| credit\_limit       | DECIMAL(18,4) | Total credit limit on the account at time of transaction.                   | Required                   |
| interest\_charged   | DECIMAL(18,4) | Interest amount charged in this cycle (if transaction is interest posting). | Conditional                |
| charge\_off\_amount | DECIMAL(18,4) | Balance at time of closing following a charge-off.                          | Conditional                |
| charge\_off\_date   | DATETIME      | Date and time the account was charged off.                                  | Conditional                |
| is\_cash\_advance   | BOOLEAN       | Whether this transaction is a cash advance.                                 | Required                   |

## Commercial programs

| Field                   | Data Type   | Description                                                                                         | Required/<br />Conditional |
| ----------------------- | ----------- | --------------------------------------------------------------------------------------------------- | -------------------------- |
| pos\_entry\_type        | VARCHAR(20) | How the card was read on<br />that specific swipe<br />(chip, swipe, manual key, contactless, etc.) | Conditional                |
| blocked\_mcc\_violation | BOOLEAN     | Whether this transaction attempted a blocked MCC category.                                          | Required                   |
| expense\_category       | VARCHAR(30) | Each individual transaction gets categorized (travel, meals, office supplies, fuel, etc.)           | Conditional                |
| receipt\_attached       | BOOLEAN     | Whether a receipt/documentation was attached to this transaction.                                   | Conditional                |


[title] Accounts FAQ
[path] Accounts/

## Accounts – Frequently Asked Questions

This section answers common questions about deposit accounts managed through the Cross River platform, including types of accounts, subledgers, FBO accounts, and account operations.

## General and account types

**What kinds of deposit accounts does Cross River offer?**
Cross River supports [checking and savings](docId\:CH79CVvK5RKYdFluIvp-D) accounts, certificates of deposit (CDs), “for-benefit-of” (FBO) accounts, and subledgers (virtual accounts) under a master account.&#x20;

**What is a checking or savings account?**
These are standard deposit products in which customers deposit and withdraw funds. A [checking](docId\:CH79CVvK5RKYdFluIvp-D) account allows frequent transactions; a [savings](docId\:CH79CVvK5RKYdFluIvp-D) account is meant for funds held longer-term and may earn interest.&#x20;

**What is a certificate of deposit (CD)?**
A [CD](docId\:waCTNKIkSMBfK0rigKvrC) is a time-deposit account with a fixed interest rate and a maturity term. Early withdrawals usually incur a penalty.

**What is an FBO (“for benefit of”) account?**
An [FBO](docId\:TbRKOj7ConnpBGQUkLe_t) account is opened by a fintech/platform for the benefit of end-users. The master bank account holds the pooled funds and the platform tracks individual user balances off-ledger.&#x20;

**What are subledgers (virtual accounts)?**
[Subledgers](docId\:OdZF-4AInebu2YUz5GRCs) are virtual “sub-accounts” under a master deposit account. They allow granular tracking of user or program-level funds without opening full bank accounts for each individual.&#x20;

## Opening and managing accounts

**What do I need to open a deposit account?**
To [open an account](docId\:cmmg7siJ20SmZszKDBb4Q) you generally need: a valid product ID (account template), a customer ID, address and phone number, a cleared OFAC status, and matching customer classification to the account type. (docs.crossriver.com)

**Can I change account properties after opening?**
Yes. In the COS system you can update account title, statement address, status, credit limits or overdraft settings based on product configuration and partner permissions.&#x20;

## Account activity, balances & transactions

**How are transactions handled on accounts?**
Each transaction posts as a debit on one account and a credit on another, atomically. Accounts always remain balanced.&#x20;

**What is an “availability schedule”?**
Some transactions (e.g., ACH credits) may have delayed [availability](docId\:EWmEZ1pIgcRBtNE1Tvziw). The availability schedule shows how much of the credited amount becomes usable each posting day.&#x20;

**What is a memo post?**
A [memo post](docId\:EWmEZ1pIgcRBtNE1Tvziw) is a temporary activity entry indicating incoming or outgoing funds that are pending final posting. It converts to a posted transaction after settlement.&#x20;

## Subledgers&#x20;

**Why use subledgers instead of opening individual accounts for each user?**
[Subledgers](docId\:OdZF-4AInebu2YUz5GRCs)  give you the flexibility to manage many users or program segments under a single master account number, great for wallets, marketplaces, or internal credit tracking.&#x20;

**What is the difference between “direct” and “passthrough” subledger configuration?**
[Direct](docId\:OdZF-4AInebu2YUz5GRCs) : The aggregate of subledger balances equals the master account balance; individual subledgers cannot go negative.&#x20;

****[Passthrough](docId\:OdZF-4AInebu2YUz5GRCs): Subledgers can go negative while the master account balance is the ultimate availability check.&#x20;

## Deposit Sweeps

**What happens if you have enabled a partner for Sweeps and then they open 1000 accounts, is that more work for Cross River?                                                                                                     &#x20;**&#x4E;o, because the product is what is enabled for [Deposit Sweeps](docId:1uMkKV1qCvkWJffuLLyNK) so every deposit account under that product will be picked up for Sweeps.

**Can a customer choose to opt out for a specific bank or account?                                        &#x20;**&#x59;es, they can be added to an exclusion list.

**How do I enable IntraFi Sweeps?                                                                                                                &#x20;**&#x49;t is a simple product configuration change performed by Cross River.

**What happens to the deposit product interest rate if I enable Sweeps?                                &#x20;**&#x54;he interest rate stays the same. IntraFi honors the interest rate on the account with Cross River, even if the rate is different at the other banks.



:::hint{type="info"}
For more information, please visit our [accounts](docId\:ZQyAf4oeI1rEzpBOI78MJ) pages.
:::




[title] Subledgers
[path] Accounts/

:::CtaButton{label="Subledgers APIs" docId="6E-0rluXn21VojfGN5wEE" docAnchorId="#aCTGD" openInNewTab="true"}

:::

## Cross River subledger solution

Cross River gives you the ability to [open a subledger](docId\:xqDRbzh8lzHUQIWZEdHoZ) instantly and on-demand. A subledger is linked to a master account, usually an FBO. Subledgers (sometimes referred to as *subaccounts* or *virtual accounts* in the broader Fintech industry) allow segregation of funds within the FBO/Master account. Each subledger is assigned its own account and routing numbers so that payment transactions (such as ACH, Wire, or RTP) can be originated from or received by the individual subledger. This allows partners who use FBOs to create a bank account-like experience for their customers, unlocking payment and card experiences.&#x20;

:::hint{type="info"}
In subledger API endpoints, the term *subaccounts* is used instead of subledgers. For instance, `POST /v1/dda/subaccounts`.
:::

## What is a subledger

A *subledger* is a virtual account that sits under a master account (usually an FBO). This means that any activity on the funds in the subledger are reflected as activities of the main account. However, the subledger can have a beneficiary who is not the owner of the main account. This makes subledgers an ideal way for you to send and track payments for your end users (customers), instead of maintaining a separate deposit account for each one. A single FBO account can have a very large number of subledgers.

In the Cross River banking core, a subledger is a first-class citizen, meaning it supports all the operations available to accounts. All transactions first go through the subledger, followed by the master account.

There are a few types of subledgers. Funds flow into and out of each more or less the same way, but with certain specific differences. All the subledgers under a single master account always sum to the balance of the master account. It is virtually impossible for a master account and its subledgers to be out of balance. The figure below illustrates the relationship among the subledgers (subaccounts).

:::hint{type="info"}
The subledger and master account balances are updated atomically and never out of sync. Funds posted to a subledger are immediately available
:::

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/A7J62-9JVYJrHrDipzdtU-20260512-080151.png)

## Subledger types

In Cross River, there are a few different types of subledgers:

- Implicit
- Passthrough
- Direct

### Implicit subledgers

Every master account has what is called an *implicit subledger*, which is automatically created and maintained. The implicit subledger accounts for the portion of the balance directly attributed to the master account's activity and has the same account number as the master. The implicit subledger is how the Cross River banking core ensures that all the subledgers sum to the master account balance.

If more funds are attributed to other subledgers than directly in the master account, the implicit subledger account balance could go negative.

### Passthrough subledgers

A passthrough subledger does not require a sufficient balance to fulfill a payment or transaction request. In other words, a passthrough subledger can have a negative balance. The banking core relies on the master account balance to determine whether to fulfill the request or not.

Even if a specific subledger doesn't have enough funds to send a payment, the payment goes through if the master account has the funds.

Your onboarding manager will guide you in your configuration, based on your operational model and funds flows.

### Direct subledgers

Under a direct ledger configuration, unlike passthrough subledgers, the banking core uses the subledger balance in transaction decisions. This means that a payout that exceeds the subledger balance will be rejected by COS.

### Comparing direct and passthrough

![Subledgers types and funds flows](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/rwZgghwZLHykeFlk9n50r-20260324-081831.png)

| Key Features                                                                                                                                                 | Passthrough | Direct |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | ------ |
| Instantaneous rollup of transactions to the master account balance                                                                                           | Y           | Y      |
| Fully routable on all payment rails (for example, ACH, Wires, instant payments)                                                                              | Y           | Y      |
| Supports webhooks on subledger events (such as inbound transactions)                                                                                         | Y           | Y      |
| Reflects balance of transactions cleared against account                                                                                                     | Y           | Y      |
| Subledger can carry a negative balance                                                                                                                       | Y           | N      |
| Will allow transactions to clear against subledger when balance \< $0 (as long as the master account has sufficient funds)                                   | Y           | N      |
| Best for model where funds availability is managed at the subledger level                                                                                    | N           | Y      |
| Best for model where funds availability is managed outside of subledger with need for visibility and efficiency of transactional flows with co-mingled funds | Y           | N      |

## Subledger funds flow

The following example shows funds movement in a master account with 2 passthrough subledgers.

::::WorkflowBlock
:::WorkflowBlockItem
In this example, a checking account has been opened with an initial deposit of $500. Note that an implicit subledger with the same number has been created and is tracking the balance of the master.

| **Master Account #** | **Subledger #**             | **Balance** |
| -------------------- | --------------------------- | ----------- |
| 2000012345           | --                          | $500        |
|                      | **2000012345** *(Implicit)* | $500        |
:::

:::WorkflowBlockItem
Next, two subledgers are created at the request of the partner:

| **Master Account #** | **Subledger #**         | **Balance** |
| -------------------- | ----------------------- | ----------- |
| 2000012345           | --                      | $500        |
|                      | 2000012345 *(Implicit)* | $500        |
|                      | **300007770001**        | $0          |
|                      | **300007770002**        | $0          |
:::

:::WorkflowBlockItem
A wire for $500 is then sent to each of the subledgers:

| **Master Account #** | **Subledger #**         | **Balance** |
| -------------------- | ----------------------- | ----------- |
| 2000012345           | --                      | **$1500**   |
|                      | 2000012345 *(Implicit)* | $500        |
|                      | 300007770001            | **$500**    |
|                      | 300007770002            | **$500**    |
:::

:::WorkflowBlockItem
Finally, an ACH for $1,000 is pulled from the master account directly:

| **Master Account #** | **Subledger #**         | **Balance** |
| -------------------- | ----------------------- | ----------- |
| 2000012345           | --                      | **$500**    |
|                      | 2000012345 *(Implicit)* | **($500)**  |
|                      | 300007770001            | $500        |
|                      | 300007770002            | $500        |
:::
::::

:::hint{type="info"}
Note that the implicit subledger is now negative; however, the sum of the subledger still correctly reflects the master account's balance. It is good practice to transfer subledger funds to the master account before spending the money. Ideally the implicit balance should match the master balance.
:::

## No bank statement

Subledgers are essentially temporary holding places for funds before they move into or out of the master account. Therefore, there is no way for the system to generate a statement or balance report for a subledger.

To substantiate a subledger balance, the sum of all subledger balances must total the master account balance. Since subledgers *do not settle*, their activity does not re-sequence like that of the master account. Therefore, there is no way to produce a historical record of subledger balance history.

 


[title] Interest rates
[path] Accounts/Accounts features/

## Cross River rates

Cross River offers both flat and tiered interest rates using a compounding method. Interest accrues daily and is posted monthly, on the last day of the month.

When you set up an interest-bearing account [product type](docId\:Es1qAnf1SsnUr2Gq4IfSe), the interest rate profile is part of a product's core setup. We assign a default interest rate profile when configuring a product type, even if it's the only  added. This ensures the interest rate applies to any account opened for that product type. Adding multiple rate profiles gives you the flexibility to change interest rates as needed.

Since rate profiles are part of the core setup, only the Cross River operations team can configure them. Once configured, we provide you with the `rateCard ID`s. It's important to store all your rate card IDs in case you need to change a rate profile on an account.

:::hint{type="warning"}
**IMPORTANT**
There is no endpoint or attribute that allows you to view information on the rate profile created for your products. You must store that information as well as your rateCard IDs we provide.
:::

## Tiered interest rate accounts

Tiered interest rate accounts are an excellent way for you to offer customers higher interest rates as their balances grow. With these accounts, the interest rate can be configured to increase with higher balances, providing a better return on their money.

Here's how it works: The rate card is divided into different tiers, each with its own interest rate. For example, the first tier might offer 1% interest on balances up to $1,000. If the balance exceeds $1,000, the next tier might offer 2% interest on the amount above $1,000.

This setup encourages customers to save more since higher balances earn higher interest rates, helping customers grow their savings more effectively. It also provides a clear and structured way for you to offer competitive savings products. By using tiered interest, you can attract and retain customers who are looking for better returns on their deposits.

**Tiered interest rate limitations**

- Not available for customers using savings account sweeps functionality
- Activity-based actions (for example, make one deposit and two transactions, your rate will be x%) are not supported
- Overall balance triggers (for example, the balance is >$10,000, pay 2% on entire balance, otherwise pay $0) are not supported

## Configure your rate profile

When working with the Cross River Operations Team to create your rate profiles, you must provide the following information, regardless of whether or not you want to create tiered interest:

| Field       | Description                                                                                                                                      |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| Tier        | The tier number within the rate card. This is automatically assigned when a new interest rate card is created and when multiple tiers are added. |
| Start       | The date the tier comes into effect.<br />Optional field. By default, takes effect the date the rate card is created.                            |
| Rate Method | How the interest rate is calculated                                                                                                              |
| Partner %   | The percentage of the Effective % paid by you                                                                                                    |
| Min Balance | The minimum balance required for the rate tier                                                                                                   |
| End         | The date when the tier is no longer active.<br />Optional field. By default, no value.                                                           |
| Effective % | The total effective interest rate provided by the tier                                                                                           |

## Link a rate card to an account

Linking a rate card to an account is an additional step in the onboarding process. To link a rate card to an account:

1. Create a customer ([POST /v1/cm/customers](docId\:Td-K_prObOXEklwM6CnnG))&#x20;
2. Create an account for that customer ([POST /v1/dda/accounts](docId\:Td-K_prObOXEklwM6CnnG))
3. Call `PUT /v1/dda/accounts/{accountNumber}/rateCard` to attach an existing rateCard ID to the account. The rate card is defined in the `rateCard` attribute.




[title] Card lifecycle
[path] Cards/

## Card lifecycle management

All card programs must support a complete lifecycle for each issued card, from creation to closure. The lifecycle governs the card’s operational state. This card’s operational state determines whether the card can be used for transactions, requires replacement, or must be suspended or closed due to fraud, customer request, or expiration.&#x20;

In partner-managed programs, [lifecycle actions](docId\:fzCCeYGDTrT57ioeHxSCZ) are handled by the partner and their processor. The partner is responsible for triggering lifecycle events, maintaining card status, and communicating relevant updates to Cross River via daily reporting.

In integrated issuing programs, [lifecycle actions](docId\:JqNuGyrOXQL_0n5hPyCmv) are managed by the partner using Cross River’s infrastructure, specifically, COS [APIs](docId\:ctPgBWhSjawyngKlCY73a) or COS Explorer. 

## Lifecycle events

Typical lifecycle events include: 

- **Card creation**: A physical or virtual card is generated and linked to a customer account. 
  - Refer to the [create new card](docId\:EJCciNVxb0oMKjA567gUM) API.
- **Card activation**: The card transitions from *Unactivated* to *Active* status and becomes eligible for transactions. 
  - Refer to the [activate card by ID](docId\:E_U42earZiwDZOiIXuunI) API.
- **Replacement or reissue**: A new card is issued due to expiration, damage, or being reported lost or stolen. 
  - Refer to [replace and reissue](docId\:PEWkPqnJMYqYJHL6q6fCh) for more details.
- **Suspension and unsuspension**: Temporarily disables or re-enables a card, often due to fraud or customer request. 
  - Refer to the [suspend card](docId\:K4JUvw-0ny1dOxTSOVNFx) and [unsuspend a card](docId\:m4ISy77gMgYBkgwRXliaX) APIs.
- **Card closure**: Permanently deactivates a card. Closed cards cannot be reactivated. 
  - Refer to the [close card](docId:9tDjvhU9S37a-7Cqj3VEJ) API.

## Webhooks

[Webhook](docId\:BN5XtgkJogBe-CtwomCbS) integrations enable real-time event-driven updates for card lifecycle events, transaction activity, and status changes. You need to [register](docId\:BN5XtgkJogBe-CtwomCbS) to receive webhooks.

## Find out more

- [Integrated status and states](docId\:T8YPzopBRVd8Z8-pRjiOg) - details on how lifecycle events affect transaction authorization.

## Read more

- [Issuing models](docId\:R6sp5ZBFkpgMUQfBoTob2)&#x20;
- [Card transactions](docId\:K9zdYpQIPm_qhHCU3uRQ6)&#x20;
- [Advanced authorization](docId:88_iQwsRFzVb0Wp1UlwYP)&#x20;
- [Reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC)  






[title] Partner-managed lifecycle
[path] Cards/Card lifecycle/

## Partner-managed intro

In Cross River's partner-managed model, partners are responsible for managing the card’s lifecycle and communicating relevant updates to Cross River via daily reporting. There are a series of requirements that the partner must meet before a card can be issued to a customer.

:::hint{type="warning"}
**IMPORTANT: &#x20;**&#x54;he following steps are mandatory for the Partners to ensure Cross River can conduct the necessary oversight of the card program. &#x20;
:::

::::WorkflowBlock
:::WorkflowBlockItem
**The customer profile is created**. When a customer is created, there are several webhook events that have to be registered for.  See [Add personal customer](docId\:isgkj7NIS9jHmyu3UPUBk) for more details.
:::

:::WorkflowBlockItem
**The customer passes the required OFAC/PEP screenings.**
:::

:::WorkflowBlockItem
**The customer’s card is associated with their COS customer record using the unique card token**. Use the [Add identification](docId\:QjfGSujVfqoxCpJiqzLfF) endpoint to add customer-identifying documents, such as a driver's license or passport. You must provide some form of primary identification for a customer.&#x20;
:::
::::

## Compliance

It is important that once the customer is created they pass the required OFAC/PEP screenings, and that a card is associated to their COS customer record using a provided unique card token. These steps are critical to ensure Cross River can conduct transaction monitoring to meet our Compliance obligations. 

## Detailed requirements

|   | Requirement                                                                                                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| - | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 1 | [Load customer data into COS](docId:48GP3qw_DiNCGIjqCqyIg)                                                         | Cross River performs global OFAC/PEP screens in our system (COS) at the time of onboarding and regularly after that.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 2 | [Add unique cardholder identifier into COS](docId:1VmEKMvvGX1BGC00NDLFX)                                           | Cross River receives files from processors and from the networks with tokenized card numbers. The processor uses the tokenized card numbers as unique identifiers for each cardholder. To match cards with accounts, it is mandatory that this unique identifier is added to the cardholder’s COS customer record.<br />In addition, this unique identifier is used by the Cross River transaction monitoring and reporting teams to ensure that customer transactions are attributed correctly and that strict compliance is observed.&#xD;<br />Cross River expects that whenever a new card token is generated, you update this COS customer record. It makes no difference if the card is new or reissued. See [Add identification](docId\:QjfGSujVfqoxCpJiqzLfF) for details about this endpoint. |
| 3 | For Commercial Card Partners:<br />[Link the business and cardholders in COS](docId\:g7SZrsY-ClR0wcea2b_-o) <br /> | Cross River requires Commercial card partners to create both business and cardholder customer records in COS.<br />Use the [Update beneficial owner](docId\:kR2QhF0-bTklavDAO6GXI) endpoint to update the COS customer record.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

In the partner-managed model, when the processor creates the card in their system, we need the partner to create a customer in COS.

### Card lifecycle and customer controls

Partners are responsible for defining and managing the full customer card experience through their processor \[1], including:

- Card Issuance&#x20;
- Card Activation
- Card Suspension and Unsuspension
- Administrative Blocks
- Card Closure and Replacement

:::hint{type="info"}
\[1] This is subject to due diligence review and at in the sole discretion of Cross River
:::


[title] Load customer data
[path] Cards/Card lifecycle/Partner-managed model/

## OFAC/PEP screening and loading customer data

To add customer data in COS:

1. After a successful KYC (know your customer) check, call the [POST /core/v1/cm/customers](docId\:isgkj7NIS9jHmyu3UPUBk)  endpoint in COS to create the cardholder’s customer account.
2.  uses the customer name, date of birth (DOB), and address. The Customer Identification Program (CIP) requires the customer social security number or government-issued ID (for non-US persons).
3. The webhook event `Core.Customer.Ofac.Changed` is triggered and returns an initial status of **Clear** or **Failed**.
4. If the status is **Clear**, you can approve and create the customer credit card facility on your side.
5. If the status is **Failed**, the Cross River  team investigates the case. The webhook event is triggered again, sending a status of **Reviewing** or **Pending**, indicating that a person is reviewing the case. This can take up to 48 hours. On occassion, the Cross River team might reach out to you to ask for additional supporting documents. You will need to provide an email address for this. The `Core.Customer.Ofac.Changed` webhook returns any change in status, not just **Reviewing** or **Pending**.
6. After reviewing, the Cross River team moves the status to either **Clear** or **Positive**. The webhook event fires again.
   - If **Clear**, you can continue with approving and creating a credit card facility for your customer.
   - If **Positive**, you must decline the application. This is quite rare.
7. To trigger an OFAC/ failure in the Sandbox use these values in your call:
   - For PEP, in the `name` object use the name **Vladimir Putin** to get a hit.
   - For OFAC, in the `name` object use the name **Francisco Javier Arellano Félix**; and in the `profile` object use the birthdate **1969-12-11** (December 11, 1969)
   - For OFAC entity, in the `name` object use the `entityName` value **Blue Star Diamond**
8. Once the customer record is cleared, there is no longer a reason to subscribe to the specific customer webhook.
   - Cross River scans customer records nightly for OFAC/PEP. If a customer hits OFAC during a nightly scan, our AML team will reach out via Zendesk to help clear.
9. You must keep the customer records you create up to date.
   - If a customer changes their name, address, email, or other details, use the Customer Management APIs to update their record.
   - You can make this part of a nightly process.
10. The scans take less than a second. Anything that needs manual review is taken care of within 3 business days.
11. Status Definition Changes (applies to OFAC, PEP, and Internal List). Webhook event responses from this point on mean:
    - **Positive**: Must be rejected (no change)
    - **Clear**: Everything is fine (no change)
    - **Pending**: The case is being reviewed (no change)
    - **Reviewing**: A potential match within a category is being reviewed by CR and is pending a disposition. Previously this was Failed.
    - **Failed**: There isn’t enough information to know the status (for example, RFI not responded to).
12. See the APIs required [onboard a customer](docId\:Nt23Lv6UL3hwB2r5bz4K9) .

As always, if you have any questions, email our [support](mailto\:cos.support@crossriver.com) team.&#x20;

[title] Associate beneficial owner
[path] Cards/Card lifecycle/Partner-managed model/

## Beneficial owner

When you provide cards to a business (and not directly to individual cardholders), both the business itself and each cardholder from that business have customer records in COS.

To ensure that the cardholder customer records are associated with the correct business customer record, you add each cardholder as a *beneficial owner* to the business record.

## Associate the customer record

Associate the customer record with the business customer record using this endpoint from the [Add beneficial owner](docId\:EOH9pzYARQnyhe9mh979u)&#x20;

`POST /core/v1/cm/customers/{customerId}/beneficial-owners`

In the body of the request, use the customer ID of the business issuing the company card for the `customerId` value, and the customer ID of the cardholder for the `ownerCustomerId` value. Enter **Auth User** for the `ownerTitle` value.

:::CodeblockTabs
Sample associate beneficial owner resource to customer record request

```curl
{
"ownerCustomerId": "a9da21a8-a9df-4db3-90f5-138d7cf4b10e",
"ownerTitle": "Auth User",
{

```
:::

See our tutorial which explains how to [add a beneficial owner.](docId\:dHPmHjC04E5WUq34V59Iu)&#x20;

As always, if you have any questions, email our [support](mailto\:cos.support@crossriver.com) team.&#x20;

[title] Direct mode
[path] Cards/Issuing models/Integrated issuing/Advanced authorization/

## Intro to Direct mode

Direct Mode gives partners the ability to approve or decline transactions using their own systems and logic while Cross River oversees compliance to ensure transactions follow the right standards and guidelines. During authorization, Cross River calls the partner in real time to receive the partner’s decision. If a valid response is received within the required time window, that decision is returned to the card network.

## Key characteristics

- Partner creates an API endpoint based on Cross River's specifications (received from their ) to be able to receive requests for authorization in real time. Cross River's advanced authorization certification testing must be completed before going live.
- For messages where a response from the partner is required, such as requests for authorization, Cross River will give the partner a specific time window to respond.&#x20;
  - If the partner responds in time, Cross River will post the transaction into the customer's account in Cross River, updating the balance.
  - If a response is not received, Cross River will decline the request for authorization from the network.
- At the end of each day, Cross River provides the partner with a daily reconciliation file to review the activity of the day. The partner must review and update their records.
- The partner must conduct an end-of-day balance sync to ensure the account balances recorded in Cross River match the partner's ledger.

## Sample use cases

- Gaming platforms that want to provide an embedded finance experience.
- Fintechs that maintain ledgers for wallet programs.
- Programs requiring high authorization flexibility and ownership.


[title] Add identification
[path] Cards/Card lifecycle/Partner-managed model/

## Add identification intro

Cross River receives files from processors and from the networks that contain tokenized card numbers identifying each cardholder. We need to add these unique user identifiers to the COS customer record of each cardholder. This allows Cross River to track all the information that the card networks need to know about that customer's card and how they use it.

The Transaction Monitoring (TM) system, , links transactions to customers by matching the tokens on transaction records against the Identifications entity in COS. This is the specific data source the AML pipeline reads from,  it does not pull from the Client Identifier field, *user\_id*, or any custom report fields. The only way to populate the Identifications entity is through the /identifications API endpoint. See the [Add personal customer](docId\:isgkj7NIS9jHmyu3UPUBk)  endpoint for more details.

:::hint{type="warning"}
**IMPORTANT**: If the endpoint is not populated and there is no feed into the AML linking process, meaning transactions would remain unattributable to customers.
:::

## Identifier

Add the identifier to the Customer ID section with this endpoint:

`POST /core/v1/cm/customers/{id}/identifications`

Use these values in the body of the request:

```curl
{
"isPrimary": false,
"idNumber": "<token value goes here>",
"idType": "Other",
"issuingAuthority": "TOKEN",
"issuingCountryCode": "US"
{
```

See our tutorial which explains how to [Add identification](docId\:Gk2cTwkzVsjNTRDhQ67E5).

As always, if you have any questions, email our [support](mailto\:cos.support@crossriver.com) team.&#x20;

[title] Authorization controls
[path] Cards/Issuing models/Integrated issuing/Issuer processor/

# What authorization controls do

## Overview

Authorization controls let you establish rules for card transaction validation. You check merchant category, currency, merchant ID, and country in real-time during:

- **3DS Authentication:** Controls are evaluated during 3D Secure authentication flows
- **Authorization Requests (0100):** Controls are evaluated for authorization messages
- **Financial Authorization Requests (0200):** Controls are evaluated for financial transaction requests

:::hint{type="info"}
**Important:** Authorization controls apply only to 3DS authentication and authorization messages (0100, 0200). Clearing messages (0220) **are not restricted** by these controls.
:::

The system automatically declines transactions that violate any configured authorization control rule.

## Control hierarchy

The system evaluates two control levels before approving any transaction. Both levels must approve for a transaction to succeed:

### 1. Account level

Individual account restrictions. Apply these controls to all cards associated with a specific account.

### 2. Card level

Most granular level of control. Per-card controls provide the highest level of customization for individual cards.

**Evaluation Order:** Account → Card

**Approval Requirement:** Both levels must approve for transaction to succeed.

## API endpoints

For a full description of the APIs used to configure `authorizationControls` refer to the following API endpoints:

[PUT /v1/cards/\{cardId}/controls](docId\:r_Cxcl0l2UoyWkuuJpaJ1)&#x20;

[GET /v1/cards/\{cardId}/controls](docId\:AT16WGXZGoV5cqFuFNPTP)&#x20;

## Action types

Two action types define control behavior, ALLOW and DENY.

| Action Type            | Description                                                                                                                                                                                 |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ALLOW (whitelist)      | - **Evaluation:** Value must be in the list
- **Result if match:** Continue to next control
- **Result if no match:** Decline transaction
- **Empty list:** Declines all transactions       |
| DENY (blacklist)       | * **Evaluation:** Value must **not** be in the list
* **Result if match:** Decline transaction
* **Result if no match:** Continue to next control
* **Empty list:** Allows all transactions |
| No controls configured | - **Behavior:** No restrictions applied at this level
- **Result:** Continue to next hierarchy level                                                                                        |

### ALLOW (whitelist)

Permits **only** the values listed in the control. The system declines any transaction with a value outside the list.

**Use Case:** Restrict card to specific merchants or categories only.

**Example:** Allow only fuel purchases

:::BlockQuote
\{
&#x20; "type": "mcc",
&#x20; "action": "ALLOW",
&#x20; "list": \["5172", "5541", "5542", "5552"]
}
:::

### DENY (blacklist)

Blocks **only** the values listed in the control. All other values are permitted.

**Use Case:** Block specific merchants, countries, or categories while allowing everything else.

**Example:** Block gambling merchants

:::BlockQuote
\{
&#x20; "type": "mcc",
&#x20; "action": "DENY",
&#x20; "list": \["7995", "7800", "7801"]
}
:::

## Control types

### 1. MCC (Merchant Category Code)

Restricts transactions based on merchant category codes.

**Field name:** mcc

**Value format:** 4-digit merchant category code (string)

**Common use cases:**

- Restrict to fuel purchases only
- Block gambling transactions
- Limit to specific business categories

**Example:** Fuel purchase restriction:

:::BlockQuote
\{
&#x20; "type": "mcc",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   "5172",  // Petroleum Products
&#x20;   "5541",  // Service Stations
&#x20;   "5542",  // Automated Fuel Dispensers
&#x20;   "5552"   // Electric Vehicle Charging
&#x20; ]
}
:::

**Common MCC codes:**

| Code | Category                                            |
| ---- | --------------------------------------------------- |
| 5172 | Petroleum Products                                  |
| 5541 | Service Stations (with/without ancillary services)  |
| 5542 | Automated Fuel Dispensers                           |
| 5552 | Electric Vehicle Charging                           |
| 5812 | Restaurants                                         |
| 5411 | Grocery Stores                                      |
| 7995 | Betting/Casino Gambling                             |

Full list:&#x20;

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/a-zXn_JJNkVcbSJIHWllF_mcclisting.xlsx" label="MCCListing.xlsx"}

### 2. MID (Merchant ID)

Targets specific merchant locations using card acceptor IDs.

**Field name:** mid

**Value format:** Merchant identifier string

**Common use cases:**

- Allow transactions at specific store locations only
- Block specific problematic merchants
- Restrict to corporate-approved vendor locations

**Example:&#x20;**&#x53;pecific merchant allowlist:

:::BlockQuote
\{
&#x20; "type": "mid",
&#x20; "action": "ALLOW",
&#x20; "list": \[
&#x20;   "MERCHANT\_12345",
&#x20;   "MERCHANT\_67890"
&#x20; ]
}
:::

**Example:&#x20;**&#x42;lock specific merchant:

:::BlockQuote
\{
&#x20; "type": "mid",
&#x20; "action": "DENY",
&#x20; "list": \["MERCHANT\_99999"]
}
:::

### 3. Country

Restricts transactions based on merchant country location using ISO 3166-1 alpha-2 country codes.

**Field name:** country

**Value format:** 2-character ISO country code (string)

**Common use cases:**

- Restrict to domestic transactions only
- Block transactions from high-risk countries
- Limit to specific geographic regions

**Example:&#x20;**&#x55;S only:

:::BlockQuote
\{
&#x20; "type": "country",
&#x20; "action": "ALLOW",
&#x20; "list": \["US"]
}
:::

**Example:&#x20;**&#x42;lock specific countries:

:::BlockQuote
\{
&#x20; "type": "country",
&#x20; "action": "DENY",
&#x20; "list": \["XX", "YY", "ZZ"]
}
:::

Common country codes:

| Code | Country        |
| ---- | -------------- |
| US   | United States  |
| ES   | Spain          |
| GB   | United Kingdom |
| CA   | Canada         |
| MX   | Mexico         |
| FR   | France         |
| DE   | Germany        |

Country and currency codes:

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/RJUT9tPYhVEFid7dUD87-_countryandcurrencycodes.xlsx" label="CountryandCurrencyCodes.xlsx"}

### 4. Currency

Limits transaction currencies using ISO 4217 currency codes.

**Field name:** currency

**Value format:** 3-character ISO currency code (string)

**Common use cases:**

- Restrict to home currency only
- Block foreign currency transactions
- Limit multi-currency exposure

**Example:&#x20;**&#x55;SD only:

:::BlockQuote
\{
&#x20; "type": "currency",
&#x20; "action": "ALLOW",
&#x20; "list": \["USD"]
}
:::

**Example:** Block specific currencies:

:::BlockQuote
\{
&#x20; "type": "currency",
&#x20; "action": "DENY",
&#x20; "list": \["EUR", "GBP"]
}
:::

Common currency codes:

| Code | Currency            |
| ---- | ------------------- |
| USD  | US Dollar           |
| EUR  | Euro                |
| GBP  | Great Britain Pound |
| CAD  | Canadian Dollar     |
| MXN  | Mexican Pesa        |
| JPY  | Japanese Yen        |

Country and currency codes:

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/RJUT9tPYhVEFid7dUD87-_countryandcurrencycodes.xlsx" label="CountryandCurrencyCodes.xlsx"}

## Transaction evaluation flow

### For authorization messages (0100, 0200) and 3DS authentication

```mermaid
---
config:
  layout: elk
---
flowchart TD
    A[Transaction Received<br/>0100/0200/3DS] --> B[Account Level Controls]
    B --> C{Pass}
    C -->|Yes| D[Card Level Controls]
    D --> E{Pass}
    E -->|Yes| F[Transaction Approved]
    E -->|No| G[Transaction Declined]
    C -->|No| G
    
    classDef start stroke:#38bdf8,fill:#f0f9ff
    classDef process stroke:#a78bfa,fill:#f5f3ff
    classDef decision stroke:#fb923c,fill:#fff7ed
    classDef approved stroke:#4ade80,fill:#f0fdf4
    classDef declined stroke:#f87171,fill:#fef2f2
    
    class A start
    class B,D process
    class C,E decision
    class F approved
    class G declined
```



:::BlockQuote
Transaction Received (0100/0200/3DS)
&#x20;       ↓
Account Level Controls
&#x20;       ↓ (Pass)
Card Level Controls
&#x20;       ↓ (Pass)
Transaction Approved
:::

**Decline at any level:**
&#x20;If any level declines the transaction, evaluation stops immediately and the transaction is declined.

### For clearing messages (0220)

```mermaid
---
config:
  layout: elk
---
flowchart TD
    A["Clearing Transaction Received (0220)"] --> B["Authorization Controls SKIPPED"]
    B --> C["Transaction Processed"]
    
    classDef processNode stroke:#818cf8,fill:#eef2ff
    classDef warningNode stroke:#fb923c,fill:#fff7ed
    classDef resultNode stroke:#4ade80,fill:#f0fdf4
    
    class A processNode
    class B warningNode
    class C resultNode
```

:::BlockQuote
Clearing Transaction Received (0220)
&#x20;       ↓
Authorization Controls SKIPPED
&#x20;       ↓
Transaction Processed
:::

**Note:** Clearing messages (0220) bypass authorization controls and are processed without restriction checks.

## Use cases

**Fleet card:&#x20;**&#x46;uel only

Restrict card to fuel purchases at service stations:

:::BlockQuote
\{
&#x20; "authorizationControls": \[
&#x20;   \{
&#x20;     "type": "mcc",
&#x20;     "action": "ALLOW",
&#x20;     "list": \["5172", "5541", "5542", "5552"]
&#x20;   }
&#x20; ]
}
:::

**Corporate card:&#x20;**&#x44;omestic only

Restrict to US merchants using USD:

:::BlockQuote
\{
&#x20; "authorizationControls": \[
&#x20;   \{
&#x20;     "type": "country",
&#x20;     "action": "ALLOW",
&#x20;     "list": \["US"]
&#x20;   },
&#x20;   \{
&#x20;     "type": "currency",
&#x20;     "action": "ALLOW",
&#x20;     "list": \["USD"]
&#x20;   }
&#x20; ]
}
:::

**Travel card:&#x20;**&#x42;lock gambling

Allow all transactions except gambling:

:::BlockQuote
\{
&#x20; "authorizationControls": \[
&#x20;   \{
&#x20;     "type": "mcc",
&#x20;     "action": "DENY",
&#x20;     "list": \["7995", "7800", "7801", "7802"]
&#x20;   }
&#x20; ]
}
:::

**Vendor-specific card**

Restrict to specific approved merchants:

:::BlockQuote
\{
&#x20; "authorizationControls": \[
&#x20;   \{
&#x20;     "type": "mid",
&#x20;     "action": "ALLOW",
&#x20;     "list": \["VENDOR\_A\_001", "VENDOR\_B\_002", "VENDOR\_C\_003"]
&#x20;   }
&#x20; ]
}
:::

## Best practices

1\. **Use appropriate action type**

- Use **ALLOW** for restrictive use cases (few permitted values)
- Use **DENY** for permissive use cases (few blocked values)

2\. **Combine controls strategically**

- Layer multiple control types for complete restrictions
- Example: Country + Currency + MCC for fleet cards

3\. **Hierarchy considerations**

- Set broad restrictions at Account level
- Set specific restrictions at Card level
- Avoid conflicting controls across hierarchy levels

4\. **Testing**

- Test all control combinations before production deployment
- Verify both approval and decline scenarios
- Test edge cases (empty lists, special characters)

5\. **Updates without reissuance**

- Update controls dynamically
- Respond quickly to fraud patterns or policy changes
- No need to reissue physical cards

## Limitations & constraints

**Control scope**

- **Applies to:**&#x20;
  - Authorization requests (0100)
  - Financial authorization requests (0200)
  - 3DS authentication
- **Does NOT apply to:**&#x20;
  - Clearing messages (0220)
- Authorization controls restrict only the authorization phase, not the clearing/settlement phase

**Control limits**

- Maximum controls per card: Check with Cross River P1
- Maximum list items per control: Check with Cross River P1

**Update frequency**

- Controls can be updated in real-time
- Changes take effect immediately for new authorization requests

**Data validation**

- Country codes must be valid ISO 3166-1 alpha-2 codes
- Currency codes must be valid ISO 4217 codes
- MCC codes must be 4-digit strings
- MID format depends on merchant identifier standards


[title] International payments
[path] Payments/

:::CtaButton{label="International payments APIs" docId="i-hgHkJ0nATy4LoNeUuLQ" openInNewTab="true"}

:::

## Cross River international payments solution

Cross River delivers International Payments (cross-border money movement) which enable you to send money internationally, leveraging  and local in-country rails. Cross River facilitates this through access to a correspondent banking network.

## What we offer

- 24/5 executable payment quotes with superior foreign exchange rates
- Real-time updates on a payment from quote to delivery
- Industry-leading compliance and BSA/AML integrations
- [SWIFT and in-country local rail ](docId\:ZbEtirMC3fdQjvz5teR0i) options
- Built-in fee customization to earn revenue on each transaction

Currently, Cross River offers [outbound capabilities](docId\:v6X5yKUfI7SEu3gHP7pKW). Our solution is payment type agnostic, routing the transactions through the most relevant rails depending on corridor, transaction size, currency and so on.

:::hint{type="info"}
For each country you can send any of its supporting currencies. However, the beneficiary account must be set up to receive the currency sent.
:::

[Supported countries](docId\:p_Cb7wXlzG8of31c9xlgj): A list of countries Cross River's international payments reach. Also includes supported currencies, and whether the payment is available using SWIFT or Local Rail or both.  Finally, the FX Cutoff times are included in local time.

:::hint{type="info"}
**Country coverage can be expanded based on a partner needs and use-case.**
:::

## Find out more

- [Benefits and limitations](docId\:IcfL3zDavf28DyoiBELDp)&#x20;

## Tutorials

See our tutorials to learn how to:

| Through APIs                                           | Through COS Explorer                                    |
| ------------------------------------------------------ | ------------------------------------------------------- |
| [International payments](docId:0mIEXzUcyTurPvZq13y1Z)  | [International payments](docId\:bQKIAw_2bTUCTMdS463Nv)  |


[title] International transactions
[path] Payments/Card payments/

## Cross River international card transactions

:::hint{type="info"}
The same Cross River Transaction APIs serve domestic as well as international transactions.
:::

An international transaction involves the following:

- *Multi-country*. A cross-border transaction, where the origination and destination countries for the payment are different. Here, the country of the card issuer determines the conditions of the transaction.

## Currency exchange

Sometimes, a transaction happens with a US-issued payment card outside the US. Or, it can occur within the US using a non-US-issued card. These transactions require changing from one currency to another.

The foreign exchange (FX) rates API makes it easy to access the conversion rate for the currencies of two different countries.

Currency conversion rates are indicative. This means they are dynamic, not fixed.

Conversion rates depend on:

- The currency pair
- The network exchange rate



## Real-time exchange rates

Cross River provides you with the real-time foreign exchange rate in the currency of the party receiving the payment. Cross River FX Rates reflect the rates now available in financial networks.

In the case of Visa and MasterCard, the API responds to a function call with a list of rate data from the card networks. These rates can differ between networks. They are updated once each day. The Forex Rates API provides clear information about any network processing transactions.

:::hint{type="info"}
**Mastercard**. Rates change every day at **15:05 EST** in the US. They remain valid for **24 hours**. Let's say a transaction occurred on May 1st, 2023 at 04:00 EST. The rate that applies to the transaction would be the rate set on April 30th, 2023. That rate covers the period from 15:05 EST on April 30th to 15:05 EST on May 1st.

**Visa**. Rates change once a day at **19:00 EST** (midnight GMT). Over the weekend, the system uses the rates from Friday.
:::

## Example

A customer from Sweden wants to buy products from your American online store. As a merchant partner, you need to perform an international transaction. That's because the customer is buying in kronor (the currency of Sweden) products being sold in US dollars.

Cross River provides a call to the FX Rate API endpoint. You make this call before performing the transaction request.

These rates are most useful when working with multi-currency or cross-border transactions.

:::hint{type="info"}
In addition to the current exchange rate, the FX Rates API also reflects the markup fee a network charges for a foreign transaction.

For transaction settlement, the currency conversion rate returned by the API may differ from the actual rate of exchange offered in the market.

The FX Rates function call is standalone. It returns the exchange rate without actually determining the international transaction.
:::

## API reference

Learn about the [exchange rate](docId\:c7lRwhp81EmpW2u9lN4i-) API endpoint.

[title] Card payments
[path] Payments/

:::CtaButton{label="Card payments APIs" docId="g7Y21FC4eEZ5GQY_za6Ly" openInNewTab="true"}

:::

## COS Card Payments

Cross River's Card Payments solution has two key capabilities:&#x20;

**Instant Disbursements&#x20;**(push-to-card) for payouts, refunds, and earnings, and&#x20;

**Instant Funding&#x20;**(pull-from-card) that lets customers load wallets or accounts directly from their debit cards. Transactions flow through participating card networks for near real-time funds availability.

### What Cross River offers

**Payment types**

- **Push payment:&#x20;**&#x41; **push payment&#x20;**&#x73;ends funds directly to a recipient's eligible debit, credit, or prepaid card. The transaction originates from your platform and, via Cross River,  "pushes" money to the cardholder's account. Funds are typically available to the cardholder in real-time or near real-time. Visa calls this OCT (Original Credit Transaction).
- **Pull transactions:** A **pull transaction&#x20;**&#x64;ebits funds from a cardholder's eligible debit or prepaid card to fund a wallet or account on COS. The cardholder authorizes your platform to "pull" money from their card.

**Payment options**

- **Partial payment authorization**: When a pull-from-card transaction exceeds the cardholder's available balance, Cross River's partial authorization capability allows platforms to capture available funds and let customers pay the difference with another payment method—reducing abandonment and improving customer experienc&#x65;*.*
- **Flexible attributes for partners with submerchants:** Send different business types (BAI codes), statement descriptors, CAIDs, or MCC codes all in a single program as approved by the card networks. Cross River uses a few shared Bank Identification Numbers (BINs) for all of these activities, allowing partners to receive the benefits that come with large volume discounts.&#x20;

**Payment security**

- **Risk detection**: Cross River designs its risk detection services to protect online card payments. Our aim is to provide our partners with peace of mind while they conduct digital transactions. Our services include:
  - Token Validation Service&#x20;
  - Address Verification Service (AVS)
  - Account Name Inquiry (ANI)
  - CVV Verification (Card Verification Value)&#x20;
- **Tokenization**: Cross River uses tokens to secure debit card numbers. Stored by the merchant, a token is proprietary and identifies a card in place of an actual card number. Cross River's tokenization allows merchants to securely access payment credentials without storing PANs (Primary Account Numbers). This is compliant with PCI DSS (Payment Card Industry Data Security Standard), the set of standards established by the PCI Security Standards Council to protect environments where payment data is stored, processed, or transmitted. By replacing sensitive cardholder data with non-reversible tokens, Cross River reduces partners' PCI DSS compliance scope.
- **Card authorization and compliance:** P2C processing complies with PCI standards to ensure that sensitive credit card information is protected. Cross River uses only encrypted token information throughout our system. Any card number we use to transfer funds is meant for temporary access only during a transaction request.

### What’s new

We are migrating these card payment APIs to the Crossriver Core system (COS), where all the other payment rails (ACH, wire, etc) live. This provides a more seamless customer experience, due to the single connection to all our API banking services across all rails. The advantages of this migration include:

1. **Standardization**: Moving to a standardized platform results in standardized integrations to third-party platforms, eliminating the manual bespoke workarounds in various platforms. Not only are these manual workarounds a pain point for our partners, but they also add points of potential failure, resulting in a lot of overhead and upkeep. In addition, because the Account Management APIs also live in COS, migrating from P2PE to COS will also increase speed and reduce the latency related to calling COS and waiting for a response on card limits.&#x20;
2. **Scalability**: Moving to COS increases scalability. Partners would be able to easily increase their volumes, due to the robust COS infrastructure. Another reason for this increased scalability is the introduction of asynchronous APIs, which are faster because of their increased throughput and ability to handle many requests in parallel.&#x20;
3. **Accessibility**: Lastly, migrating from PTPE to COS will make all the other payment rails and services more accessible with all the APIs hosted in the same place.

For more information, please see the API specs and the migration tutorial:&#x20;

- **[Card payments (New)](docId\:g7Y21FC4eEZ5GQY_za6Ly)&#x20;

### Partner impact

Partners are recommended to migrate from the old PTPE Card Payments APIs to the new COS Card Payment APIs so they can gain all the benefits of our COS.&#x20;

Cross River will provide proper guidance to aid partners with their migrations, including but not limited to:

1. **[Migration from P2P to COS Card Payments](docId\:VwAQrYtSaAmt9_wyx3xDU)
2. Joint Integration Testing&#x20;
3. E2E Testing&#x20;
4. Dedicated Support Engineers&#x20;

### Find out more

- [Push and pull](docId\:utoikiOU_zhwQk9GpZ_Rt)&#x20;
- [International transactions](docId\:ew_kpE97ElKSG2RkDbJFz)
- [OFAC screening](docId:33j3PsONIaj55Z58yoNIf)
- [Business types](docId\:pqBZhl42X_XKuCUoTIqI_)
- [Risk detection](docId\:D69GBt8mlz14oY5l9fr36)&#x20;


[title] Transactions and payments
[path] Payments/Card payments/Migration from P2P to CCP/

## Card payment transactions

The new COS Payment APIs are asynchronous. Holds/pending statuses are put into place and then handled later, meaning that payment initiations are decoupled from status tracking and settlements.

This is designed for event-driven architecture, relying on webhooks or message queues to track payment lifecycle.

Synchronous APIs are not recommended for International Payments because of potential delays while waiting for an OFAC scan to clear.&#x20;

| **PTPE API**                           | **COS API**                                                                                                 |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| GET /api/transaction                   | [GET /v1/payments](docId\:MXgVroBUdlKwNkDkjdQCg)                                                            |
| POST /api/transaction                  | [POST /v1/payments](docId\:c6CjUrm0nl_nOY4oeJ8Gu)  or [POST /v1/syncpayments](docId\:k4eQwjT79VCXgN-S2JyUE) |
| GET /api/transaction/\{transactionId}  | [GET /v1/payments/\{id}](docId:1XHjAplurDjMikKTX29_G)                                                       |


[title] Cards and tokens
[path] Payments/Card payments/Migration from P2P to CCP/

## COS Card Payment tokens

The functionalities of the counterpart APIs are the same, but the field names in the API request have been simplified:

- “dateAddedFrom” is now just “from”
- “dateAddedTo” is not just “to”
- “cardCompany” is now “cardBrand”&#x20;

We will migrate your card tokens for you from PTPE to COS, so that you can use them the moment you migrate, instead of requiring you to authorize all cards all over again – resulting in no partner impact other than simply switching the endpoints. &#x20;

| **PTPE API**                | **COS API**                                                          |
| --------------------------- | -------------------------------------------------------------------- |
| GET /api/card               | [GET /v1/cardtokens](docId\:rSdKz1VuCBYmhXquY9cyb)                   |
| POST /api/card              | [POST /v1/cardtokens](docId\:CfF80NPHRpP3BUz2yCqRA)                  |
| PUT /api/card               | [PUT /v1/cardtokens/\{id}/activation ](docId\:IT4gSuVvqhwTY0S7S85w7) |
| GET /api/Card/\{cardToken}  | [GET /v1/cardtokens/\{id} ](docId\:kRmBb3iHaNhpkp-LZuWnz)            |


[title] Migration P2P to COS Card Payments
[path] Payments/Card payments/

## What is new

The Cross River P2C solution is now supported in COS where all the other payment rails (ACH, Wires, etc) reside. This provides a more seamless customer experience provided by the single connection to all our API banking services across all rails. The advantages of this new COS Card Payments solution include:

1. **Standardization**: Moving to a standardized platform results in standardized integrations to third-party platforms for automated OFAC checks, eliminating the manual bespoke workarounds in various platforms. Not only are these manual workarounds a painpoint for our Partners, requiring extra time and effort to check OFAC alerts, but they also add points of potential failure, resulting in a lot of overhead and upkeep. In addition, because the Account Management APIs also live in COS, migrating from P2PE to COS will also increase speed and reduce the latency related to calling COS and waiting for a response on card limits.&#x20;
2. **Scalability**: Moving to COS increases scalability. Partners will easily be able to increase their volumes, due to the robust COS infrastructure. Another reason for this increased scalability is the introduction of asynchronous APIs, which are faster because of their increased throughput and ability to handle many requests in parallel.&#x20;
3. **Reliability**: The COS infrastructure is also more reliable, with historically fewer issues compared to PTPE.
4. **Accessibility**: Lastly, migrating from PTPE to COS will make all the other payment rails and services more accessible with all the APIs hosted in the same place.

## Partner impact

All new partners will be directed to use COS Card Payments. Existing partners will migrate from the previous PTPE Card Payments APIs to the new COS Card Payment APIs so they can gain all the benefits of COS, as explained in the previous section. Cross River will provide proper guidance to aid Partners with their migrations, including but not limited to:

1. Joint integration testing
2. E2E testing
3. Dedicated support engineers

Partners performing International Card Payments must migrate first so that they can take advantage of the COS OFAC APIs.

More information

- [PTPE Payment APIs and COS counterparts](docId\:dlhOxkbhn1VoIvlY6buxC)&#x20;
- [PTPE Card APIs and COS counterparts](docId\:JDnQww-jdXvSC6pp-ZH1U)
- [Synchronous vs Asynchronous](docId\:mi-vFDVkPxmMaZFqCrVBx)&#x20;

[title] Risk detection
[path] Payments/Card payments/

## Cross River risk detection

Digital transactions are always getting more complex. This exposes merchant partners, our customers, to greater risk. Ensuring the security and trust of our customers and their cardholders is always Cross River’s top priority. Our aim is to provide our partners with peace of mind while they conduct digital transactions.

## Key services

These are the key services that support the Cross River fraud prevention efforts:

- **Token validation service (TVS)**.
  Tokenization replaces sensitive card data with unique security tokens. Cross River TVS ensures that the token used in a transaction is authentic and hasn't been tampered with. This reduces the risk of data breaches.
- **OFAC requirements**
  OFAC screening is required to ensure that card payment transactions comply with the law. OFAC screening checks transactions against the U.S. OFAC list, which contains sanctioned people and organizations – those not allowed to make transactions in the U.S.. OFAC screening identifies and prevents financial interactions with restricted entities. Partners are required to perform OFAC screening.&#x20;
- [Address verification service](docId\:D69GBt8mlz14oY5l9fr36)**&#x20;(AVS)**.
  AVS plays a key role in attempting to identify fraudulent transactions before they occur. During a transaction, the consumer provides a billing address. They do this through the merchant’s website. AVS checks the billing address against the address that’s in the hands of the card issuer. By confirming this information across systems, Cross River can detect potential mismatches instantly. Those differences could indicate a possible unauthorized transaction.
- [Account name inquiry](docId\:D69GBt8mlz14oY5l9fr36)**&#x20; (ANI) service**.
  ANI confirms that the account holder's name is the same one listed at the issuing bank. This provides an added layer of verification. This check is important because it attempts to identify mismatches between the cardholder's name and the transaction details. Here too, those differences could indicate a fraud attempt.
- [Card validation value 2](docId\:D69GBt8mlz14oY5l9fr36)**&#x20; (CVV2)**.
  CVV2 offers extra defense against unapproved card usage. The CVV2 is a three- (or four-) digit code. That code appears on the back of a payment card. When buying something with their payment card, the consumer is often prompted to enter this code into the merchant’s website. As the merchant acquiring bank, Cross River forwards this code to the card network. Then, the network can get payment approval from the cardholder’s bank. CVV2 ensures that the person making the transaction owns the card.

## Address verification (AVS)

Address Verification Service (AVS) checks the validity of the provided billing address to help prevent fraudulent transactions.

### Importance of AVS

When customers transact online, the card is not visible to the merchant. By confirming card details with the issuing bank online, we can detect possible fraud activity. We can also find out if it's likely the transaction is unauthorized. AVS helps protect consumers, our merchant partners, and Cross River.

### How AVS works

When a customer enters their billing address, Cross River sends it to the card issuing bank. The issuing bank, in turn, compares the address with the one they have on file. If the address is a match, the transaction proceeds smoothly. However, if there is a mismatch, this could be a sign of potential fraud. Note that non-matching AVS responses will not decline a transaction automatically. That’s because there could be a few valid reasons for the mismatch. For example, the consumer may have mixed up digits in the zip code. Ultimately, it is up to the merchant to decide whether to accept the transaction. They make this decision based on AVS results as well as other key data.

The results of checking AVS are held in the Add a card (POST API) function call. This call contains the following key attribute as part of its response:

`AddressVerfied` (true/false). If the merchant isn't configured for the AVS service, contact your Cross River relationship manager for details on how to connect to AVS.

### Key benefits of AVS

- **Fraud Detection Tool**. Aids in identifying potentially fraudulent transactions from occurring.
- **Additional Verification**. Address mismatches are flagged before transactions are authorized, potentially preventing unauthorized charges.
- **Ensure trust**. Consumers trust their merchant sites a lot more when they know the merchant acquiring bank is working with their issuing bank to keep transactions secure.
- **Promote efficiency**. Automate the verification process. This makes transactions go more smoothly for consumers.

## Account name inquiry (ANI)

The ANI service matches and verifies the name of an account holder. It checks whether the name on file at the issuing bank is the same as the one the consumer provides during a transaction. This happens in a way that is similar to address verification (AVS). ANI is vital for ensuring secure and accurate card payments.

### Importance of ANI

Similar to AVS, ANI strengthens security, minimizes fraud risk, and maintains the accuracy of transactions. This helps create a safe payment experience that consumers, merchant partners, and card issuers can trust.

ANI also helps check for ineligible transactions. For example, a cardholder requesting earned wage access via push-to-card may have given an incorrect name. This could indicate that the card details may not really belong to the cardholder.

### How ANI works

Based on partner configuration, Cross River initiates an ANI verification transaction during card authorization. This step is essential before making any AFT or OCT request. This compares if the names that the transaction initiator provided match the data held by the card issuing bank.

If a card issuer doesn't yet support the ANI service, the merchant gets a response code. This code indicates that the cardholder's name is unverified because their card issuing bank doesn't support ANI.

The results of checking ANI are held in the response to the [Card tokens](docId\:CfF80NPHRpP3BUz2yCqRA) API. This call contains the following key attribute as part of its response:&#x20;

- `nameVerificationUsed` indicates whether Cross River tried to contact the ANI service. This attribute value will also let you know if the merchant isn't configured for the ANI service. In that case, we recommend contacting your Cross River relationship manager for details on how to connect to ANI.
- `nameVerificationResult` indicates whether the initiator-provided card details match fully, partially, or not at all, or if they are unknown.

:::hint{type="info"}
It is important to note that card token creation is NOT rejected based on the result of an ANI verification. It is the responsibility of the partner to decide if they will allow the card to be authorized.
:::

### Key benefits of ANI

- **Enhance security**. Adds extra security by verifying the accuracy of the card holder.
- **Fraud prevention tool**. Detects unauthorized transactions in real-time, providing an additional layer of security.
- **Build customer trust**. Verifies account details before problems occur.
- **Ensure accuracy**. Reduces errors in transactions by ensuring the person making the transaction is the real card holder.
- **Comply with standards**. ANI information supports efforts to help meet security and verification standards for payment transactions

## Card validation value (CVV2 / CVC2)

The Card Validation Value 2 (CVV2) service provides a critical security layer in card payments. Cross River provides CVV2 validation to ensure safer credit and debit card transactions. CVV2 is a unique 3-digit (or in the case of Amex 4-digit) code printed on the back of all cards. During online transactions where the card isn’t physically present, CVV2 helps authenticate the cardholder. It does this by making sure the cardholder has the card with them at the time they are initiating the transaction. This deters fraud.&#x20;

### Importance of CVV2&#x20;

CVV2 confirms that the person using a card physically has the card. The CVV2 appears only on the back of the actual card and in the issuing bank’s files. This way, requiring the CVV2 code adds an extra level of protection against unauthorized transactions initiated from stolen card credentials.

### How CVV2 works?

When a consumer makes an online or phone transaction, the merchant may require them to provide the CVV2 code. The merchant provides this code as part of the transaction data sent to Cross River. The card issuing bank, in turn, checks that the CVV2 code the consumer enters matches the code on-record. Then, the issuing bank returns a match or mismatch response. Finally, Cross River provides this matching response to the merchant.

:::hint{type="info"}
Note that card issuers may still approve transactions with mismatched CVV2 codes. It is the merchant’s responsibility to consider the matching data when deciding if to proceed with the transaction.
:::

### Key benefits of CVV2&#x20;

- **Stronger security**. CVV2 protects transactions by requiring the unique code for verification.
- **Deterring unauthorized use**. CVV2 discourages unauthorized users from trying to make transactions that are not allowed.
- **Card-not-present protection**. CVV2 should not be stored electronically or magnetically. This way, it protects online and phone transactions. It does this by requiring a code that only the cardholder should know.
- **Consumer confidence**. Consumers feel more secure using their cards knowing CVV2 is available and being enforced by merchants and banks.

[title] Payment networks
[path] Payments/Instant payments/

## Cross River payment networks

Cross River gives you access to three different payment networks in a single set of APIs. RTP and FedNow are external networks. CRNow is an internal Cross River payment method that uses the same API as the instant payment networks.

Cross River uses the instant payment network capabilities to create and enhance digital services and give you the ability to send, clear, and settle payments immediately, 24/7/365.&#x20;

## RTP

The [real-time payments system](https://www.theclearinghouse.org/payment-systems/rtp) (RTP®) network via The Clearing House (TCH) is an instant payments platform. RTP includes advanced messaging capabilities and a focus on compliance.&#x20;

## FedNow

FedNow is the [instant payments network](https://www.frbservices.org/financial-services/fednow) operated by the Federal Reserve. Cross River was one of the first banks to join the FedNow network. The FedNow Service operates on good funds, meaning that funds must be available in the account sending the payment in order for the payment to be sent.

## CRNow

Cross River offers an internal payment network that enables partners to initiate instant funds transfers 24/7/365 without relying on external payment networks. CRNow leverages our instant payment [originate a credit transfer](docId:727H0GkQerqHAFKEy67Uu) endpoint to support both inter-bank and intra-bank instant payments, providing partners with access to all instant payment services through a single interface. This simplifies integrations and enhances the overall customer experience.


[title] Payment types
[path] Payments/Wires/

## Wires payment types

A transfer is a new payment originating from either Cross River or another bank. Transfers can either be domestic or international. Both inbound and outbound international wire transfers in Cross River go through a domestic intermediary bank via Fedwire.&#x20;

- **Domestic**
  Only US-domiciled banks are involved in the transfer. When a wire payment is accepted and acknowledged by the Federal Reserve, an Input Messaging Accountability Data (IMAD) is assigned to the payment. This can be used to track the payment via the FedWire Funds Transfer system.
- **International**
  An intermediary US-domiciled FI sends to or receives the funds from the Fed. Both inbound and outbound international wire transfers in Cross River go through a domestic intermediary bank via Fedwire. In addition, to send or receive international wires in USD, you *must* contact the beneficiary bank to obtain the appropriate wire transfer instructions.

## Outbound wire transfer

1. Initiate the wire transfer via the [send a wire transfer](docId\:mC0d1W1u80umazO85mEIz) API or [COS explorer](docId\:N5Dy7Sv1CXLV682KMjtSz).
2. The wire transfer may or may not require authorization.&#x20;
   - No authorization is required if the transfer is less than 1,000,000 USD, regardless of whether the transfer is initiated by API or in COS Explorer.
   - Authorize transfers in [COS explorer](docId\:N5Dy7Sv1CXLV682KMjtSz) (2 approvers are required) if *both*:
     - The transfer is initiated by API
     - The transfer is between 1,000,000 and 5,000,000 USD dollars
   - The Cross River Wires Operation team calls the wire initiator if *either* of these cases apply:
     - The transfer was initiated using COS Explorer for more than 1,000,000 USD dollars
     - The transfer was initiated using the API for more than 5,000,000 USD
3. Once authorized, the wire transfer is sent.

:::hint{type="info"}
Only wires sent using the API can be approved by approvers set up in advance in COS Explorer.
:::

## Drawdown request

Request someone to send you funds using a drawdown request.  This is basically a request for funds to be sent.

1. Initiate a drawdown request using one of these methods:
   - @wires originate API
     You can also follow our tutorial for [send a drawdown request](docId:91eId7VJOqz4lK3xcERKN).
   - [Send a drawdown request](docId:3DiUyHBdR6xvCCym8y0H2) in COS Explorer
2. Provide your customer with the details below to send to the recipient of the drawdown request.
   - Cross River account number
   - Cross River routing number (**#021214891**)
   - Cross River bank address (**885 Teaneck Road, Teaneck, NJ 07666**)

## Drawdown response

When Cross River receives a drawdown request, we respond by wiring the money that was requested to the bank account specified .

- See our [respond to a drawdown request](docId:21PdgxzzrGN1_KoDuAJiY) API &#x20;
- See our [respond to a drawdown request](docId\:XhGAI8DtioKUeD9qvar3R) tutorial

## Service Message

A non-value message sent from one bank to another for informational purposes only.

## Reversal

A reversal of a previously sent wire transfer








[title] OFAC screening
[path] Payments/Card payments/

## What is OFAC

The Office of Foreign Assets Control (OFAC) is an agency of the US Treasury Department that administers and enforces economic and trade sanctions to protect national security and advance foreign policy objectives. OFAC maintains lists that identifies individuals and companies prohibited from conducting transactions with U.S. persons or businesses.  Financial institutions and U.S. businesses are legally required to screen transactions and customers against such lists and to take action to reject or block transactions involving sanctions parties. As such, the U.S. takes measures against a range of targets that include:

- Foreign countries and regimes
- Terrorists
- International narcotics traffickers
- Those engaged in activities related to the proliferation of weapons of mass destruction
- Other threats to each country's national security, foreign policy, or economy

Cross River performs sanctions screening against all applicable lists to comply with regulatory obligations.&#x20;

The card payments gateway validates the recipient-sender pair for every international transaction with OFAC calls. If a cardholder was scanned recently in a 24-hour window for a transaction, i.e. had an OFAC hit, the gateway will automatically reject the international transaction, providing the reason for the rejection.

[title] Instant payments FAQ
[path] Payments/Instant payments/

## Instant payments sponsorship – Frequently Asked Questions

This section answers common questions about RTP®, FedNow®, and CRNow, how they work, where they’re available, and what limits apply.&#x20;

**What is Cross River Instant Payments?**
Cross River enables real-time payments 24/7/365 via RTP®, FedNow®, and CRNow (Cross River Partner network transfers). Funds are cleared instantly when networks are operational.

**Which payment networks are available?**

- **RTP®:** High limits up to $10,000,000.&#x20;
- **FedNow®:** Broad reach, limits up to $10,000,000.&#x20;
- **CRNow:** Cross River Partner network transfers. There are no inherent limits.
  &#x20;Automatic network selection simplifies routing and reduces integration work.&#x20;

**How are payments processed?**

- **Outbound transfers:** Send funds instantly; status and webhook events track progress.&#x20;
- **Inbound transfers:** Receive funds instantly; webhook events confirm successful postings.&#x20;
- Payments can be queued if a receiving bank is temporarily offline.&#x20;

**What types of instant payments exist?**

- **Credit Transfers:** Sender-initiated, real-time push payments (pacs.008).&#x20;
- **Request for Payment (RfP):** Pre-authorized pull payments, requiring debtor approval (pain.013).&#x20;

**Who are the ultimate debtor and creditor?**
These roles clarify the true sender or recipient when multiple parties are involved, ensuring accurate processing and transparency.

**How does network routing work?**

- **Smart Routing:** Automatic routing based on network availability, account details, and partner configuration.&#x20;
- **Explicit Routing:** Specify a preferred network in your API request.
  &#x20;Routing rules ensure payments always follow the most efficient path or fail if no networks are available.&#x20;

**What are send limits?**
Each network has per-transaction limits, and Cross River enforces a daily limit per partner based on prior usage.

**Can queued payments be canceled?**
Yes, you can cancel a queued payment before its expiration. Default queue duration is 3 days, or you can set a custom expiration via the API.

**What are the benefits of using Cross River Instant Payments?**

- Immediate fund transfers, 24/7/365.&#x20;
- Multi-network support with automatic routing.&#x20;
- Payment queuing to handle offline banks.&#x20;
- Unified API for external (RTP, FedNow) and internal (CRNow) payments.



:::hint{type="info"}
For more information, please visit our [instant payments](docId\:U_TnYPQ3-5yepG7jKD5FK) pages.
:::


[title] Payment queueing
[path] Payments/Instant payments/

## Instant Payment queuing

Participating banks must be online to send and receive instant payments. Occasionally, a bank may be offline due to maintenance or technical issues. When this happens, Cross River queues instant payments until the bank is back online. This way you don't have to worry about resending a payment if the receiving bank () is temporarily unavailable.

## How it works

Instant payment queuing follows a structured process based on timing and the receiving bank availability:

1. You submit a payment to Cross River.
   When you submit the payment, you can also set a queue expiration time to cancel the payment if the receiving bank remains offline.
2. If the receiving bank is offline, the payment is queued and you get a notification.
3. If the receiving bank is online, the payment proceeds immediately without being queued.

## Cancel a payment

You can [cancel](docId\:SwyRh0F0e40q1DOFZmuNr) a queued payment before it reaches its expiration.

## How long can a payment stay queued

If you don't set an expiration time, payments have a default queue expiration of **3 days**, after which the payment is cancelled.

## Set a custom queue expiration

You can set one or both of the following:

- A specific date and time
- An expiration time in seconds

If you provide both, the system prioritizes the **time in seconds** and ignores the date and time.

Set the custom queue expiration using our [originate a credit transfer](docId:727H0GkQerqHAFKEy67Uu) API.

[title] Outbound and inbound
[path] Payments/Wires/

## How wire payments work

Understanding the mechanics of sending and receiving payments is essential for managing account balances. These factor influence when a payment will settle (clear):

- **Direction**: Is it an inbound or outbound payment?
-  **Payment type**: is it a value (meaning *credit transfer*) or a non-value (meaning *investigation request*)?
-  **Contractual cutoff time**: Was the outbound payment request received by Cross River before the cutoff time defined in your contact?

[Learn more about payment transactions and settlement](docId\:luDEbxnwU8p7Knb_bDM6I)&#x20;

## Outbound wires

When a customer uses [send an outbound wire](docId\:mC0d1W1u80umazO85mEIz) API, money is wired to an account at an external bank. When a wire payment is accepted and acknowledged by the Federal Reserve, an  (IMAD) is assigned to the payment and returned in the API. This can be used to track the payment via the FedWire Funds Transfer system.

When you initiate an outbound payment, the following steps occur:

- The system attempts to post a transaction to the originating account for the amount of the payment.
-  The system scans the payment data for OFAC compliance. Any potential matches require manual review by our BSA/AML team.

Once the transaction posts successfully and gets OFAC clearance, the payment status changes to *Pending*.

:::hint{type="warning"}
If the transaction cannot be posted to the originating account, the payment status updates to *Rejected*. The `Wire.Payment.Rejected` webhook event triggers.
:::

The next step is to add your payment to a distribution or outbound batch. Distributions are created throughout the day and are sent to the Federal Reserve for processing.

Once the distribution is released and acknowledged by the Federal Reserve, the `Wire.Payment.Sent` event triggers, and the payment status updates to *Completed*, marking the end of the payment lifecycle.

:::hint{type="info"}
See our tutorial to learn how to [send a wire payment](docId\:PtkMaOjX6exmQAsKrcJNv) via API.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/511c8QBH-VHiwWnyzIwUb/RIJGqtXwKrGk87v0Kl9vr_wires-out.png)

The following diagram shows the status and [webhook event](docId\:OA3cg-apKn_510VPq2yYe) flows for outbound wire transfers:

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/_5TF3qjLQpOreifWWyEOj-20251030-084753.png)

## Inbound wires

When a customer receives an incoming wire, an external bank wires money to a Cross River account. You receive a [webhook event](docId\:OA3cg-apKn_510VPq2yYe) to indicate that a wire has been received.

When an inbound wire payment is received, the system attempts to post a transaction to the account specified in the beneficiary identifier field within the payment details. Once the payment posts successfully posted, the `Wire.Payment.Received` webhook event triggers.

&#x20;If the transaction fails to post, the payment returns to the originating bank. &#x20;

:::hint{type="info"}
Inbound payments that fail to post and are returned will not be visible to you.
:::

There are various ways a wire can be originated due to the numerous fields available in the payment message. Consequently, the details within the `Wire.Payment.Received` webhook event payload may differ.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/511c8QBH-VHiwWnyzIwUb/xZU5AOG3QAFhLXRDFTPqI_wires-in.png)

The following diagram shows the status and [webhook event](docId\:OA3cg-apKn_510VPq2yYe) flows for inbound wire transfers:

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/BIVmc3rJvh39W2kiWN8nH-20251030-084745.png)


[title] Remittance payments
[path] Payments/International payments/

## What are remittance payments

Use remittance payments to send money electronically to someone in another country. For a remittance payment, a consumer requests the transfer, rather than a business. A recipient receives the funds.

## Regulation E compliance

Cross River provides .  All international consumer remittance payments processed through Cross River must comply with [Regulation E, Subpart B](https://www.consumerfinance.gov/rules-policy/regulations/1005/30/).  This regulation establishes consumer protections for remittance transfers. The Consumer Financial Protection Bureau (CFPB) enforces these rules. Subpart B specifically covers international consumer remittance transfers.

### How the law protects consumers

The Electronic Fund Transfer Act (EFTA) protects people who send money internationally. The Dodd-Frank Act later strengthened those protections.

### Key definitions under Regulation E

**Remittance transfer:** A sender requests an electronic transfer of funds to a designated recipient. A  sends the funds.

**Sender:** A consumer located in a U.S. state who requests a remittance transfer for personal, family, or household purposes.

**Designated recipient:** Any person the sender specifies to receive the transfer at a location in a foreign country.

### What regulation E excludes

Regulation E excludes these transfer types:

- Transactions of $15 or less
- Securities and commodities transfers

## Compliance requirements

This guide outlines the compliance requirements you implement when integrating with Cross River's remittance payment APIs.

### 1. Cancellation window

Users get a 30-minute cancellation window after they initiate a remittance transfer, by sending an international payment. During this window, consumers cancel the payment at no cost. Issue refunds within 3 business days of receiving the cancellation request.

Handle cancellations through Cross River's International Cancel Payment endpoint.

This 30-minute cancellation window applies only to personal (consumer) originated international payments. Business-originated payments are separate. The payment will be sent automatically, if it is not cancelled during the cancellation window.

Use the COS Payment ID returned in the [send payment](docId\:v6X5yKUfI7SEu3gHP7pKW) API endpoint, as the sole parameter in the [cancel payment](docId\:SwyRh0F0e40q1DOFZmuNr) API request.

### 2. Combined disclosure

Present a combined disclosure to the consumer before submitting the payment. This single disclosure satisfies both the pre-payment disclosure and receipt requirements under Regulation E.

Include all 11 of the following items in the disclosure:

| #  | Disclosure Item                                                             | Source                                                                                                                                                                                                                                                           |
| -- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1  | Amount to be transferred                                                    | [Cross River request a quote API](docId\:OnbkGeBIHVb4ihvB1haKL)  `{fromAmount}`                                                                                                                                                                                  |
| 2  | Exchange rate                                                               | [Cross River request a quote API](docId\:OnbkGeBIHVb4ihvB1haKL) `{conversionRate}`                                                                                                                                                                               |
| 3  | All fees charged to the consumer                                            | [Cross River request a quote API](docId\:OnbkGeBIHVb4ihvB1haKL)  `{transactionFee}`                                                                                                                                                                              |
| 4  | Total amount of the transaction (transfer amount + fees) in USD             | Items 1 + 3                                                                                                                                                                                                                                                      |
| 5  | Total amount the designated recipient receives, in the recipient's currency | [Cross River request a quote API](docId\:OnbkGeBIHVb4ihvB1haKL)  `{toAmount}`                                                                                                                                                                                    |
| 6  | Transfer date (the current date)                                            | Current date                                                                                                                                                                                                                                                     |
| 7  | Estimated delivery date                                                     | [Cross River request a quote API](docId\:OnbkGeBIHVb4ihvB1haKL)  `{estimatedDeliveryDate}` + 1 or 2 padded business days                                                                                                                                         |
| 8  | Name of the designated recipient                                            | [Cross River request a quote API](docId\:OnbkGeBIHVb4ihvB1haKL)  `{beneficiary: companyName or firstName lastName}`                                                                                                                                              |
| 9  | Error resolution and cancellation rights                                    | You provide this disclosure to customers. Tell your customers: They have the right to dispute transaction&#xD; errors. If they think there's an error, they should contact you within 180 days. They can also ask you for a written explanation of their rights. |
| 10 | Remittance transfer provider contact information (Cross River)              | You provide this (can be your or Cross River's info). This is your information or static Cross River contact information.                                                                                                                                        |
| 11 | State regulatory agency and CFPB contact information                        | You provide this. It is the NJDOBI and CFPB contact information listed below.                                                                                                                                                                                    |

### API integration details

Call the [request payment quote](docId\:OnbkGeBIHVb4ihvB1haKL) endpoint to retrieve items 1 through 8 in the API response, before payment submission. Format these items for display to the consumer.

### State regulatory agency and CFPB info

You can provide **NJDOBI** info via Cross River.

The format is:

New Jersey Department of Banking and Insurance&#x20;

&#x20;800-446-7467&#x20;

https\://www-dobi.nj.gov

**Consumer Financial Protection Bureau**

855-411-2372

855-729-2372 (TTY/TTD)

www\.consumerfinance.gov

:::hint{type="info"}
All 11 items must be displayed before submitting the payment.
:::

### 3. Proof of payment (post-transfer receipt)

After calling the [send payment](docId\:eVBwhQlRGZlamLd2hRwVd) endpoint, you must return proof of payment to the consumer. This is in addition to the Combined Disclosure explained above, which already serves as the primary receipt.

### Provider information

The provider listed on the proof of payment is either Cross River or you, depending on the arrangement. Coordinate with your Cross River partner representative to determine which entity appears as the provider.

### Confirmation number

Use one of these options for the confirmation number on the proof of payment:

- **Cross River's COS Payment ID**, returned in the [send payment](docId\:eVBwhQlRGZlamLd2hRwVd) API response
- **Your own confirmation number**, generated and managed by you

If you use your own confirmation number, maintain a mapping to the corresponding COS Payment ID. This mapping supports traceability, dispute resolution, and reconciliation.

Cross River returns the core field values in the [send payment](docId\:eVBwhQlRGZlamLd2hRwVd) API response. If you use your own confirmation number or serve as the listed provider, substitute the relevant values. Retain a mapping between your confirmation number and the COS Payment ID.

### 4. Error and dispute handling

**Error resolution**

Develop and maintain written error resolution policies and procedures and put controls in place. Retain all information needed to investigate a dispute.

The timing requirements below apply only to consumers. They do not apply to business customers. You may still assist business customers with resolving errors through your own procedures.

**What to keep on file**

Retain these records:

- Notices of error the sender submits
- Documents the sender provides about the alleged error
- Findings from your investigation&#x20;

**Error resolution process**

1. The sender reports an error within 180 days of the disclosed availability date.
2. You must investigate and reach a determination within 90 days.
3. Report results to the sender within 3 business days after completing the investigation.
4. If an error occurred, correct it within 1 business day of receiving the sender's instructions. If that is not possible, correct it as soon as reasonably practicable.

**Record retention**

Keep all records for at least two years.

### Summary of partner responsibilities

| Responsibility                                                    | Details                                                                                                                                                            |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Configure sub-account                                             | Configure the sub-account with classification = personal. This will determine that the account is a consumer account. Reg-E will only apply to a consumer account. |
| Display combined disclosure                                       | Present all 11 required items to the consumer before payment submission.                                                                                           |
| Include a 30-minute cancellation window through the customer app. | Ensure consumers cancel at no cost within the window.                                                                                                              |
| Deliver proof of payment                                          | Surface the Cross River provided receipt to the consumer after transfer.                                                                                           |
| Provider designation on receipt                                   | Coordinate with Cross River to determine whether they or you appear as the provider.                                                                               |
| Confirmation number mapping (if applicable)                       | If you use your own confirmation number, maintain a mapping to the COS Payment ID                                                                                  |
| Error dispute rights                                              | [See above](docId:2OOlsywMLwZlqaGtssPcd)                                                                                                                           |


[title] ACH
[path] Payments/

:::CtaButton{label="ACH APIs" docId="uV8uw2VzQX5bzghh2A5KP" openInNewTab="true"}

:::

## Cross River ACH solution

Cross River delivers payments through the Automated Clearing House (ACH), a common electronic payment method usually used for direct deposits of paychecks and bill payments. ACH is governed by [Nacha](https://www.nacha.org/content/how-ach-payments-work), the National Automated Clearinghouse Association.

When you use ACH through Cross River, you quickly originate and receive domestic ACH payments either as a single payment or in batches. We validate that the payment file structure meets Nacha requirements before releasing payments to the Federal Reserve.

## What we offer

- Settlement Priority: [Same day](docId:0papBZYBjF0LZPac8-tRW) and [Standard](docId:0papBZYBjF0LZPac8-tRW) settlement options. *Same Day* transactions are processed and settled on the same business day while *Standard* are processed and settled the next business day. Credit transactions may be processed up to two business days prior to settlement day.
- [Batched payments](docId\:A6PiIKl4qllwWNkFJ5tXq): You can send multiple payments in a single API call.

## Find out more

- [Outbound and inbound](docId\:rqqtpgcfU3hQrGMqMuERM)
- [Payment types](docId:0papBZYBjF0LZPac8-tRW)&#x20;
- [Participant roles](docId\:gP67oDbdcrlUrhNnyUKKr)
- [Payment settlement](docId\:qQ3D8sBTuETGRtKaXTK1M)
- [Time windows](docId\:E2visF8PQW49xrCm5AYLY)
- [SEC codes](docId\:M8a5dbzFhH5TV1NytK9Aw)&#x20;
- [ACH in COS Explorer](docId\:Hkt2KqLM4p4PdEknaz6Oz)&#x20;

## Tutorials

See our tutorials to learn how to:

| Through APIs                                          | Through COS Explorer                                 |
| ----------------------------------------------------- | ---------------------------------------------------- |
| [Send an ACH](docId\:HLIqOJNMHJwJRI29Z0Ryt)           | [Send an ACH](docId:9P9sIytdnDT2ien6qMwOk)           |
| [Send a client batch](docId:93yC84GGRygSZe1OPiW2m)    | [Cancel an ACH](docId\:luMw9ECn0GeTx47iU6P3i)        |
| [Simulate inbound ACH](docId\:XiG1oe0IP7L9Q-Ii3U-Mk)  | [Find ACH payment](docId\:mao_VwziURvXCAdtGpPOw)     |
|                                                       | [Manage reversal flow](docId:_XTTEhiJZ6z3XFfueIMQ_)  |










[title] Partner-managed
[path] Cards/Issuing models/

## Cross River partner-managed solution

Cross River's partner-managed model gives partners maximum input into the card program.

- Partners use their own card processor and handle everything from ledgering to transaction approvals. They manage the entire customer experience while the bank performs program oversight.
- Card Management: Partners handle card creation, activation, suspension, closure, and replacement using their processor systems within the bank-approved construct.

## How it works

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/IEFktazABAiIOBYvjlgCt_image.png)

You or your processor are the system of record for all balances and authorizations. Cross River does not participate in the authorization flow.

For prepaid and debit card programs, Cross River holds all card funds in an FBO account with subledgers for each individual external account the partner's ledger holds. There are no individual DDA accounts per cardholder. Each customer (personal or business) must have a Customer ID, created by registering each in COS. This supports bank-required customer oversight.

## What we offer

Cross River acts as the issuing bank, provides BIN sponsorship, network settlement, banking oversight, regulatory compliance oversight, and guidance on best practices.

This model lets partners tailor card programs while benefiting from Cross River's compliance oversight and expertise.

### Cross River’s role

As the issuing bank, Cross River provides:

- **BIN sponsorship:&#x20;**&#x41;s a  , Cross River sponsors the use of its Bank Identification Numbers (BINs), enables partners to offer cards without needing direct membership with Visa® or Mastercard®. Cross River allocated its assigned BINs to partner card programs.
- **Oversight:&#x20;**&#x43;ross River ensures that card programs comply with Visa, Mastercard, and federal and state banking regulations from initial program evaluation and through ongoing oversight. Cross River monitors programs through a combination of daily and monthly file exchanges between the Partner and Cross River as well as regular audits of the Partner’s compliance to agreed upon policies and procedures.
- **Network settlement and reporting**: Cross River manages network settlement with Visa and Mastercard and  [reports](docId\:i4b_iqAVcQFp9m1611twC) card portfolio activity to the same card networks on a quarterly basis as required by network rules.

### Partner’s role

The partner is responsible for:

- **Processor relationship and integration: &#x20;**&#x50;artners select and manage the card processor. The processor connects directly to the card networks (Visa, Mastercard) on behalf of the issuing BINs Cross River assigns. Partners then manage the ongoing operational relationship with the processor and customer experience flows, while exchanging information with Cross River to support settlement and compliance oversight.
- **Ledger management:&#x20;**&#x50;artners maintain a ledger of customer balances and transaction history, aligned with Cross River’s compliance requirements.
- **Transaction authorization:&#x20;**&#x50;artners manage real-time transaction approvals through the card processor, applying program-defined business rules, fraud controls, and transaction limits. Cross River works with partners to ensure these rules are compliant with network standards and regulatory expectations.
- **Card network connectivity:** Partners are responsible for establishing and managing connectivity between their processor and the card network (Visa, Mastercard). This includes receiving authorization requests, submitting clearing files, and handling chargebacks. Partners also manage disputes.
- **Card lifecycle management:&#x20;**&#x50;artners manage card creation, activation, suspension, closure, and replacement flows through the card processor systems, with Cross River providing guidance to maintain best practices and compliance. Refer to [partner-managed](docId\:fzCCeYGDTrT57ioeHxSCZ) for more details.&#x20;
- **Credit card&#x20;**[application decisioning](docId\:u22kF_UIlTq9l1Y5PxE69)**:** Specifically for **credit card programs** where Cross River is the lender of record. Partners are required validate, submit, and supplement credit card application data using Cross River's [PreApproval V2 API. ](docId\:PTX0F232EfVCVLbsYzT6I) &#x20;

### Balance visibility and FDIC insurance

When Cross River holds customer funds in an FBO account, federal banking regulations require that partners must make beneficial owner identity and ownership interests ascertainable for FDIC pass-through insurance. Partners achieve this through one of three partner-managed models, depending on where partners hold funds and maintain the program ledger.

The three partner-managed variations are:

- [Card only BIN sponsorship](docId\:Z5zkbYq_txaz_1bVhxbYG)**:&#x20;**&#x43;ross River does not hold customer funds
- [FBO subledger model](docId\:Z5zkbYq_txaz_1bVhxbYG): Cross River's preferred model. Cross River holds funds in partner FBO account with subledgers; partner maintains program ledger on their end, but updates individual customer balances in COS at the FBO account subledger level on a regular basis (at least once daily).&#x20;
- [FBO pooled account model](docId\:Z5zkbYq_txaz_1bVhxbYG): Cross River can also hold funds in a partner FBO account; partner maintains the program ledger and provides information about individual customer balances to Cross River via daily balance files.

Refer to [Balance and ledger models](docId\:Z5zkbYq_txaz_1bVhxbYG) for details on selecting the right structure for your program.

## Find out more

- [Balance and ledger models](docId\:Z5zkbYq_txaz_1bVhxbYG)&#x20;
- [Balance visibility](docId:3nPVK0JfOSqRv4rbIaasf)&#x20;
- [Partner-managed ACH processing](docId\:N4v5rMveHGzR3IxHCEKOW)&#x20;
- [Card transactions](docId\:K9zdYpQIPm_qhHCU3uRQ6)&#x20;
- [Advanced authorization](docId:88_iQwsRFzVb0Wp1UlwYP)&#x20;
- [Card lifecycle](docId:8vYtQnPfAOXDgK-GgRCq6)
- [Reporting and compliance](docId\:i4b_iqAVcQFp9m1611twC)&#x20;


[title] Availability policies
[path] Payments/Checks/

## Check availability policies

Availability policies define how quickly funds can be made available to the payee.

Availability of funds from a deposited check is based on rules specifically mandated by the Federal Reserve under Regulation CC (Reg CC). Reg CC defines how long a bank can hold funds based on various types of deposits. It's important to understand check processing and how Regulation CC (12 CFR 229) laws effect availability of funds.&#x20;

## Deposit a check

When you [deposit a check](docId\:xEOwz2w0C2wFSR3tV8mdy) with the API, the response shows the assigned availability policy in the `policy` field and the payment schedule in the `schedule` field. For example, in the response below, the check is assigned the *NewAccount* availability policy along with the schedule. The schedule shows the amount of funds from the check deposit that will be available in the customer's COS account each day starting with the first day (Day 1), which is defined as the value in the `processedAt` field. In this example, all the funds (**100&#x20;**&#x6F;r 1.00 USD) are available on the third day.

COS defines the availability policy of any given deposit when the deposit is successfully received. COS assigns the policy of the deposit based on that business day's deposits to that specific account.&#x20;

## Example

You can see the `schedule` field and its array in the deposit a check response starting in row 31 below.

```json
{
  "id": "9a44fdbf-89e2-4300-8f05-ad9501439bb1",
  "accountNumber": "2193590144",
  "referenceId": "C2436F698K0D",
  "paymentType": "Forward",
  "checkType": "Standard",
  "direction": "Outbound",
  "status": "Completed",
  "source": "Api",
  "posting": "Posted",
  "postingCode": "OK",
  "coreTransactionId": "21ba5fb0-e609-4560-a36f-ad9501439bb1",
  "memoPostId": "dc20e619-c5f7-4890-b3c8-ad9501439bb1",
  "originalPaymentId": "9a44fdbf-89e2-4300-8f05-ad9501439bb1",
  "customerId": "700f0d35-9940-4132-8608-ad89013927a9",
  "payerRoutingNumber": "021200339",
  "payerAccountNumber": "123456789",
  "payeeName": "",
  "checkNumber": "1237",
  "bofdRoutingNumber": "021214891",
  "sequenceNumber": "1353885824",
  "amount": 100,
  "currency": "usd",
  "micr": "d021200339dc12345678c1237",
  "recognizedAmount": 100,
  "iqaPassed": true,
  "hasFrontImage": true,
  "hasBackImage": true,
  "isRedeposit": false,
  "policy": "NewAccount",
  "schedule": [
    0,
    0,
    100
  ],
  "createdAt": "2021-08-31T15:38:13.28-04:00",
  "rejectedAt": "2021-08-31T15:38:17.527-04:00",
  "wasReturned": false,
  "purpose": "ENTERED BY #60C367E26DD36A0068580230#",
  "depositBusinessDate": "210831",
  "productId": "d5dc52bb-df80-4a5d-a5a8-ad89013844bd",
  "partnerId": "ede1a60d-3d51-47e8-9a9b-ad8901381f9e",
  "lastModifiedAt": "2021-08-31T15:38:17.5280148-04:00"
}
```

If you look at the deposit in COS Explorer, the same schedule would appear as:

::Image[]{src="https://archbee-doc-uploads.s3.amazonaws.com/fCt3n1oCa8rgNJ8fw9I2N--Gp0O7i1KS3w20HMKEsAD-20240808-121535.JPG" size="42" width="188" height="95" position="center" showCaption="false"}

Using the deposit scenario above, this means that $1.00 will be available in the account ending in 0144 on Thursday, September 2nd. Below is a more detailed breakdown of the schedule depicted in the payment details above:

| Day # | Date                         | Amount Available |
| ----- | ---------------------------- | ---------------- |
| 1     | Tuesday, August 31, 2021     | $0.00            |
| 2     | Wednesday, September 1, 2021 | $0.00            |
| 3     | Thursday, September 2, 2021  | $1.00            |


[title] Checks
[path] Payments/

:::CtaButton{label="Checks APIs" docId="ERUfX-HaUeS7MVMzJYBxq" openInNewTab="true"}

:::

## Cross River checks solution

Cross River delivers both check writing (withdrawals) and check deposits using . Cross River works with lockbox service providers to process paper check deposits.

## What we offer

In Cross River, checks have two different flows:

- **Deposit.** In the deposit flow, you deposit a check into your Cross River account. In Cross River this is referred to as an *outbound forward* item because the check needs to be sent (*out*) to the Federal Reserve and presented to the drawee bank (paying bank) for payment.
- **Withdrawal.&#x20;**&#x49;n the withdrawal flow, you write a check on your Cross River account to pay someone. In Cross River this is referred to as an *inbound forward* item because the Federal Reserve sends the check (*in*) to Cross River for payment and attempts to clear the check on your account. Your check *clears* when the transfer of funds succeeds.

## Find out more

- [Transaction roles](docId\:Ebo4pk8YLDLKSJwF-yBt_): Basic roles describing the participants in a check transaction.
- [Availability policies](docId\:faraLY1DsZL5AneLOq_4u): Defines how quickly funds can be made available to the payee.
- [Positive pay](docId\:qMy-Hnem-DnbIioD8z2jS): Cross River's Positive Pay feature lets you or your customer make sure that only legitimate checks get deposited in their accounts.
- [Stop payments](docId\:c2Cc1QVzv8hDSIDR59nPt): If the payer has passed a check that the payer FI has not yet processed, they can put a stop payment on the check.

## Tutorials

See our API tutorial to learn how to:

[Deposit a check](docId\:NCdnIvTYdix4xtbfn8jY6)&#x20;

[title] Wallets and address management
[path] Onchain payments/

## Wallets in Cross River

The Cross River stablecoin payments API supports two types of blockchain address records: **wallets linked to accounts** and **external beneficiary wallets**. These records are managed within Cross River infrastructure and associated with an account to support traceability and operational consistency.

## Wallets linked to accounts

Wallets linked to accounts are bank managed onchain addresses associated with a specific Cross River account. They are used exclusively to receive **inbound stablecoin payments** from external blockchain addresses.

### Wallet linked to accounts attributes

| Field                     | Description                                                                                          |
| ------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Purpose**               | Receive inbound stablecoin payments from external blockchain addresses                               |
| **Association**           | Each wallet is associated with a unique Cross River account                                          |
| **Creation**              | Generate using the `POST /v1/accounts/{accountNumber}/account-addresses` endpoint                    |
| **Retrieval**             | Retrieve using `GET /v1/accounts/{accountNumber}/account-addresses`                                  |
| **Blockchains supported** | Ethereum and Solana                                                                                  |
| **Security**              | Wallet addresses are managed within Cross River infrastructure. Partners do not manage private keys. |

**Example request**

```curl
POST /v1/accounts/2917000057/account-addresses
{
 "blockchain": "solana",
 "currency": "usdc"
}
```

**Example response**

```json
{
  "id": "108489fd-9f2f-4b1d-9a4e-b39d01164422",
  "accountNumber": "2917000057",
  "blockchain": "solana",
  "address": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
  "title": "solana",
  "lastModifiedAt": "2025-11-22T16:53:08.1639985Z"
}
```

## External beneficiary wallets

External beneficiary wallets represent approved **outbound payment destinations** that may be registered and reused when initiating stablecoin payments to external blockchain addresses, which may be Cross River’s customer or the customer’s customer (i.e. the end user)

### External beneficiary wallet attributes

| Field                     | Description                                                                      |
| ------------------------- | -------------------------------------------------------------------------------- |
| **Purpose**               | Send outbound stablecoin payments to an external blockchain address              |
| **Association**           | Each external beneficiary wallet is associated with a Cross River account        |
| **Creation**              | Create using the `POST /v1/accounts/{accountNumber}/external-addresses` endpoint |
| **Retrieval**             | Retrieve using `GET /v1/accounts/{accountNumber}/external-addresses`             |
| **Beneficiary details**   | Includes recipient identifying information for compliance review                 |
| **Blockchains supported** | Ethereum and Solana                                                              |

**Example request**

```curl
POST /v1/accounts/2917000057/external-addresses
{
  "title": "Supplier Wallet",
  "blockchain": "ethereum",
  "address": "0x0e6f76783822826ED173fEE6265bDbbdfEd4a0F5",
  "currency": "usdc",
  "beneficiary": {
    "name": "ABC Supplier LLC",
    "addressLine1": "500 Commerce Ave",
    "city": "Jersey City",
    "stateProvince": "NJ",
    "countryCode": "US",
    "postalCode": "07302"
  }
}
```

**Example response**

```json
{
  "id": "6d5a90a0-4967-44ba-8380-b39d011abba0",
  "accountNumber": "2917000057",
  "title": "Supplier Wallet",
  "blockchain": "ethereum",
  "address": "0x0e6f76783822826ED173fEE6265bDbbdfEd4a0F5",
  "beneficiary": {
    "name": "ABC Supplier LLC",
    "addressLine1": "500 Commerce Ave",
    "city": "Jersey City",
    "stateProvince": "NJ",
    "countryCode": "US",
    "postalCode": "07302"
  },
  "lastModifiedAt": "2025-11-22T17:09:23.9971536Z"
}
```

[Learn how to send onchain payments](docId:97ecBPkLpcwxVCxKeo_la)

## Operational overview

| Wallet type                     | Direction | Managed by                 | Description                                       |
| ------------------------------- | --------- | -------------------------- | ------------------------------------------------- |
| **Wallets linked to accounts**  | Inbound   | Cross River                | Receives USDC from external blockchain addresses  |
| **External beneficiary wallet** | Outbound  | Registered through the API | Used to send USDC to approved external recipients |

## Best practices

Follow these recommendations when managing wallet records through the API:

| Practice                                    | Description                                                                                    |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| **Use descriptive titles**                  | Assign clear names such as “USDC Solana Address” or “Vendor Payout Address” for identification |
| **Maintain consistent blockchain mappings** | Create wallet records on the same network used for the intended payment flow                   |
| **Validate external addresses before use**  | Verify destination addresses through internal procedures prior to initiating payments          |
| **Limit wallet creation**                   | Reuse existing wallet records where possible to maintain a clear audit trail                   |
| **Monitor modification timestamps**         | Use `lastModifiedAt` to track creation and updates for reporting and operational review        |


[title] Fedwire
[path] Payments/XML batch payments/Untitled/

## Fedwire XML input file example

:::hint{type="info"}
For Fedwire the PAIN standard is [PAIN.001.001.03](docId:6k_6gEXlRhLar0cNYQToN).
:::

```xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <CstmrCdtTrfInitn>
        <GrpHdr>
            <MsgId>DOMT10001174</MsgId>
            <CreDtTm>2020-07-15T16:20:05</CreDtTm>
            <NbOfTxs>3</NbOfTxs>
            <CtrlSum>6.01</CtrlSum>
            <InitgPty>
                <Nm>John Doe Corporation</Nm>
                <Id>
                    <OrgId>
                        <BICOrBEI>JOHNDOE99</BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <PmtInf>
            <PmtInfId>DOMT10000000</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <BtchBookg>false</BtchBookg>
            <NbOfTxs>3</NbOfTxs>
            <CtrlSum>6.01</CtrlSum>
            <PmtTpInf>
                <InstrPrty>NORM</InstrPrty>
                <SvcLvl>
                    <Cd>URGP</Cd>
                </SvcLvl>
            </PmtTpInf>
            <ReqdExctnDt>2020-07-15</ReqdExctnDt>
            <Dbtr>
                <Nm>John Doe Corporation</Nm>
                <PstlAdr>
                    <StrtNm>999 Any Street, 13th Floor</StrtNm>
                    <PstCd>99999</PstCd>
                    <TwnNm>Anytown</TwnNm>
                    <CtrySubDvsn>CA</CtrySubDvsn>
                    <Ctry>US</Ctry>
                </PstlAdr>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>0123456789</Id>
                    </Othr>
                </Id>
                <Ccy>USD</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <ClrSysMmbId>
                        <ClrSysId>
                            <Cd>USABA</Cd>
                        </ClrSysId>
                        <MmbId>123456789</MmbId>
                    </ClrSysMmbId>
                    <PstlAdr>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SHAR</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100FED011119</InstrId>
                    <EndToEndId>0000000000000064</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">1.00</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>THE BANK OF NEW YORK MELLON</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100FED000000</InstrId>
                    <EndToEndId>0000000000000065</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">3.00</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing 3</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100FED000000</InstrId>
                    <EndToEndId>0000000000000066</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">2.01</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>THE BANK OF NEW YORK MELLON</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing 2</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>
    </CstmrCdtTrfInitn>
</Document>
```


[title] Status and error codes
[path] Payments/XML batch payments/

## Status and error information

Processing of your [PAIN.001.001.03](docId:6k_6gEXlRhLar0cNYQToN) and [PAIN.008.001.02](docId:3gf3aPgshkfomTxcSFlzN)  input files creates PAIN.002.001.03 XML output files containing status and error information. We provide status at the following levels when processing the files received from a customer:

- **Group**: Header information shown once in the file that is common to all the transactions in that file.
- **Batch**: A block of either one or more transactions.
- **Transaction**: A block containing a single transaction.

## Group header

The group header building block in the XML file will show the file-level status in the **GrpSts** tag as follows:

| Status | Meaning                                                 |
| ------ | ------------------------------------------------------- |
| ACTC   | The file was validated and authenticated successfully   |
| RCVD   | The file has been received but is still being validated |
| RJCT   | The file was rejected                                   |

If a file is rejected, additional information is shown in the **StsRsnInf** tag. The Cd "NARR" value indicates that there is a reason the file was rejected, with the reason description appearing in the **AddtlInf** tag as shown in this example:

```xml
<GrpSts>RJCT</GrpSts>
  <StsRsnInf>
    <Rsn>
      <Cd>NARR</Cd>
    </Rsn>
    <AddtlInf>Number of transactions in file does not match with control record: Expected 12, but calculated 13</AddtlInf>
  </StsRsnInf>
```

Here are some examples of reasons that can appear in the Additional information:

- The number of transactions in the file doesn't match the number in the control record.
- The sum of all transactions in the file doesn't match the number in the control record.
- The total in the file exceeds the limit for the customer. In this case, you should contact the Cross River Client Integration team.
- A validation error was found in the file.

## Batch level

The batch building block shows batch status as follows:

| Status | Meaning                                                                                                                                                                                                                                                                                                                                                           |
| ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ACTC   | The batch was validated and authenticated successfully                                                                                                                                                                                                                                                                                                            |
| RCVD   | The batch is being checked                                                                                                                                                                                                                                                                                                                                        |
| RJCT   | The batch was rejected                                                                                                                                                                                                                                                                                                                                            |
| PNDG   | One or more transactions in the batch is pending                                                                                                                                                                                                                                                                                                                  |
| PART   | The transaction batch was partially accepted and partially rejected. This means that the batch includes one or more rejected transactions as well as one or more transactions that have been accepted.<br />In the output file generated, you’ll be able to see which transactions were rejected so you can make the necessary changes and resend to Cross River. |

If a batch is rejected, additional information is shown in the **StsRsnInf&#x20;**&#x74;ag. The Cd NARR indicates the reason the file was rejected, with the description appearing in the **AddtlInf** tag. Here are some examples of what might appear in this tag:

- The number of transactions doesn't match the number in the control record.
- The control sums don't correspond with the total calculated.
- The requested execution date is later than the current date and time.
- The creditor's account currency isn't in USD.
- The debtor's account currency isn't in USD.

## Transaction level

Statuses at the transaction level can be one of the following:

| Status | Meaning                                                                                          |
| ------ | ------------------------------------------------------------------------------------------------ |
| ACPT   | The transaction has been accepted by the external payment processor for processing               |
| RJCT   | The transaction was rejected                                                                     |
| ACSC   | The transaction has been completed and the settlement has been confirmed on the debtor's account |
| ACSP   | The transaction was accepted and has been moved on for processing                                |
| PDNG   | The transaction is pending and requires further processing                                       |

If the transaction is rejected, additional information is shown in the **StsRsnInf** tag. The **Cd** tag will show either as "NARR" for narrative or "ARET" for a return, with a reason description appearing in the **AddtlInf&#x20;**&#x74;ag. Here are some examples of what might appear in this tag:

- The customer isn't enabled for this rail. In this case, you should contact the Cross River Client Integration team.
- The account is not set up for this customer. In this case, you should contact the Cross River Client Integration team.
- In the case of a return, cancellation, or Notice of Change (NOC), a reason code and trace number will be provided here.
- In the case of a wire cancellation, a message will tell you to please contact your RM for more information on this canceled wire.


[title] Prepare input XML file
[path] Payments/XML batch payments/

## Input XML file preparation

The XML Input files you send to Cross River for processing must include certain building blocks. These building blocks are part of the ISO 20022 standard. The following topics describe the generic building blocks and elements that CR needs you to include so we can process your files.

The first page under this topic describes the input [PAIN.001.001.03 input file](docId:6k_6gEXlRhLar0cNYQToN), which is used for Book (internal) transfers, ACH Push transfers, and Fedwire transfers.&#x20;

The second page describes the input [PAIN.008.001.02 input file](docId:3gf3aPgshkfomTxcSFlzN), which is used for Direct Debit transfers.

:::hint{type="info"}
You can include up to 250,000 transactions in each file you send.
:::


[title] ACH CCD/PPD
[path] Payments/XML batch payments/Untitled/

## ACH CCD/PPD XML input file example

:::hint{type="info"}
For ACH/CCD/PPD the PAIN standard is [PAIN.001.001.03](docId:6k_6gEXlRhLar0cNYQToN).&#x20;

The example below is for the ACH Push CCD rail. The XML for ACH Push PPD is identical to that of ACH Push CCD, except that the value of the **Prtry&#x20;**&#x65;lement is "PPD".
:::

```xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <CstmrCdtTrfInitn>
        <GrpHdr>
            <MsgId>DOMT11234562</MsgId>
            <CreDtTm>2020-06-29T10:24:09</CreDtTm>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.01</CtrlSum>
            <InitgPty>
                <Nm>John Doe Corporation</Nm>
                <Id>
                    <OrgId>
                        <BICOrBEI>JOHNDOE99</BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <PmtInf>
            <PmtInfId>DOMT12345678</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <BtchBookg>false</BtchBookg>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.01</CtrlSum>
            <PmtTpInf>
                <InstrPrty>NORM</InstrPrty>
                <SvcLvl>
                    <Cd>NURG</Cd>
                </SvcLvl>
                <LclInstrm>
                    <Prtry>CCD</Prtry>
                </LclInstrm>
            </PmtTpInf>
            <ReqdExctnDt>2020-06-29</ReqdExctnDt>
            <Dbtr>
                <Nm>John Doe Corporation</Nm>
                <PstlAdr>
                    <StrtNm>999 Battery Street, 13th Floor</StrtNm>
                    <PstCd>99999</PstCd>
                    <TwnNm>Anytown</TwnNm>
                    <CtrySubDvsn>CA</CtrySubDvsn>
                    <Ctry>US</Ctry>
                </PstlAdr>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>0123456789</Id>
                    </Othr>
                </Id>
                <Ccy>USD</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <ClrSysMmbId>
                        <ClrSysId>
                            <Cd>USABA</Cd>
                        </ClrSysId>
                        <MmbId>123456789</MmbId>
                    </ClrSysMmbId>
                    <PstlAdr>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SHAR</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>234ACHC123455</InstrId>
                    <EndToEndId>0000000000000011</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">0.01</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Tp>
                        <Cd>CACC</Cd>
                    </Tp>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>
    </CstmrCdtTrfInitn>
</Document>
```


[title] RTP/FedNow
[path] Payments/XML batch payments/Untitled/

## RTP/FedNow XML input file example

:::hint{type="info"}
For RTP/FedNow the PAIN standard is [PAIN.001.001.03](docId:6k_6gEXlRhLar0cNYQToN).&#x20;
:::

Cross River will choose for you whether to use FedNow or RTP via TCH.

```xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <CstmrCdtTrfInitn>
        <GrpHdr>
            <MsgId>DOMT11234562</MsgId>
            <CreDtTm>2020-06-29T10:24:09</CreDtTm>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.01</CtrlSum>
            <InitgPty>
                <Nm>John Doe Corporation</Nm>
                <Id>
                    <OrgId>
                        <BICOrBEI>JOHNDOE99</BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <PmtInf>
            <PmtInfId>DOMT12345678</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <BtchBookg>false</BtchBookg>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.01</CtrlSum>
            <PmtTpInf>
                <InstrPrty>NORM</InstrPrty>
                <SvcLvl>
                    <Cd>URNS</Cd>
                </SvcLvl>
                 <LclInstrm>    
                    <Prtry>RTP</Prtry>    
                </LclInstrm>
            </PmtTpInf>
            <ReqdExctnDt>2020-06-29</ReqdExctnDt>
            <Dbtr>
                <Nm>John Doe Corporation</Nm>
                <PstlAdr>
                    <StrtNm>999 Battery Street, 13th Floor</StrtNm>
                    <PstCd>99999</PstCd>
                    <TwnNm>Anytown</TwnNm>
                    <CtrySubDvsn>CA</CtrySubDvsn>
                    <Ctry>US</Ctry>
                </PstlAdr>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>0123456789</Id>
                    </Othr>
                </Id>
                <Ccy>USD</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <ClrSysMmbId>
                        <ClrSysId>
                            <Cd>USABA</Cd>
                        </ClrSysId>
                        <MmbId>123456789</MmbId>
                    </ClrSysMmbId>
                    <PstlAdr>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SHAR</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>234ACHC123455</InstrId>
                    <EndToEndId>0000000000000011</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">0.01</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Tp>
                        <Cd>CACC</Cd>
                    </Tp>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>
    </CstmrCdtTrfInitn>
</Document>
```


[title] Output files
[path] Payments/XML batch payments/

## XML output files

When we process your payment instructions, XML output files (PSRs) are created conforming to the ISO 20022 standard’s PAIN.002.001.03 format. The output files provide information about the status of your transactions within Cross River’s banking core, such as whether the transactions were accepted or rejected.

Instead of an acknowledgment file followed by a PSR later on, Cross River sends you the PSR immediately.&#x20;

See [Status and error codes](docId:9kCGr2dDmGcB9FRvsZ0RH)  for more information.

## File naming convention

The output file PSRs conform to the following naming convention:

**\{InputFileName}.\{date}.\{time}-\{number}**

where "number" is the ordinal number of file from the specified date and time, and is used to differentiate among multiple possible files that were generated at that date and time. If only one file was generated at that date and time, the value of "number" will be "1".

## How an output file is built

The root element in the Output file is **CstmrPmtStsRpt** (Customer Payment Status Report) and it contains the following 3 building blocks:

- **GrpHdr** that contains the file metadata.
- **OrgnlGrpInfAndSts** contains message identifiers based on the original input file and includes a status for the group.
- **OrgnlPmtInfAndSts** contains elements referencing the original transactions. This is an optional section that may appear multiple times in the file. It can contain an individual status for the original instruction, as well as elements from your original transaction file.

Here’s an example of the file structure:

```xml
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Document xmlns='urn:iso:std:iso:20022:tech:xsd:pain.002.001.03' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
  <CstmrPmtStsRpt>
    <GrpHdr>
      ...
    </GrpHdr>
    <OrgnlGrpInfAndSts>
      ...
    </OrgnlGrpInfAndSts>
    <OrgnlPmtInfAndSts>
      ...
      <TxInfAndSts>
        ...
      </TxInfAndSts>
    </OrgnlPmtInfAndSts>
  </CstmrPmtStsRpt>
</Document>
```

## Group header

The **GrpHdr** block is a set of characteristics shared by all individual transactions included in the message. This building block is present once per output file. The group header includes the following elements:

```xml
<GrpHdr>
  <MsgId>11000000000a0a0</MsgId>
  <CreDtTm>2016-05-10T15:20:06.719Z</CreDtTm>
  <InitgPty>
    ...
  </InitgPty>
</GrpHdr>
```

- **MsgId**: Message ID. A unique ID that we generate for the file. It is unique per instructed party for a pre-agreed period. Best practice: Use a new for each file.\*\*
- **CreDtTm**: Created Date and Time. This is the date and time at which the output file was created.
- **InitgPty**: Initiating Party. This element is used to indicate the party that initiated the file. With the output files this will always be CR. The **InitgPty** block appears as follows:

```xml
<InitgPty>
  <Nm>John Doe Corporation</Nm>
  <Id><OrgId> <BICOrBEI>JOHNDOE99</BICOrBEI>
  </OrgId></Id>
</InitgPty>
```

- **Nm**: Name used to identify the initiating party.
- **Id**: The unique identifier for the initiating party.
- **OrgId**: Organization Identification, containing the BICOrBEI code.
- **BICOrBEI**: Business Identification Code. A unique and unambiguous identifier of the initiating party, which can be an organization or an individual person.

## Original group information and status

Various information can be included for the group in the **OrgnlGrpInfAndSts** block. The information included will depend on the input file and the status of the original transaction.

- **OrgnlMsgId** is the message identification number from the original input file.
- **OrgnlMsgNmId** indicates the original message type, and will either be pain.001.001.03 for payments (USD) or pain.008.001.02 for direct debits (USD).
- **OrgnlNbOfTxs** shows the number of transactions in the original input file.
- **OrgnlCtrlSum** displays the control sum from the original input file.
- **GrpSts** indicates the status for a group of transactions. See here for details about the different statuses.
- **AddtlInf** shows details for the status in the case of a rejected file. The rejection reason can be due to an issue with the original XML file, as well as an issue arising during internal processing by CR.

### Original transaction file accepted

The following example of the **OrgnlGrpInfAndSts** block shows that the original input transaction file was accepted. You can see this in the **GrpSts** element, where "ACTC" indicates the file was accepted.

```xml
<OrgnlGrpInfAndSts>
    <OrgnlMsgId>ABCDEFG090301</OrgnlMsgId>
    <OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
    <OrgnlNbOfTxs>1</OrgnlNbOfTxs>
    <OrgnlCtrlSum>42720.80</OrgnlCtrlSum>
    <GrpSts>ACTC</GrpSts>
</OrgnlGrpInfAndSts>
```

### Original transaction file rejected

The following example of the **OrgnlGrpInfAndSts** block shows that the original input transaction file was rejected. You can see this in the **GrpSts** element, where "RJCT" indicates the file was rejected. In this case, the output file will include the **StsRsnInf** element, which gives information about why the initial transaction was rejected. The reason will always be shown in the AddtlInf element.

:::hint{type="info"}
If your original transaction file is rejected, you should correct any errors and resend it to CR.
:::

In this example, the reason the file was rejected is shown as “Number of transactions in file does not match with control record: Expected 1, but calculated 2”. This means that there is a mismatch between the **OrgnlCtrlSum** provided in the original file and the actual number of transactions provided there.

```xml
<OrgnlGrpInfAndSts>
  <OrgnlMsgId>ABCDEFG090301</OrgnlMsgId>
  <OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
  <OrgnlCreDtTm>2015-08-10T10:48:47</OrgnlCreDtTm>
  <GrpSts>RJCT</GrpSts>
  <StsRsnInf>
    <Rsn>
      <Cd>NARR</Cd>
    </Rsn>
    <AddtlInf>Number of transactions in file does not match with control record: Expected 1, but calculated 2</AddtlInf>
  </StsRsnInf>
</OrgnlGrpInfAndSts>
```

## Original payment information and status

**OrgnlPmtInfAndSts** is a third and optional block, which contains elements referencing the original transactions. It corresponds to the batch level in the original file (specifically the **PmtInf** block), and can also include individual statuses for the original instructions.

```xml
<OrgnlPmtInfAndSts>
      <OrgnlPmtInfId>ABCDEFG00065</OrgnlPmtInfId>
      <OrgnlNbOfTxs>1</OrgnlNbOfTxs>
      <OrgnlCtrlSum>42720.80</OrgnlCtrlSum>
      <PmtInfSts>ACTC</PmtInfSts>
      <TxInfAndSts>
        ...
      </TxInfAndSts>
    </OrgnlPmtInfAndSts>
```

- **OrgnlPmtInfId** is a unique identifier, assigned by the original initiating party. It’s used to identify the original payment information block within the output file.
- **OrgnlNbOfTxs** indicates the number of payments in the original payment information block.
- **OrgnlCtrlSum** shows the sum total of all transactions included in the original payment information block.
- **PmtInfSts** indicates the status of the payment information block as follows:

| Payment Info Status | Meaning                                                                                                                                                                                                                                                                                                                                                     |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ACTC                | The batch was validated and authenticated successfully                                                                                                                                                                                                                                                                                                      |
| RCVD                | The batch is being checked                                                                                                                                                                                                                                                                                                                                  |
| RJCT                | The batch was rejected                                                                                                                                                                                                                                                                                                                                      |
| PDNG                | One or more transactions in the batch is pending                                                                                                                                                                                                                                                                                                            |
| PART                | The transaction batch was partially accepted and partially rejected. This means that the batch includes one or more rejected transactions as well as one or more transactions that have been accepted.<br />In the output file generated by, you’ll be able to see which transactions were rejected so you can make the necessary changes and resend to CR. |

:::hint{type="info"}
If your original transaction file is rejected, you should correct any errors and resend to CR.
:::

## Transaction-level information

The output file can include information about individual instructions in the original file in a building block called **TxInfAndSts**. This will be included as part of the **OrgnlPmtInfAndSts** building block. The transaction-level information includes the following:

- **OrgnlInstrId** contains the value of the Instruction Identification (**InstrId**) element provided in the input file. This element won’t be present if an **InstrId** value wasn’t provided in the input file.
- **OrgnlEndToEndId** contains the value of the **EndtoEndId** element provided in the input file.
- **TxSts** indicates the transaction status using one of the following codes:

| Status | Meaning                                                                                          |
| ------ | ------------------------------------------------------------------------------------------------ |
| ACPT   | The transaction has been accepted by the external payment processor for processing               |
| RJCT   | The transaction was rejected                                                                     |
| ASCS   | The transaction has been completed and the settlement has been confirmed on the debtor's account |
| ACSP   | The transaction was accepted and has been moved on for processing                                |
| PDNG   | The transaction is pending and requires further processing                                       |

In addition, the **TxInfAndSts** block contains the following elements:

- **OrgnlTxRef**: Contains information on the original transaction in its child elements, such as the transaction amount and the transaction's requested execution date.
- **Amt**: Contains the amount of the original transaction in a child element.
- **InstdAmt**: Contains the amount of the original transaction in the indicated currency.
- **ReqdExtnDt**: Requested Execution Date. The date on which the originator's account was to be debited.

If the status is shown as RJCT (rejected) an additional element, **StsRsnInf**, will be included in the **TxInfAndSts** block. This will provide information on why the transaction was rejected.

Here’s an example of the **TxInfAndSts** building block for when a transaction has succeeded:

```xml
<TxInfAndSts>
        <OrgnlInstrId>abcdefg000000</OrgnlInstrId>
        <OrgnlEndToEndId>0000000000001011</OrgnlEndToEndId>
        <TxSts>ACSC</TxSts>
        <OrgnlTxRef>
          <Amt>
            <InstdAmt Ccy="USD">42720.80</InstdAmt>
          </Amt>
          <ReqdExctnDt>2016-05-10</ReqdExctnDt>
        </OrgnlTxRef>
</TxInfAndSts>
```

Below is an example the **TXInfAndSts** building block for when a transaction has been rejected:

```xml
<TxInfAndSts>
        <OrgnlInstrId>abcdefg000000</OrgnlInstrId>
        <OrgnlEndToEndId>0000000000001011</OrgnlEndToEndId>
        <TxSts>RJCT</TxSts>
            <StsRsnInf>
            <Rsn>
                <Cd>NARR</Cd>
            </Rsn>
            <AddtlInf>The account 1234567890 is not setup in Unicorn for Client {clientID}. Please reach out to the Client Integration team.</AddtlInf>
            </StsRsnInf>
</TxInfAndSts>
```

The **StsRsnInf** block, which appears inside the **TxInfAndSts** block in the case of a rejected transaction, contains information on why the transaction was rejected, and contains the following elements:

- **Rsn**: Contains the reason code in a child element.
- **Cd**: Code. Currently, this code will always have the value of NARR, standing for "Narrative". The actual narrative text appears in the **AddtlInf** element.
- **AddtlInf**: Shows details for the status in the case of a rejected file. The rejection reason can be due to an issue with the original XML file, as well as an issue arising during internal processing by CR.

## Full sample output files

### Sample successful transaction

The examples below shows full output files generated when we have successfully processed the transaction file, for both the pain.001.001.03 and pain.008.001.002 formats. These examples include the Group Header, Original Information And Status, and Original Payment Information And Status blocks.

### From pain.001.001.03 input file&#x20;

The following is an example output file corresponding to a [pain.001.001.03 input file](docId:6k_6gEXlRhLar0cNYQToN), generated when the processing of the transaction file has succeeded.

```xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Document Xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrPmtStsRpt>
    <GrpHdr>
      <MsgId>abcdefg0000000</MsgId>
      <CreDtTm>2020-09-15T15:58:04.637Z</CreDtTm>
      <InitgPty>
        <Nm>John Doe Corporation</Nm>
        <Id>
          <OrgId>
            <BICOrBEI>JOHNDOE99</BICOrBEI>
          </OrgId>
        </Id>
      </InitgPty>
    </GrpHdr>
    <OrgnlGrpInfAndSts>
      <OrgnlMsgId>AMBCD10000000</OrgnlMsgId>
      <OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
      <OrgnlNbOfTxs>3</OrgnlNbOfTxs>
      <OrgnlCtrlSum>5.0100</OrgnlCtrlSum>
      <GrpSts>ACTC</GrpSts>
    </OrgnlGrpInfAndSts>
    <OrgnlPmtInfAndSts>
      <OrgnlPmtInfId>ABCD10000000</OrgnlPmtInfId>
      <OrgnlNbOfTxs>3</OrgnlNbOfTxs>
      <OrgnlCtrlSum>5.0100</OrgnlCtrlSum>
      <PmtInfSts>ACTC</PmtInfSts>
      <TxInfAndSts>
        <OrgnlInstrId>100ABCD012345</OrgnlInstrId>
        <OrgnlEndToEndId>0000000000000108</OrgnlEndToEndId>
        <ClrSysRef>46456456</ClrSysRef>
        <TxSts>ACSP</TxSts>
      </TxInfAndSts>
    </OrgnlPmtInfAndSts>
  </CstmrPmtStsRpt>
</Document>
```

### From pain.008.001.02 input file

The following is an example output file corresponding to a [pain.008.001.02 input file](docId:3gf3aPgshkfomTxcSFlzN), generated when the processing of the transaction file has succeeded.

```xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Document Xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrPmtStsRpt>
    <GrpHdr>
      <MsgId>abcdefg0123456789</MsgId>
      <CreDtTm>2020-11-02T11:30:11.055Z</CreDtTm>
      <InitgPty>
        <Nm>John Doe Corporation</Nm>
        <Id>
          <OrgId>
            <BICOrBEI>JOHNDOE99</BICOrBEI>
          </OrgId>
        </Id>
      </InitgPty>
    </GrpHdr>
    <OrgnlGrpInfAndSts>
      <OrgnlMsgId>DD1</OrgnlMsgId>
      <OrgnlMsgNmId>pain.008.001.02</OrgnlMsgNmId>
      <OrgnlNbOfTxs>3</OrgnlNbOfTxs>
      <OrgnlCtrlSum>6.0000</OrgnlCtrlSum>
      <GrpSts>ACTC</GrpSts>
    </OrgnlGrpInfAndSts>
    <OrgnlPmtInfAndSts>
      <OrgnlPmtInfId>DD1-1</OrgnlPmtInfId>
      <OrgnlNbOfTxs>3</OrgnlNbOfTxs>
      <OrgnlCtrlSum>6.0000</OrgnlCtrlSum>
      <PmtInfSts>ACTC</PmtInfSts>
      <TxInfAndSts>
        <OrgnlEndToEndId>DD1-1</OrgnlEndToEndId>
        <ClrSysRef>012345678901234</ClrSysRef>
        <TxSts>ACSP</TxSts>
      </TxInfAndSts>
      <TxInfAndSts>
        <OrgnlEndToEndId>DD1-2</OrgnlEndToEndId>
        <ClrSysRef>012345678901234</ClrSysRef>
        <TxSts>ACSP</TxSts>
      </TxInfAndSts>
      <TxInfAndSts>
        <OrgnlEndToEndId>DD1-3</OrgnlEndToEndId>
        <ClrSysRef>012345678901234</ClrSysRef>
        <TxSts>ACSP</TxSts>
      </TxInfAndSts>
    </OrgnlPmtInfAndSts>
  </CstmrPmtStsRpt>
</Document>
```

### Sample rejected transaction

The examples below show full output files generated when the transaction file has been rejected.

:::hint{type="info"}
In such output files, the error message information appears in the tag.
:::

### Rejected file (batch level error)

The following example shows an output file generated when the transaction file has been rejected on the batch level, for an original file that came in [pain.008.001.02](docId:3gf3aPgshkfomTxcSFlzN) format.

```xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Document Xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrPmtStsRpt>
    <GrpHdr>
      <MsgId>abcdefg012345689</MsgId>
      <CreDtTm>2020-11-02T07:56:06.228Z</CreDtTm>
      <InitgPty>
        <Nm>John Doe Corporation</Nm>
        <Id>
          <OrgId>
            <BICOrBEI>JOHNDOE99</BICOrBEI>
          </OrgId>
        </Id>
      </InitgPty>
    </GrpHdr>
    <OrgnlGrpInfAndSts>
      <OrgnlMsgNmId>pain.008.001.02</OrgnlMsgNmId>
      <OrgnlNbOfTxs>0</OrgnlNbOfTxs>
      <OrgnlCtrlSum>0.0000</OrgnlCtrlSum>
      <GrpSts>RJCT</GrpSts>
      <StsRsnInf>
        <Rsn>
          <Cd>NARR</Cd>
        </Rsn>
        <AddtlInf><![CDATA[Error parsing file examplefile.xml: The 'MsgId' start tag on line 5 position 5 does not match the end tag of 'GrpHdr'. Line 19, position 5.]]></AddtlInf>
      </StsRsnInf>
    </OrgnlGrpInfAndSts>
  </CstmrPmtStsRpt>
</Document>
```

### Rejected file (transaction level error)

The following example shows an output file generated when the transaction file has been rejected on the transaction level, for an original file that came in [pain.001.001.003](docId:6k_6gEXlRhLar0cNYQToN) format.

```xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Document Xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrPmtStsRpt>
    <GrpHdr>
      <MsgId>abcdefg0123456789</MsgId>
      <CreDtTm>2020-10-26T11:49:33.620Z</CreDtTm>
      <InitgPty>
        <Nm>John Doe Corporation</Nm>
        <Id>
          <OrgId>
            <BICOrBEI>JOHNDOE99</BICOrBEI>
          </OrgId>
        </Id>
      </InitgPty>
    </GrpHdr>
    <OrgnlGrpInfAndSts>
      <OrgnlMsgId>missing2</OrgnlMsgId>
      <OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
      <OrgnlNbOfTxs>3</OrgnlNbOfTxs>
      <OrgnlCtrlSum>5.0400</OrgnlCtrlSum>
      <GrpSts>ACTC</GrpSts>
    </OrgnlGrpInfAndSts>
    <OrgnlPmtInfAndSts>
      <OrgnlPmtInfId>missing2</OrgnlPmtInfId>
      <OrgnlNbOfTxs>3</OrgnlNbOfTxs>
      <OrgnlCtrlSum>5.0400</OrgnlCtrlSum>
      <PmtInfSts>RJCT</PmtInfSts>
      <TxInfAndSts>
        <OrgnlInstrId>example01234567</OrgnlInstrId>
        <OrgnlEndToEndId>sanity-10-1-12-1-21</OrgnlEndToEndId>
        <TxSts>RJCT</TxSts>
        <StsRsnInf>
          <Rsn>
            <Cd>NARR</Cd>
          </Rsn>
          <AddtlInf><![CDATA[Instruction ID example01234567 already exist]]></AddtlInf>
        </StsRsnInf>
      </TxInfAndSts>
      <TxInfAndSts>
        <OrgnlInstrId>example01234567</OrgnlInstrId>
        <OrgnlEndToEndId>example01234567</OrgnlEndToEndId>
        <TxSts>RJCT</TxSts>
        <StsRsnInf>
          <Rsn>
            <Cd>NARR</Cd>
          </Rsn>
          <AddtlInf><![CDATA[Instruction ID example01234567 already exist]]></AddtlInf>
        </StsRsnInf>
      </TxInfAndSts>
      <TxInfAndSts>
        <OrgnlInstrId>example012345678</OrgnlInstrId>
        <OrgnlEndToEndId>example012345678</OrgnlEndToEndId>
        <TxSts>RJCT</TxSts>
        <StsRsnInf>
          <Rsn>
            <Cd>NARR</Cd>
          </Rsn>
          <AddtlInf><![CDATA[Instruction ID example012345678 already exist]]></AddtlInf>
        </StsRsnInf>
      </TxInfAndSts>
    </OrgnlPmtInfAndSts>
  </CstmrPmtStsRpt>
</Document>
```


[title] Positive pay
[path] Payments/Checks/

## Positive pay intro

Cross River's Positive Pay feature lets you or your customer make sure that only legitimate checks get deposited in their accounts. Either you or the account holder define which specific checks will be accepted. This helps prevent check fraud.

You can think of Positive Pay as the opposite of [Stop Pay](docId\:c2Cc1QVzv8hDSIDR59nPt). In a sense you're providing an allowed list of authorized checks for deposit. Your or your customer provide the check number and amount for authorized checks. COS takes this Positive Pay information and matches it against *inbound forward* items presented by the Fed. If a match is found the check is paid. Otherwise the check is rejected.

## Statuses

Positive Pay statuses appear in the `status` field in the [positive pay responses](docId\:touxH7X9EeSpTKw6VXI4l) API, and include:

| Authorized | The check has been authorized for positive pay                                     |
| ---------- | ---------------------------------------------------------------------------------- |
| Paid       | An authorized check has been presented by the Federal Reserve and paid by the Bank |
| Revoked    | The check's positive pay authorization has been revoked                            |

In regular check calls Positive Pay statuses appear in the `positivePayResult` field, and include an additional value, **Disabled**, if Positive Pay is not configured for the check product.

:::hint{type="info"}
Your product must be configured by Cross River in order to use the Positive Pay feature. Once Positive Pay is enabled, any checks presented by the Fed that are not authorized will automatically be rejected and returned to the depositing bank.
:::

:::hint{type="warning"}
**IMPORTANT**
The date time within the `expiresAt` field of the response is ignored. If a check matching that positive pay criteria is received *after* the date in the `expiresAt` field it will be automatically rejected and returned to the depositing bank.
:::

Positive Pay API endpoints include:

- [Authorize check](docId\:touxH7X9EeSpTKw6VXI4l) &#x20;
- [Revoke authorization](docId\:YGpxhOjsGdGgo24Udz8lo)&#x20;


[title] Transaction roles
[path] Payments/Checks/

## Understand check transactions roles

The following are the basic roles describing the participants in a check transaction.

| Role Name                   | Description                                                                                                                                             |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Issuing bank                | The bank that issued the check (usually as part of a checkbook) to the account holder                                                                   |
| Check payer/payer           | The account holder writing and passing the check                                                                                                        |
| The Federal Reserve/The Fed | The central bank of the United States                                                                                                                   |
| Check payee/Payee           | The account holder depositing the check and receiving its funds                                                                                         |
| Depositing bank             | The check payee bank. The check is deposited into the payee’s account at the depositing bank.                                                           |
| Check payment services      | A range of companies that offer a variety of automated payment services, including the option to print and mail a check on behalf of an account holder. |


[title] File transfer
[path] Payments/XML batch payments/

## Transfer method

We use SFTP to enable partners to upload their payment instruction files and receive the reports. Each partner receives a **unique SFTP location&#x20;**&#x66;or upload and download.

### Access the SFTP

1. [Set up SFTP](docId\:vS2CkU9_W5BQQlbjsBq25).&#x20;
2. Access your SFTP folder using the credentials and information you receive from your Relationship Manager.

### SFTP folder structure

Your unique SFTP location includes a folder named Unicorn for XML file transfers. The Unicorn folder contains three folders: Outbound, Processed, and Inbound.

- **Outbound**: Upload your XML payment files to this folder.
- **Processed**: After we ingest and process the XML file, we save a copy to this folder.
- **Inbound**: We save output files (payment status reports) to this folder.
  - We save output files within minutes of processing.
  - As we process transactions and receive new statuses, we save additional output files.

## Upload your files to Cross River

Refer to [prepare your input XML file](docId\:MeXfr73i11kMnKc7pVFL1) for how to prepare your files.

## View files sent to you by Cross River

Refer to [output files](docId\:Dh2KWo029OFX91GzsvUsi) for an explanation of the files sent to you.

Reach out to [support](mailto\:unicorn.support@crossriver.com) for any questions.

## File processing

We check for a new input file every 30 minutes. Acknowledgment files containing initial processing information are normally available within minutes.

[title] Book transfers
[path] Payments/

:::CtaButton{label="Book transfer APIs" docId="B8Djj8OY_SyerGPU3D1vU" openInNewTab="true"}

:::

## Cross River book transfers solution

A book transfer in Cross River involves a debit of one account and a credit of another account in Cross River, completed as a one action. A book transfer moves funds between accounts, while also populating a description that includes the *from* and *to* accounts. 

For the transfer to be considered completed, both sides must be executed.

For example, the debit account has insufficient funds, and the credit operation will not be complete. This mechanism ensures accounts are never out of balance and makes following the movement of funds much easier.&#x20;

Transfers have two unique identifiers returned in response to the request:

- Transaction ID, which is in the form of a GUID
- Trace number, which has 17 characters and begins with the letter 'T'

[Learn more about payment transactions and settlement](docId\:luDEbxnwU8p7Knb_bDM6I)&#x20;

## Cross River transactions

**Post Transaction** allows you to select a specific transaction code and enter a unique transaction description.

## Tutorials

See our COS Explorer tutorial to learn how to:

[Perform a book transfer](docId\:B_wgTa_Ok59znDQ_b3g3-)&#x20;

[title] Onchain payments
[path] /

:::CtaButton{label="Onchain payment  APIs" docId="lnZ2VwmXVahA4yP7mayED" openInNewTab="true"}

:::

## Cross River stablecoin payments

Cross River’s stablecoin payments solution facilitates **stablecoin-based transactions** on supported blockchains through Cross River’s regulated banking infrastructure.

Stablecoin payments are initiated, processed, and reconciled through Cross River regulated banking infrastructure, applying the same compliance and settlement standards used for traditional payment rails such as ACH, FedNow, RTP, and Wires.

When stablecoin payments are sent or received, **an equivalent amount of USD is debited from or credited to the Cross River account**. Stablecoins are used for onchain settlement and do not post directly to the account.

## How it works

Stablecoin payments are processed through Cross River regulated infrastructure and executed on supported blockchain networks.

- **Send:** An outbound stablecoin payment is initiated by specifying a transfer to a verified external blockchain address. The equivalent USD amount is debited from the Cross River account, and the corresponding stablecoin amount is delivered onchain once the transaction is validated.&#x20;
- **Receive:** Stablecoins sent from an external blockchain address are received through Cross River managed onchain infrastructure. Once the transfer is confirmed onchain and required compliance checks are completed, the equivalent USD amount is credited to the Cross River account.&#x20;
- **Stay informed:** [Webhooks](docId\:ZW-MAsRoPivhvbu4juGkP) provide near real-time status updates for sent and received payments, supporting automated monitoring, reconciliation, and reporting.

[Learn how to send and receive stablecoin payments](docId\:XManhpk8UyOw_ExtkPZm2)

## Supported assets and networks

Cross River supports stablecoin transfers on supported blockchains. Available assets and networks may vary based on product configuration, operational readiness, and approved use case.&#x20;

Support for additional stablecoins and blockchain networks may be added over time.

[View supported assets and networks](docId\:UM0A4JKNVP2D_xmm6cPmw)

## Wallets and address management

Cross River abstracts the blockchain infrastructure required to send and receive stablecoin payments, so customers can access stablecoin payment capabilities without directly managing onchain wallets, private keys, or custody operations.&#x20;

- **Wallets linked to accounts for inbound stablecoin transfers:** Stablecoins sent from an external blockchain address are received through Cross River onchain infrastructure. Once the transfer is validated onchain and required compliance checks are completed, the equivalent USD amount is credited to the linked Cross River account.&#x20;
- **External beneficiary wallets for outbound stablecoin transfers:** Outbound stablecoin payments are initiated by debiting the equivalent USD amount from the Cross River account. The corresponding stablecoin amount is delivered onchain to a screened external blockchain address through Cross River managed infrastructure.&#x20;
- **Account experience:** Stablecoin payment activity is reflected in USD in the Cross River account. Customers do not need to directly hold or manage stablecoins, private keys, or onchain wallets.&#x20;

[Learn about wallet management](docId\:MApNqp7YaxvKiELrffvr9)

## Why choose Cross River

Stablecoin payments with Cross River give you:

- One endpoint to access stablecoin payments&#x20;
- No direct issuer integration required&#x20;
- No separate market maker integration required
- No need to manage wallets, private keys, or custody operations&#x20;
- Screening and monitoring built into the payment flow&#x20;

[Explore why partners choose Cross River and view use cases](docId\:N-q1DrXta7r3RMZ3zGAfK)

[title] Supported assets and networks
[path] Onchain payments/

## Cross River support

Cross River stablecoin payments support **stablecoin transfers across multiple blockchains.** Supported networks are selected and maintained to align with Cross River’s standards for reliability, interoperability, and settlement processing.

## Supported asset

| Asset    | Description                                                                        | Usage                                                                        |
| -------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| **USDC** | A U.S. dollar denominated stablecoin issued by Circle and backed by reserve assets | Used to support stablecoin payment activity on supported blockchain networks |

:::hint{type="info"}
Support for additional stablecoins and blockchain networks may be added over time.
:::

## Supported networks

### Ethereum

A widely adopted blockchain network with a mature ecosystem and established infrastructure.

| Function             | Explanation                                                                                  |
| -------------------- | -------------------------------------------------------------------------------------------- |
| **Settlement time**  | Confirmation typically occurs within seconds to a few minutes, subject to network conditions |
| **Transaction fees** | Determined by network gas prices and paid in **ETH**                                         |
| **Precision unit**   | Wei (1 USDC = 1e6 Wei)                                                                       |
| **Use case focus**   | Often used where broad ecosystem compatibility and established tooling are considerations    |

### Solana

A high throughput blockchain network designed for low latency transaction processing.

| Function             | Explanation                                                                               |
| -------------------- | ----------------------------------------------------------------------------------------- |
| **Settlement time**  | Confirmation typically occurs within seconds, subject to network conditions               |
| **Transaction fees** | Low transaction fees paid in **SOL**                                                      |
| **Precision unit**   | Lamport (1 USDC = 1e6 Lamports)                                                           |
| **Use case focus**   | Often used where faster confirmation times and lower transaction costs are considerations |

## Token denominations

Blockchain networks represent asset values in smaller units to support precise transactions and accurate fee calculation. API requests should specify amounts using the smallest denomination supported by the selected network.

| Asset    | Network  | Precision unit | Rate                                         | Format                               |
| -------- | -------- | -------------- | -------------------------------------------- | ------------------------------------ |
| **USDC** | Ethereum | Wei            | 1 USDC = 1,000,000 Wei                       | `amount = 1000000` represents 1 USDC |
| **USDC** | Solana   | Lamport        | 1 USDC = 1,000,000 Lamports                  | `amount = 1000000` represents 1 USDC |
| **ETH**  | Ethereum | Wei            | 1 ETH = 1,000,000,000,000,000,000 Wei (1e18) | Used for network fees                |
| **SOL**  | Solana   | Lamport        | 1 SOL = 1,000,000,000 Lamports (1e9)         | Used for network fees                |

:::hint{type="info"}
Use the `amount` field in your API calls to specify values in the smallest denomination.
For example, to send 1 USDC, set `"amount": 1000000`.
:::

## Network selection

You can specify a blockchain network for each stablecoin payment using the `blockchain` field in the API request. Cross River manages network interaction, transaction broadcasting, and confirmation tracking as part of the payment flow.

**Example request:**

:::CodeblockTabs
cur

```curl
{
 "accountNumber": "2917000057",
 "amount": 1000000,
 "currency": "usdc",
 "blockchain": "solana",
 "externalAddressId": "9f9e2c43-8a2d-4cd7-a3f0-b39e012789ab"
}
```
:::

[Learn how to originate an onchain payment](docId:97ecBPkLpcwxVCxKeo_la)

## Choose the right network

| Network      | Description                                                             | Selection considerations                                                                 |
| ------------ | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| **Ethereum** | Widely adopted network with established infrastructure and tooling      | Often selected when ecosystem compatibility and interoperability are priorities          |
| **Solana**   | High throughput network designed for low latency transaction processing | Often selected when faster confirmation times and lower transaction costs are priorities |

#


[title] Loan funding
[path] Lending/

## Arix funding engine

The Arix funding engine allows you the flexibility to control how the loan is funded. You can enter instructions and control the rails, and the order in which to attempt to fund over those rails. You can also elect to fund different parts of the loan over different rails, and supply fallback options if rails fail.

After the loan is approved for funding, Arix initiates funding. The loan passes to the InFunding status and funds are sent using rails.

There are several [rail types](docId\:t9u_6qCUmY9WeZeISalp1) you can use. Depending on the rail type, funding results might be immediate or take up to a few days.

Based on how the funding progresses, the loan can be in one of these statuses:

- `InFunding` leads to `Funded` or `NotFullyFunded`
- `Returned`

## Status: Infunding/ Funded

1\. After the loan is approved, funding starts automatically. Arix tries the **Priority 1** rail first to start funding.&#x20;

**Status: InFunding**

2\. When all the rails are successfully funded, the status of the loan changes to funded
**Status: Funded**

3\. After the loan has funded, the loan seasoning period begins, which typically occurs on business day 2 or 3 from the funding date.

:::hint{type="info"}
**If no amount is specified in the request, the funding engine attempts to fund the full loan amount.**
:::

## Status: NotFullyFunded

If the loan doesn't fully fund from the first rail (priority 1), the engine looks for the priority 2 rail.
A priority 2 rail can be:

- A rail that was originally designated as a priority 2 (to follow a priority 1 rail)
- The next priority 1 rail

The funding engine continues to process rails until there are no rails left to process.

If after all the rails have been processed there is an outstanding loan balance, the loan status is then updated to `NotFullyFunded`. When `NotFullyFunded`, you can submit new funding information.

### Skipped rails

If the loan is fully funded prior to the last rail, any rails that weren't attempted are labeled **Skipped**.

## Status: Returned funds

In most cases the funding goes smoothly and the funds are fully received by the borrower. However, funding requests can fail immediately or succeed and then be returned later. If a rail fails, is rejected, or returned, Arix reports a detailed error message as part of the railUpdate webhook and in the `LoanDetail` API.

## Loan funding follow-up

Arix records all the funding attempts and continuously updates the status as each rail is processed, funded, or failed. If the loan wasn't fully funded and is in the status, `NotFullyFunded`, you can submit new funding information an unlimited number of times. This is also the process for required multiple disbursements over a period of time for a single loan.

You should use the RailUpdated webhook to follow the funding process.&#x20;

:::hint{type="info"}
Any loan update made via a **/PUT** call is ignored when the loan is InFunding.
:::

Arix generates [webhooks](docId\:jXGfRbtNHOshrZJYHYKTo)  which keep you up to date on the loan status.

Based on how the funding progresses, the loan can be in one of these statuses:

- `InFunding` leading to `Funded`
- `NotFullyFunded`
- `Returned`

## Pull funding from merchant

The [PullFunding API](docId\:WBnY56dNE7PhLG2XJqPOq)  enables Marketplace Lenders (MPLs) who leverage Arix to manage Merchant Returns. This functionality provides a method for MPLs to retrieve funds from merchant accounts back into the bank, using  debits. This is especially useful when a merchant initiates a return or refund, as it reduces the need for manual reconciliation or additional requests, by reusing previously funded loan.

:::hint{type="success"}
It is best practice to wait three days before sending out funds after a successful pull.

According to Nacha standards, a pull can be returned to the merchant. Most returns tend to occur within the first three days. To reduce the likelihood of overfunding, it is advisable to wait before sending out the next `FundingInfo` request.
:::



# Next steps

- [Loan returns](docId\:yvKvFJcitSb3lCSg1d6Op)&#x20;
- [Loan seasoning, sale or retention](docId\:DoBshm4E1JoFa8FUVqAPh)   &#x20;
- [Servicing data submission and reconciliation](docId\:sJ6yahWlYzkEDLo6oiJf3)&#x20;


[title] Loan data exchange
[path] Lending/

## MPL servicing data

MPL submits servicing data on a daily basis. This is required for loans held by Cross River and optionally for those sold back. The data includes principal/interest breakdown, next due date, and delinquency info. The data is submitted via SFTP.

To access the SFTP:

1. [Set up SFTP with Cross River](docId\:vS2CkU9_W5BQQlbjsBq25).&#x20;
2. Access your SFTP folder using the credentials and information you receive from your Relationship Manager.

:::hint{type="warning"}
To transfer the files securely, you must use a client that supports SSH with the following public-key algorithms:

- RSA
- sha2 521
- sha2 384
- sha 256
:::

These loan reports are available:

- [Servicing](docId\:TwtdRN1QeSyjeTBmoegpI)
- [Transaction](docId\:llhNxjQGt5Ph4gK_R8OcO) &#x20;


[title] Lending FAQ
[path] Lending/

## Lending – Frequently Asked Questions

This section answers common questions about the Lending capabilities available through Cross River’s platform: origination, funding, seasoning, sale, servicing, and more.

## Product overview

**What does Cross River Lending support?**
The platform enables marketplace lenders (MPLs) to submit applications, fund loans across multiple rails, manage loan seasoning, sell or retain the loan, and exchange servicing data.&#x20;

## Loan process

**What are the main stages in the loan process?**
The stages include:

- Application & pre-approval&#x20;
- Loan creation and document upload&#x20;
- Compliance review&#x20;
- Funding via multiple rails (ACH, same-day ACH, RTP, FedNow, wire, card push)&#x20;
- Seasoning, sale or retention&#x20;
- Daily servicing data exchange&#x20;

**Can I fund a loan via different rails and fallback options?**
Yes, the funding engine supports multiple funding rails and you may configure primary and fallback rails as part of loan funding logic.&#x20;

## Loan seasoning, sale or retention

**What is loan seasoning and why does it matter?**
After funding, every loan enters a seasoning period (typically configured by the program) before it is sold or retained. This enables various warehousing durations (e.g., 30 – 120 days) to fit with your capital needs.

**What are my options for sale or retention of the loan?**
Post-seasoning you may choose to:

- Purchase the loan (or have an investor purchase it)&#x20;
- Have Cross River retain the loan on its balance sheet&#x20;

## Servicing and data exchange

**What servicing data must be exchanged and how often?**
MPLs submit daily servicing data, including principal/interest breakdowns, next payment date, and delinquency status via SFTP to Cross River.&#x20;



:::hint{type="info"}
For more information, please visit our [lending](docId:_wM-MYSb5fOcETpU-miNT) pages.
:::


[title] PAIN.008.001.02 input file
[path] Payments/XML batch payments/Prepare input XML file/

## Input file PAIN.008.001.02 preparation

This page contains a description of the input XML file for the PAIN.008.001.02 specification, which is used for ACH Direct Debit (ACH Pull) CCD and PPD payments.

:::hint{type="warning"}
When entering text, the special characters &, \<, >, and " cannot be used directly, as they are reserved for XML code.
:::

The following is a high-level example of a PAIN.008.001.02 input XML file:

```xml
<?xml version="1.0" encoding="UTF-8" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
    <CstmrDrctDbtInitn>
        <GrpHdr>
            ...
        </GrpHdr>    
        <PmtInf>
           ...
        </PmtInf>
    </CstmrDrctDbtInitn>
</Document>
```

The root document tag for the input file is **CstmrDrctDbtInitn**. It contains a Group Header and at least one Payment Information building block (corresponding to a batch). The Group Header contains metadata that relates to all the batches in the file. Each batch contains meta data for all the transactions within.

## Group header (GrpHdr)

Your XML Input file must include a group header using the GrpHdr building block. This building block is only present once in a file and contains a set of characteristics shared by all the individual instructions included in the message.

```xml
<GrpHdr>
    <MsgId>ABCDEFG090301</MsgId>
    <CreDtTm>2013-08-28T17:12:44</CreDtTm>
    <NbOfTxs>5</NbOfTxs>
    <CtrlSum>43236.93</CtrlSum>
    <InitgPty>
      ...
    </InitgPty>
</GrpHdr>
```

Here's an explanation of the different tags in the GrpHdr block as shown above:

- **MsgId**: An ID number for the message, which you assign before sending the file to Cross River. **Best practice**: Use a new for each file.\*\*
- **CreDtTm**: The date and time the payment instruction was created.
- **NbOfTxs**: The total number of transaction instruction blocks in the message. Each instruction corresponds to one transaction, and will form a separate instruction block. For more information on the transaction instruction blocks, see the [Direct Debit Transaction Information](docId:3gf3aPgshkfomTxcSFlzN) section below.
- **CtrlSum**: The total amount (as a number) of all the instructions included in the file, irrespective of currencies, used as a control sum. **Note**: Unicorn currently supports USD only.
- **InitgPty**: Indicates the party initiating the transfer. This is the party initiating the credit transfer on behalf of the debtor. See the Initiating Party section that follows for more details on the tags inside the **InitgPty** block.

:::hint{type="info"}
All the above elements in the **GrpHdr** block are required.
:::

## Initiating party (InitgPty)

The Initiating Party is the party initiating the payment. This is the party that initiates the credit transfer on behalf of the debtor.

```xml
<InitgPty>
    <Nm>John Doe Corporation</Nm>
    <Id>
        <OrgId>
            <Othr>
                <Id>0123456789</Id>
            </Othr>
        </OrgId>
    </Id>
</InitgPty>
```

Here's an explanation of the different tags in the **InitgPty** block as shown above:

**Nm**: Name by which the originating party is known and which is usually used to identify that party.

**Id:** Identifier. The parent element of the **OrgId** element containing the identifying information about the initiating party.

**OrgId**: Organization Identification block containing the initiating party's identification in its child elements.

**Othr**: A block containing the initiating party's identification in a child element.

**Id**: The unique and unambiguous identifier the initiating party, which can be an organization or an individual person.

:::hint{type="info"}
All the above elements in the **InitgPty** block are required.
:::

## Payment information (PmtInf)

The **PmtInf** block contains payment information per batch in your file. You must include at least one **PmtInf** block in your file. In most cases the input file contains only one **PmtInf** block, with one set of payment instructions. This enables you to indicate general properties (such as execution date, creditor information, and credited account) once at the level of the **PmtInf** block.

You might want to use multiple **PmtInf** blocks if the file includes instructions to credit more than one account. In that case, you need a **PmtInf** block for each account that is going to be credited.

```xml
<PmtInf>
    <PmtInfId>DOMC10000025</PmtInfId>
    <PmtMtd>DD</PmtMtd>
    <BtchBookg>false</BtchBookg>
    <NbOfTxs>5</NbOfTxs>
    <CtrlSum>12.01</CtrlSum>
    <PmtTpInf>
        ...
    </PmtTpInf>
    <ReqdColltnDt>2020-08-21</ReqdColltnDt>
    <Cdtr>
        ...
    </Cdtr>
    <CdtrAcct>
        ...
    </CdtrAcct>
    <CdtrAgt>
        ...
    </CdtrAgt> 
    <DrctDbtTxInf>
        ...
    </DrctDbtTxInf>
</PmtInf>
```

Following is an explanation of the different top-level tags and blocks found in the **PmtInf** block as shown above. These tags and blocks appear once for each **PmtInf** block, except for the **DrctDbtTxInf** block, which can appear multiple times, representing multiple transactions. Each of the other tags and blocks applies to all **DrctDbtTxInf&#x20;**&#x62;locks that appear in the **PmtInf** block:

- **PmtInf**: This block contains payment information, such as creditor and payment type information. You can use this block repeatedly within the same input file. **Note**: One or more instances of the **PmtInf** element is required.
- **PmtInfId**: The unique ID number for this batch, which is assigned by the originating party. **Note**: This element is required.
- **PmtMtd**: Payment Method. For direct debit transactions you should define it as "DD". Note: This element is required.
- **BtchBookg**: Defines how Cross River should handle the debit. If the tag is set to "true", then all debit instructions will be handled as one consolidated debit. If the tag is set to "false", it means that you want each debit to be handled separately. **Note**: Currently the system will always behave as if the value is "false".
- **NbOfTxs**: The number of transactions within this batch. **Note**: This element is required.
- **CtrlSum**: The sum total of all instructions within this batch, irrespective of currencies, used as a control sum. **Note**: Unicorn currently supports "USD" only. **Note**: This element is required.
- **PmtTpInf**: The Payment Type Information block, including a priority level. See [Payment Type Information](docId:3gf3aPgshkfomTxcSFlzN) section below for more details on the **PmtTpInf** block. **Note**: This element is required.
- **ReqdColltnDt**: Requested Collection Date. The date on which the originator's account is to be debited. This tag currently supports current dates. Support for future dates will come in a future release. **Note**: This element is required.
- **Cdtr**: Creditor block. Contains the name and postal address of the originator. See the [Creditor](docId:3gf3aPgshkfomTxcSFlzN) section below for an example of the **Cdtr** block. **Note**: This element is required.
- **CdtrAcct**: Creditor Account. The account of the originator that will be credited. See the [Creditor Account](docId:3gf3aPgshkfomTxcSFlzN) section below for more details on the **CdtrAcct** block. **Note**: This element is required.
- **CdtrAgt**: Creditor Agent block. Details on the creditor's financial institution. See the [Creditor Agent](docId:3gf3aPgshkfomTxcSFlzN) section below for more details on the **CdtrAgt** block. **Note**: This element is required.
- **DrctDbtTxInf:** Direct Debit Transaction Information. Includes elements related to the debit side of the transaction, such as debtor and remittance information. This block can appear multiple times within the same **PmtInf** block. See the [Direct Debit Transaction Information](docId:3gf3aPgshkfomTxcSFlzN) section below for more details on the **DrctDbtTxInf** block. **Note**: One or more of the **DrctDbtTxInf** element is required.

## Payment type information (PmtTpInf)

The **PmtTpInf** block contains information on the payment type.

```xml
<PmtTpInf>
    <SvcLvl>
        <Cd>NURG</Cd>
    </SvcLvl>
    <LclInstrm>
        <Prtry>CCD</Prtry>
    </LclInstrm>
</PmtTpInf>
```

Here's an explanation of the different tags in the **PmtTpInf** block as shown in the examples above:

- **SvcLvl**: Service Level. Contains the payment urgency level (**Cd**) in a child element.
- **Cd**: Code: Payment urgency level. **Note:** This element is required. For direct debit transactions this has a fixed value of "NURG".
- **LclInstrm**: Local Instrument. Used to specify a local instrument, local clearing option and/or to further qualify the service or service level. **Note**: This element is required.
- **Prtry**: Proprietary. Note: This element is required. The value must be the ACH Pull type ("CCD" or "PPD").

## Creditor (Cdtr)

The **Cdtr** block contains information on the name, postal address and ID of the originator (creditor).

```xml
<Cdtr>
    <Nm>John Doe Corporation</Nm>
    <PstlAdr>
        <Ctry>US</Ctry>
        <AdrLine>999 Any Street, 13th Floor</AdrLine>
        <AdrLine>99999 Anytown</AdrLine>
    </PstlAdr>
    <Id>
        <OrgId>
            <Othr>
                <Id>0123456789</Id>
            </Othr>
        </OrgId>
    </Id>
</Cdtr>
```

- **Nm**: Creditor name.
- **PstlAdr**: A block containing the postal address of the creditor, including country and address lines.
- **Id**: Identification block, containing information used to identify the creditor in child elements.
- **OrgId**: Organization Identification block containing the creditor identification in its child elements.
- **Othr**: A block containing the creditor identification in a child element.
- **Id**: A unique and unambiguous identifier of the creditor. This ID is identical to the Id field in the **InitgPty** block described above.

## Creditor account (CdtrAcct)

The **CdtrAccount** block contains information on the account of the originator that will be credited.

```xml
<CdtrAcct>
    <Id>
        <Othr>
            <Id>0123456789</Id>
        </Othr>
    </Id>
    <Ccy>USD</Ccy>
</CdtrAcct>
```

Here's an explanation of the different tags in the **CdtrAccount** block as shown above:

- **Id**: The sub-block containing the creditor's account identification information.
- **Othr**: The sub-block containing the creditor's Id tag.
- **Id**: The unique identifier of the creditor's account.
- **Ccy**: Currency. The ISO currency code of the debtor's account.

:::hint{type="info"}
All the above elements in the **CdtrAcct** block are required.
:::

## Creditor agent (CdtrAgt)

The **CdtrAgt** block contains information on the originator's financial institution.

```xml
<CdtrAgt>
    <FinInstnId>
        <ClrSysMmbId>
            <MmbId>123456789</MmbId>
        </ClrSysMmbId>
        <PstlAdr>
            <Ctry>US</Ctry>
        </PstlAdr>
    </FinInstnId>
</CdtrAgt>
```

Here's an explanation of the different tags in the **CdtrAgt** block as shown above:

- **FinInstnId**: Financial Institution Identification sub-block.
- **ClrSysMmbId**: Clearing System Member Identification sub-block. Contains Information used to identify a member within a clearing system.
- **MmbId**: Member Identification: Identifier (routing number) of the creditor's financial institution in the creditor's clearing system. For Direct Debit, this value must always be Cross Rivers's routing number (021214891).
- **PstlAdr**: Postal Address sub-block.
- **Ctry**: Country code. The country code for the creditor's financial institution.

:::hint{type="info"}
All the above elements in the **CdtrAgt** block are required.
:::

## Direct debit transaction information (DrctDbtTxInf)

The **DrctDbtTxInf** block includes elements related to the debit side of the transaction, such as debitor and remittance information for the transaction. You can use this block repeatedly within the same PmtInf block. The number of occurrences of the **DrctDbtTxInf** block within a file is indicated by the **NbOfTxs** field in the Group Header (**GrpHdr**).

```xml
<DrctDbtTxInf>
    <PmtId>
        <EndToEndId>100DDEB000000</EndToEndId>
    </PmtId>
    <InstdAmt Ccy="USD">0.01</InstdAmt>
    <DbtrAgt>
        <FinInstnId>
            <ClrSysMmbId>
                <MmbId>123456789</MmbId>
            </ClrSysMmbId>
            <Nm>DUMMY</Nm>
            <PstlAdr>
                <Ctry>US</Ctry>
            </PstlAdr>
        </FinInstnId>
    </DbtrAgt>
    <Dbtr>
        <Nm>John Doe</Nm>
        <PstlAdr>
            <Ctry>US</Ctry>
        </PstlAdr>
    </Dbtr>
    <DbtrAcct>
        <Id>
            <Othr>
                    <Id>01234567890</Id>
            </Othr>
        </Id>
    </DbtrAcct>
    <RmtInf>
        <Ustrd>Testing</Ustrd>
    </RmtInf>
</DrctDbtTxInf>
```

Here's an explanation of the different tags in the **DrctDbtTxInf** block as shown above:

- **PmtId**: Payment Identification sub-block. Provides identifying information regarding the transaction in child elements. **Note**: This element is required.
- **EndToEndId**: End to End Identification: End-to-end reference number of the credit transfer. This information is sent to the beneficiary. **Note**: This element is required.
- **InstdAmt**: Instructed Amount. The amount of the credit transfer in the indicated currency. **Note**: This element is required.
- **DbtrAgt**: Debtor Agent block. Details on the debtor's financial institution for the transaction. See the [Debtor Agent](docId:3gf3aPgshkfomTxcSFlzN) section below for more details on the **DbtrAgt** block. **Note**: This element is required.
- **Dbtr**: The debtor sub-block. Contains details on the debtor for the transaction, including **Nm** (name) and **PstlAdr** (postal address) elements. **Note**: The **Dbtr** block and its **Nm** element are required. The **PstlAdr** element is not required.
- **DbtrAcct**: Debtor account sub-block for the transaction, containing the debtor account number in its child elements. **Note**: This element is required.
- **Id**: Identification sub-block. Contains an identification of the debtor account in child elements. **Note**: This element is required.
- **Othr**: Sub-block containing the debtor's Id tag. **Note**: This element is required.
- **Id**: The unique identifier of the debtor's account. **Note**: This element is required.
- **RmtInf**: The remittance information to send along with the transaction. **Note**: This element is required for ACH Direct Debit.
- **Ustrd**: Unstructured description of the transaction. **Note**: This element is required.

## Debtor agent (DbtrAgt)

The **DbtrAgt** block contains information on the debtor's financial institution.

```xml
<DbtrAgt>
    <FinInstnId>
        <ClrSysMmbId>
            <MmbId>123456789</MmbId>
        </ClrSysMmbId>
        <Nm>John Doe Bank</Nm>
        <PstlAdr>
            <Ctry>US</Ctry>
        </PstlAdr>
    </FinInstnId>
</DbtrAgt>

```

Here's an explanation of the different tags in the **DbtrAg**t block as shown above:

- **FinInstnId**: Financial Institution Identification sub-block.
- **ClrSysMmbId**: Clearing System Member Identification sub-block. Contains Information used to identify a member within a clearing system.
- **MmbId**: Member Identification: Identification (routing number) of the debtor's financial institution in the debtor's clearing system.
- **Nm**: Name of the debtor's financial institution.
- **PstlAdr**: Postal Address sub-block.
- **Ctry**: Country code. The ISO country code for the debtor's financial institution.

:::hint{type="info"}
All the above elements in the **DbtrAgt** block are required.
:::


[title] PAIN.001.001.03 input file
[path] Payments/XML batch payments/Prepare input XML file/

## Input file PAIN.001.001.03 preparation

This page contains a description of the input XML file for the PAIN.001.001.03 format, which is used for Book Transfers, ACH Push CCD/PPD, and Fedwires.

:::hint{type="warning"}
When entering text, the special characters &, \<, >, and " cannot be used directly, as they are reserved for XML code.
:::

The following is a high-level example of a PAIN.001.001.03 input XML file:

```xml
<?xml version="1.0" encoding="UTF-8" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <CstmrCdtTrfInitn>
        <GrpHdr>

          ...

        </GrpHdr>
        <PmtInf>
          ...
        </PmtInf>
        <PmtInf>
          ...
        </PmtInf>
    </CstmrCdtTrfInitn>
</Document>
```

The root document tag for the input file is CstmrCdtTrfInitn. It contains a Group Header and at least one Payment Information building block (corresponding to a batch). The Group Header contains metadata that relates to all the batches in the file. Each batch contains meta data for all the transactions within.

## Group header (GrpHdr)

*Your* XML Input file must include a group header using the GrpHdr building block. This building block is only present once in a file and contains a set of characteristics shared by all the individual instructions included in the message.

```xml
<GrpHdr>
    <MsgId>ABCDEFG090301</MsgId>
    <CreDtTm>2013-08-28T17:12:44</CreDtTm>
    <NbOfTxs>5</NbOfTxs>
    <CtrlSum>43236.93</CtrlSum>
    <InitgPty>
      ...
    </InitgPty>
</GrpHdr>
```

Here's an explanation of the different tags in the GrpHdr block as shown above:

- **MsgId**: An ID number for the message, which you assign before sending the file to Cross River. Best practice: Use a new for each file.\*\*
- **CreDtTm**: The date and time the payment instruction was created.
- **NbOfTxs**: The total number of transaction instruction blocks in the message. Each instruction corresponds to one transaction, and will form a separate instruction block. For more information on the instruction blocks, see the [Credit transfer transaction information](docId:6k_6gEXlRhLar0cNYQToN) section below.
- **CtrlSum**: The total amount (as a number) of all the instructions included in the file, irrespective of currencies, used as a control sum. **Note**: Unicorn supports USD only.
- **InitgPty**: Indicates the party initiating the transfer (debtor). See the Initiating Party section that follows for more details on the tags inside the **InitgPty** block.

:::hint{type="info"}
All the above elements in the **GrpHdr** block are required.
:::

## Initiating party (InitgPty)

The Initiating Party is the party initiating the payment (the debtor).

```xml
<InitgPty>
                <Nm>John Doe Corporation</Nm>
                <Id>
                    <OrgId>
                        <BICOrBEI>JOHNDOE99</BICOrBEI>
                    </OrgId>
                </Id>
   </InitgPty>
```

Here's an explanation of the different tags in the InitgPty block as shown above:

- **Nm**: Name by which the initiating party is known and which is usually used to identify that party.
- **Id**: Identification. The parent element of the OrgId element containing the identifying information about the initiating party.
- **OrgId**: Organization Identification, containing the BICOrBEI code.
- **BICOrBEI**: Business Identification Code. A unique and unambiguous identifier of the initiating party, which can be an organization or an individual person.

:::hint{type="info"}
All the above elements in the **InitgPty** block are required.
:::

## Payment information (PmtInf)

The **PmtInf** block contains payment information per batch in your file. You must include at least one **PmtInf** block in your file. In most cases the input file contains only one **PmtInf** block, with one set of payment instructions. This enables you to indicate general properties (such as execution date, debtor, payment type and debited account) once at the level of the **PmtInf** block.

You might want to use multiple **PmtInf** blocks if the file includes instructions to debit more than one account. In that case, you need a **PmtInf** block for each account that is going to be debited.

```xml
<PmtInf>
    <PmtInfId>CASH10002273</PmtInfId>
    <PmtMtd>TRF</PmtMtd>
    <BtchBookg>false</BtchBookg>
    <NbOfTxs>1</NbOfTxs>
    <CtrlSum>0.01</CtrlSum>
    <PmtTpInf>
        ...
    </PmtTpInf>
    <ReqdExctnDt>2019-11-19</ReqdExctnDt>
    <Dbtr>
        ...
    </Dbtr>
    <DbtrAcct>
        ...
    </DbtrAcct>
    <DbtrAgt>
        ...
    </DbtrAgt>
    <ChrgBr>SHAR</ChrgBr>
    <CdtTrfTxInf>
        ...
    </CdtTrfTxInf>
</PmtInf>
```

Following is an explanation of the different top-level tags and blocks found in the **PmtInf** block as shown above. These tags and blocks appear once for each **PmtInf** block, except for the **CdtTrfTxInf&#x20;**&#x62;lock, which can appear multiple times, representing multiple transactions. Each of the other tags and blocks applies to all **CdtTrfTxInf** blocks that appear in the **PmtInf** block:

- **PmtInf**: This block contains payment information, such as debtor and payment type information. You can use this block repeatedly within the same input file. **Note:** One or more instances of the PmtInf element is required.
- **PmtInfId**: The unique ID number for this batch, which is assigned by the originating party. **Note:** This element is required.
- **PmtMtd**: Payment Method. For credit transfers you should define it as "TRF". **Note:** This element is required.
- **BtchBookg**: Defines how Cross River should handle the debit. If the tag is set to "true", then all debit instructions will be handled as one consolidated debit. If the tag is set to "false", it means that you want each debit to be handled separately. **Note**: Currently the system will always behave as if the value is "false".
- **NbOfTxs**: The number of transactions within this batch. **Note:** This element is required.
- **CtrlSum**: The sum total of all instructions within this batch, irrespective of currencies, used as a control sum. **Note**: Unicorn currently supports "USD" only.**&#x20;Note:** This element is required.
- **PmtTpInf**: The Payment Type Information block, including a priority level. See the  [Payment type information](docId:6k_6gEXlRhLar0cNYQToN) section for more details on the **PmtTpInf** block. **Note**: This element is required.
- **ReqdExctnD**t: Requested Execution Date. The date on which the originator's account is to be debited. This tag currently supports current dates. Support for future dates will come in a future release. **Note**: This element is required.
- **Dbtr**: Debtor block. Contains the name and postal address of the originator. See the [Debtor](docId:6k_6gEXlRhLar0cNYQToN) sectionbelow for an example of the Dbtr block. **Note**: This element is required.
- **DbtrAcct**: Debtor Account. The account of the originator that will be debited. See the [Debtor Account](docId:6k_6gEXlRhLar0cNYQToN) section below for more details on the DbtrAcct block. **Note**: This element is required.
- **DbtrAgt**: Debtor Agent block. Details on the debtor's financial institution. See the [Debtor Agent](docId:6k_6gEXlRhLar0cNYQToN) section below for more details on the DbtrAgt block. **Note**: This element is required.
- **ChrgBr**: ChargeBearer. Specifies the bearer of any transaction charges. Possible values: ‘CRED’ - All transaction charges are to be borne by the creditor. ‘DEBT’ - All transaction charges are to be borne by the debtor. ‘SHAR’ - Both parties bear their own charges. **Note**: This element is required. You should set the value to "SHAR".
- **CdtTrfTxInf**: Credit Transfer Transaction Information. Includes elements related to the credit side of the transaction, such as creditor and remittance information. This block can appear multiple times within the same PmtInf block. See the [Credit Transfer Transaction Information](docId:6k_6gEXlRhLar0cNYQToN) section below for more details on the **CdtTrfTxInf** block. **Note**: One or more of the **CdtTrfTxInf** element is required.

## Payment type information (PmtTpInf)

The PmtTpInf block contains information on the payment type. The following example is generic, while each example after it is specific to a rail type.

```xml
<PmtTpInf>
    <InstrPrty>NORM</InstrPrty>
    <SvcLvl>
        <Cd>NURG</Cd>
    </SvcLvl>
</PmtTpInf>
```

For ACH Push CCD, the following **PmtTpInf** block is used:

```xml
<PmtTpInf>
  <InstrPrty>NORM</InstrPrty>
  <SvcLvl>
    <Cd>NURG</Cd>
  </SvcLvl>
  <LclInstrm>
    <Prtry>CCD</Prtry>
  </LclInstrm>
</PmtTpInf>
```

For ACH Push PPD, the following **PmtTpInf** block is used:

```xml
<PmtTpInf>
  <InstrPrty>NORM</InstrPrty>
  <SvcLvl>
    <Cd>NURG</Cd>
  </SvcLvl>
  <LclInstrm>
    <Prtry>PPD</Prtry>
  </LclInstrm>
</PmtTpInf>
```

For Fedwires and Book Transfers, the following **PmtTpInf** block is used:

```xml
<PmtTpInf>
   <InstrPrty>NORM</InstrPrty>
   <SvcLvl>
     <Cd>URGP</Cd>
   </SvcLvl>
 </PmtTpInf>
```

Here's an explanation of the different tags in the PmtTpInf block as shown in the examples above.

- **InstrPrty**: Instruction Priority. Priority of the instruction (transaction request). Value reflects whether the payment processor is providing priority processing or normal processing. Currently "NORM" is the only available value. Note: This element is required.
- **SvcLvl**: Service Level. Contains the payment urgency level (**Cd**) in a child element. Note: This element is required.
- **Cd**: Code. The payment urgency Level. This element is required. **Note**: For Fedwires and Book Transfers, the Cd value must be "URGP". For ACH Push CCD and PPD, the Cd value must be "NURG".
- **LclInstrm**: Local Instrument. Used to specify a local instrument, local clearing option and/or to further qualify the service or service level. This element is required for ACH Push CCD and PPD.
- **Prtry**: Proprietary. This element is required for ACH Push CCD and PPD. The **Prtry** value must be the ACH Push type ("CCD" or "PPD").

## Debtor (Dbtr)

The **Dbtr** block contains information on the name and postal address of the originator (debtor).

```xml
<Dbtr>
    <Nm>John Doe Corporation</Nm>
    <PstlAdr>
        <StrtNm>999 Any Street</StrtNm>
        <PstCd>99999</PstCd>
        <TwnNm>Anytown</TwnNm>
        <CtrySubDvsn>CA</CtrySubDvsn>
        <Ctry>US</Ctry>
    </PstlAdr>
</Dbtr>
```

- **Nm**: Debtor name.
- **PstlAdr**: A block containing the postal address tags of the debtor.

All the above fields in the **Dbtr** block are required.

## Debtor account (DbtrAcct)

The **DbtrAccount** block contains information on the account of the originator that will be debited.

```xml
<DbtrAcct>
    <Id>
        <Othr>
            <Id>2000526789</Id>
        </Othr>
    </Id>
    <Ccy>USD</Ccy>
</DbtrAcct>
```

Here's an explanation of the different tags in the **DbtrAccount** block as shown above:

- **Id**: The sub-block containing the debtor's account identification information.
- **Othr**: The sub-block containing the debtor's Id tag.
- **Id**: The unique identifier of the debtor's account.
- **Ccy**: Currency. The ISO currency code of the debtor's account. **Note**: This element is required.

All the above fields in the **DbtrAcct** block are required.

## Debtor agent (DbtrAgt)

The **DbtrAgt** block contains information on the originator's financial institution.

```xml
<DbtrAgt>
    <FinInstnId>
        <ClrSysMmbId>
            <ClrSysId>
                <Cd>USABA</Cd>
            </ClrSysId>
            <MmbId>123456789</MmbId>
        </ClrSysMmbId>
        <PstlAdr>
            <Ctry>US</Ctry>
        </PstlAdr>
    </FinInstnId>
</DbtrAgt>
```

Here's an explanation of the different tags in the **DbtrAgt** block as shown above:

- **FinInstnId**: Financial Institution Identification sub-block.
- **ClrSysMmbId**: Clearing System Member Identification sub-block. Contains information used to identify a member within a clearing system.
- **ClrSysId**: Clearing System Identification. Specification of the pre-agreed offering between clearing agents or the channel through which the payment instruction is processed.
- **Cd**: Code: Identifier of the debtor's clearing system, in a coded form as published in an external list.
- **MmbId**: Member Identification: Identification (routing number) of the debtor's financial institution in the debtor's clearing system. Note: For Book Transfers, the value of this element must always be Cross River's routing number (021214891).
- **PstlAdr**: Postal Address sub-block.
- **Ctry**: Country code. The country code for the debtor's financial institution.

:::hint{type="info"}
All the above elements in the **DbtrAgt** block are required.
:::

## Credit transfer transaction information (CdtTrfTxInf)

The **CdtTrfTxInf** block includes elements related to the credit side of the transaction, such as creditor and remittance information for the transaction. You can use this block repeatedly within the same **PmtInf&#x20;**&#x62;lock. The number of occurrences of the **CdtTrfTxInf** block within a file is indicated by the **NbOfTxs** field in the Group Header (**GrpHdr)**.

```xml
<CdtTrfTxInf>
    <PmtId>
        <InstrId>100ACH000019</InstrId>
        <EndToEndId>0000000000000003</EndToEndId>
    </PmtId>
    <Amt>
        <InstdAmt Ccy="USD">0.01</InstdAmt>
    </Amt>
    <CdtrAgt>
        ...
    </CdtrAgt>
    <Cdtr>
        <Nm>John Doe Funding LLC</Nm>
        <PstlAdr>
            <StrtNm>999 Any Avenue</StrtNm>
            <PstCd>10000</PstCd>
            <TwnNm>New York</TwnNm>
            <CtrySubDvsn>NY</CtrySubDvsn>
            <Ctry>US</Ctry>
        </PstlAdr>
    </Cdtr>
    <CdtrAcct>
        <Id>
            <Othr>
                <Id>0123456789</Id>
            </Othr>
        </Id>
        <Tp>
            <Cd>CACC</Cd>
        </Tp>
        <Ccy>USD</Ccy>
    </CdtrAcct>
  <RmtInf>
        <Ustrd>Testing</Ustrd>
  </RmtInf>
</CdtTrfTxInf>
```

Here's an explanation of the different tags in the **CdtTrfTxInf** block as shown above:

- **PmtId**: Payment Identification sub-block. Provides identifying information regarding the transaction in child elements. **Note**: This element is required.
- **InstrId**: Instruction Identification. Reference of the remitter, referring to a set of payments of which this payment is a part of. This information is not sent to the beneficiary.
- **EndToEndId**: End to End Identification: End-to-end reference number of the credit transfer. This information is sent to the beneficiary. **Note**: This element is required.
- **Amt**: Amount sub-block. Contains the transaction amount in a child element. **Note**: This element is required.
- **InstdAmt**: Instructed Amount. The amount of the credit transfer in the indicated currency. **Note**: This element is required.
- **CdtrAgt**: Creditor Agent sub-block. Contains details on the creditor's financial institution for the transaction. See the [Creditor Agent](docId:6k_6gEXlRhLar0cNYQToN) section below for more details on the **CdtrAgt** block. **Note**: This element is required.
- **Cdtr**: The creditor sub-block. Contains details on the creditor for the transaction, including **Nm** (name) and **PstlAdr** (postal address) elements. **Note**: The Cdtr block and its **Nm** element are required. The **PstlAdr** element is not required.
- **CdtrAcct**: Creditor account sub-block for the transaction, containing the creditor account number and currency in its child elements. **Note**: This element is required.
- **Id:** Identification sub-block. Contains an identification of the creditor's account in child elements. **Note**: This element is required.
- **Othr**: Sub-block containing the creditor's Id tag. **Note**: This element is required.
- **Id**: The unique identifier of the creditor's account. **Note**: This element is required.
- **Tp**: Type. Contains the code in its child elements.
- **Cd**: Code. The code of the account type.
- **Ccy**: ISO currency code of the beneficiary account.
- **RmtInf**: The remittance information to send along with the transaction. **Note**: This element is required.
- **Ustrd**: Unstructured description of the transaction. Maximum limit of 50 characters including spaces.**Note**: This element is required.

## Creditor agent (CdtrAgt)

The **CdtrAgt** block contains information on the creditor's financial institution for the transaction.

```xml
<CdtrAgt>
    <FinInstnId>
        <ClrSysMmbId>
            <ClrSysId>
                <Cd>USABA</Cd>
            </ClrSysId>
            <MmbId>123456789</MmbId>
        </ClrSysMmbId>
        <Nm>Cross River Bank NJ</Nm>
        <PstlAdr>
            <Ctry>US</Ctry>
        </PstlAdr>
    </FinInstnId>
</CdtrAgt>
```

Here's an explanation of the different tags in the **CdtrAgt** block as shown above:

- **FinInstnId**: Financial Institution Identification sub-block.
- **ClrSysMmbId**: Clearing System Member Identification sub-block. Contains information used to identify a member within a clearing system.
- **ClrSysId**: Clearing System Identification. Specification of the pre-agreed offering between clearing agents or the channel through which the payment instruction is processed.
- **Cd**: Code: Identification of the creditor's clearing system, in a coded form as published in an external list.
- **Nm**: Name of the creditor's financial institution.
- **MmbId**: Member Identification: Identification (routing number) of the creditor's financial institution in the creditor's clearing system. **Note**: For Book Transfers, the value of this element must always be Cross River's routing number (021214891).
- **PstlAdr**: Postal Address sub-block.
- **Ctry**: Country code. The ISO country code for the creditor's financial institution.

:::hint{type="info"}
All the above elements in the **CdtrAgt** block are required.
:::

:::hint{type="info"}
For a Fedwire transaction request, the **CdtrAgt** must not be Cross River.
:::

## All payment types example

Wrapping it all up, an example with all payment types

```xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <CstmrCdtTrfInitn>
        <GrpHdr>
            <MsgId>DOMT11234562AllRails1</MsgId>
            <CreDtTm>2020-06-29T10:24:09</CreDtTm>
            <NbOfTxs>3</NbOfTxs>
            <CtrlSum>3.03</CtrlSum>
            <InitgPty>
                <Nm>Shach Corp</Nm>
                <Id>
                    <OrgId>
                        <BICOrBEI>THESHACH99</BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <PmtInf>
            <PmtInfId>DOMT12345678ACH1</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <BtchBookg>false</BtchBookg>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.01</CtrlSum>
            <PmtTpInf>
                <InstrPrty>NORM</InstrPrty>
                <SvcLvl>
                    <Cd>NURG</Cd>
                </SvcLvl>
                <LclInstrm>
                    <Prtry>CCD</Prtry>
                </LclInstrm>
            </PmtTpInf>
            <ReqdExctnDt>2020-06-29</ReqdExctnDt>
            <Dbtr>
                <Nm>John Doe Corporation</Nm>
                <PstlAdr>
                    <StrtNm>999 Battery Street, 13th Floor</StrtNm>
                    <PstCd>99999</PstCd>
                    <TwnNm>Anytown</TwnNm>
                    <CtrySubDvsn>CA</CtrySubDvsn>
                    <Ctry>US</Ctry>
                </PstlAdr>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>2756493439</Id>
                    </Othr>
                </Id>
                <Ccy>USD</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <ClrSysMmbId>
                        <ClrSysId>
                            <Cd>USABA</Cd>
                        </ClrSysId>
                        <MmbId>123456789</MmbId>
                    </ClrSysMmbId>
                    <PstlAdr>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SHAR</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>234ACHC123455ACH1</InstrId>
                    <EndToEndId>0000000000000011ACH1</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">0.01</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Tp>
                        <Cd>CACC</Cd>
                    </Tp>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>
        <PmtInf>
            <PmtInfId>DOMT10000000wire1</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <BtchBookg>false</BtchBookg>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>3.00</CtrlSum>
            <PmtTpInf>
                <InstrPrty>NORM</InstrPrty>
                <SvcLvl>
                    <Cd>URGP</Cd>
                </SvcLvl>
            </PmtTpInf>
            <ReqdExctnDt>2020-07-15</ReqdExctnDt>
            <Dbtr>
                <Nm>John Doe Corporation</Nm>
                <PstlAdr>
                    <StrtNm>999 Any Street, 13th Floor</StrtNm>
                    <PstCd>99999</PstCd>
                    <TwnNm>Anytown</TwnNm>
                    <CtrySubDvsn>CA</CtrySubDvsn>
                    <Ctry>US</Ctry>
                </PstlAdr>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>2756493439</Id>
                    </Othr>
                </Id>
                <Ccy>USD</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <ClrSysMmbId>
                        <ClrSysId>
                            <Cd>USABA</Cd>
                        </ClrSysId>
                        <MmbId>123456789</MmbId>
                    </ClrSysMmbId>
                    <PstlAdr>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SHAR</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100FED000000xxxwire1</InstrId>
                    <EndToEndId>0000000000000065xxxwire1</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">3.00</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>AllRails Wire 1</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>
        <PmtInf>
            <PmtInfId>DOMT12345678RTP1</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <BtchBookg>false</BtchBookg>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>0.02</CtrlSum>
            <PmtTpInf>
                <InstrPrty>NORM</InstrPrty>
                <SvcLvl>
                    <Cd>URNS</Cd>
                </SvcLvl>
                <LclInstrm>
                    <Prtry>RTP</Prtry>
                </LclInstrm>
            </PmtTpInf>
            <ReqdExctnDt>2020-06-29</ReqdExctnDt>
            <Dbtr>
                <Nm>John Doe Corporation</Nm>
                <PstlAdr>
                    <StrtNm>999 Battery Street, 13th Floor</StrtNm>
                    <PstCd>99999</PstCd>
                    <TwnNm>Anytown</TwnNm>
                    <CtrySubDvsn>CA</CtrySubDvsn>
                    <Ctry>US</Ctry>
                </PstlAdr>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>2756493439</Id>
                    </Othr>
                </Id>
                <Ccy>USD</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <ClrSysMmbId>
                        <ClrSysId>
                            <Cd>USABA</Cd>
                        </ClrSysId>
                        <MmbId>123456789</MmbId>
                    </ClrSysMmbId>
                    <PstlAdr>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SHAR</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>234ACHC123455RTP1</InstrId>
                    <EndToEndId>0000000000000011RTP1</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">0.02</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Tp>
                        <Cd>CACC</Cd>
                    </Tp>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>AllRails RTP 1</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>
    </CstmrCdtTrfInitn>
</Document>
```


[title] Wires FAQ
[path] Payments/Wires/

## Wires – Frequently Asked Questions

This section answers common questions about sending and receiving wires through Cross River, routing details, cutoff times, internal transfers, error handling, and compliance checks.&#x20;

**What are wire transfers?**
[Wire](docId\:hFNmQa22W2BNqAJijpAVT) transfers let you send or receive domestic and international payments via Fedwire®. Funds usually post the same day and are trackable with an IMAD number.

**How are international wires handled?**
Cross River uses a [domestic](docId\:sFG6D6itNK09yfROB6oCN) intermediary bank for USD international wires. Contact the beneficiary bank for proper instructions.

**What wire services are supported?**
Outbound wires, inbound wires, drawdown requests/responses, and full Fedwire® support.

**How do outbound and inbound wires work?**

- [Outbound](docId\:r5Em5zsqCEnn70GiAiwsT)**:** Funds post to your account, pass OFAC checks, enter a Fed batch, and trigger a webhook once completed.&#x20;
- [Inbound](docId\:r5Em5zsqCEnn70GiAiwsT)**:** Funds post to your account; successful postings trigger a webhook; failed postings return to the originator.&#x20;

**What types of wire messages exist?**
Transfers (domestic/international), service messages (informational), and reversals.

**Are wires verified or authorized?**
Yes. Certain amounts or origination methods require approval via COS Explorer with 1–2 approvers; not available via API.

**When are wires processed and funds available?**
[Processing](docId\:JoJixVBqs49cuWK3UVJ5m) occurs Mon–Fri, 9:00 PM (previous day) – 7:00 PM ET. Funds post upon completion; holds after 3:00 PM ET may release next business day.

**Why might a wire be on hold?**
[Holds](docId\:eqf1PFq31_W9BcmfO73z3) can occur due to OFAC matches, beneficiary mismatches, duplicates, international indicators, insufficient funds, callbacks, or missing Travel Rule info.

**How can I track a wire?**
Use the Fedwire® IMAD number and webhook events for real-time updates.

**Why was my wire held for missing originator information?**

The Bank Secrecy Act Travel Rule requires information identifying the sender to travel with the payment on transfers **of $3,000 or more**. Best practice is to always supply the originator's name, a complete address and the account number, even though the schema lists them as optional. See [Wire holds - Travel Rule](docId\:eqf1PFq31_W9BcmfO73z3).



:::hint{type="info"}
For more information, please visit our [wires](docId\:hFNmQa22W2BNqAJijpAVT) pages.
:::


[title] Requirements per rail
[path] Payments/XML batch payments/

## Payment methods

This section describes the XML file requirements for the following payment methods (rails):

- [Book transfers](docId\:jb3Gaaluj-4sHWjTWOiZm) &#x20;
- [ACH push CCD](docId\:jb3Gaaluj-4sHWjTWOiZm)&#x20;
- [ACH push PPD](docId\:jb3Gaaluj-4sHWjTWOiZm)&#x20;
- [Fedwire](docId\:jb3Gaaluj-4sHWjTWOiZm)&#x20;
- [ACH direct debit](docId\:jb3Gaaluj-4sHWjTWOiZm)&#x20;
- [RTP/FedNow](docId\:jb3Gaaluj-4sHWjTWOiZm)&#x20;

For more information on the code structure for each payment method, see the corresponding topic in the XML input file examples section.&#x20;

See [Prepare input XML file](docId\:MeXfr73i11kMnKc7pVFL1) for more details on the blocks and tags used in the XML examples below.

## Book transfers

For book transfers (among 2 accounts within Cross River):

Both the **DbtrAgt** block and the **CdtrAgt** block must contain Cross River's routing number (021214891) in the **MmbId** element.

## ACH push CCD

For ACH Push CCD transfers, the **PmtTpInf** block must be according to the following example:

```xml
<PmtTpInf>
        <InstrPrty>NORM</InstrPrty>
        <SvcLvl>
               <Cd>NURG</Cd>
        </SvcLvl>
        <LclInstrm>
               <Prtry>CCD</Prtry>
        </LclInstrm>
</PmtTpInf>
```

All the above fields are required. We validate for these fields in order to know what type of transaction you are requesting. If it can’t find any of these, it will cause an error.

## ACH push PPD

For ACH Push PPD transfers, the **PmtTpInf** block must be according to the following example:

```xml
<PmtTpInf>
        <InstrPrty>NORM</InstrPrty>
        <SvcLvl>
               <Cd>NURG</Cd>
        </SvcLvl>
        <LclInstrm>
               <Prtry>PPD</Prtry>
        </LclInstrm>
</PmtTpInf>
```

All the above fields are required. We validate for these fields in order to know what type of transaction you are requesting. If it can’t find any of these, it will cause an error.

## Fedwire

For Fedwire payments:

- The **CdtrAgt**'&#x73;**&#x20;MmbId** value must be different than CR's routing number (021214891).

```xml
<CdtrAgt>
          <FinInstnId>
              <ClrSysMmbId>
                  <ClrSysId>
                      <Cd>USABA</Cd>
                  </ClrSysId>
                  <MmbId>123456789</MmbId>
              </ClrSysMmbId>
              <Nm>THE BANK OF NEW YORK MELLON</Nm>
              <PstlAdr>
                 <Ctry>US</Ctry>
              </PstlAdr>
          </FinInstnId>
</CdtrAgt>
```

- The **PmtTpInf**'&#x73;**&#x20;Cd&#x20;**&#x76;alue must be "URGP".

```xml
<PmtTpInf>
         <InstrPrty>NORM</InstrPrty>
         <SvcLvl>
             <Cd>URGP</Cd>
         </SvcLvl>
</PmtTpInf>
```

## ACH direct debits (ACH Pull)

For ACH direct debits:

- The file type must be: XML pain.008.001.02 ISO 20022.

```xml
<?xml version="1.0" encoding="UTF-8" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
```

- The Payment Method (**PmtMtd**) value must be “DD”.

```xml
<PmtInf>
    ...
    <PmtMtd>DD</PmtMtd>
    ...
<PmtInf>
```

- The Creditor Agent (**CdtrAgt**)'s Member ID (**MmbId**) value must always be CR's routing number (021214891).

```xml
<CdtrAgt>
        <FinInstnId>
            <ClrSysMmbId>
                <MmbId>021214891</MmbId>
            </ClrSysMmbId> 
            ...
        </FinInstnId>
</CdtrAgt>
```

- The Payment Type Information must include the Service Level Code of “NURG” and the Local Instrument Proprietary value, which is the ACH Pull type (“CCD” or “PPD”).

```xml
<PmtTpInf> 
    <SvcLvl>
        <Cd>NURG</Cd>
  </SvcLvl> 
  <LclInstrm>
    <Prtry>CCD</Prtry>
  </LclInstrm> 
</PmtTpInf>
```

For example:

```xml
<PmtInf>
    ...
    <PmtMtd>DD</PmtMtd>
    ...
    <PmtTpInf>
    <SvcLvl>
        <Cd>NURG</Cd>
    </SvcLvl>
    <LclInstrm>
        <Prtry>CCD</Prtry>
    </LclInstrm>
    </PmtTpInf>
    ...
    <CdtrAgt>
    ...
    <MmbId>021214891</MmbId>
    ...
    </CdtrAgt>
    ...
</PmtInf>
```

All the fields shown above for Direct Debit are required so that we can identify the payment type and details.

## RTP send (push) funds

This is how you should structure your XML for sending funds using RTP.

```xml
<PmtTpInf>

<InstrPrty>NORM</InstrPrty> 

<SvcLvl> 

<Cd>URNS</Cd> 

</SvcLvl>

<LclInstrm> 

<Prtry>rtp</Prtry> 

</LclInstrm>

</PmtTpInf>
```


[title] Loan process
[path] Lending/

## Loan origination process&#x20;

### Loan origination process overview

Cross River's proprietary Lending platform consists of several interconnected modules to faciliate efficinet and compliant loan origination:&#x20;

- **Oversight:&#x20;**&#x46;or housing policies and rules.
- **Preapproval:&#x20;**&#x46;or real time application data validation via pav2 (Cross River’s patent pending application validation software).
- **Origination:** For issuing loans via Arix (Cross River’s proprietary origination software).
- **Manual Review:** For resolving exceptions detected by, Cross River rules engine, MPLLifeCycle.
- **Funding:** For disbursing funds to borrowers via Arix.
- **Selling:** For allocating loans to varying financing sources.&#x20;
- **Contracts:** For viweing system configurations such as financing sources and fees.&#x20;
- **Hooks:&#x20;**&#x20;For listening to webhook events and keeping track of the loan through its life cycle.

For a typical loan, the entire origination process takes around 10 seconds from origination to funding plus another 5 minutes for the initial seasoning to kick off.

### 1. A Market Place Lending partner (“MPL”) submits a loan application for preapproval

The application is submitted regardless of its approval status. If the status changes, the MPL can resubmit to provide its latest decision. This process aligns with Fair Lending laws, ensuring all applications are reviewed uniformly.

The MPL submits a loan application to the [Preapproval v2](docId\:VwjhFeFwgjKJ9lggqLVW9) API to provide the bank with its final decision for each application.

When "Create Arix Loan" integration in [Preapproval v2](docId\:VwjhFeFwgjKJ9lggqLVW9) is enabled, the system will pass the application data into Arix when approved and ready to fund, and you may skip step 2.&#x20;

The Arix unique GUID will be returned in the response and needs to be saved, as in step 2.

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/sPBp_vOzJfqj-Yrnw00-5_image.png "Response of Pav2, with Arix integration enabled")

### 2. MPL submits loan payload (a loan tape) to Arix

Upon MPL approval of the loan application and decision to originate and fund, the MPL sends the complete loan payload to Arix using the  [POST /Loan API call](docId\:v8cArTCqMmQrYCIYHUf7f)  including:

- **Borrower Type**: Consumer and business loans
- **Loan Type**: Secured and unsecured loans
- **Loan Structure**: Term loans or revolving lines of credit

This step initiates the loan creation process within Arix. Arix assigns a unique GUID to the loan and sets its initial status to `Received`.

### 3. MPL uploads required loan documents

The MPL uploads all necessary loan documents to Arix using the[POST /Loan/\{id}/Attachments](docId\:uRkNIHuM7qYLQdCEE7tU-) API call.

Arix automatically confirms all required documents (Loan agreement, Credit Report, etc.) were submitted. Once all required documents are received, the loan status updates to `Docs Complete`.

### 4.  MPLLifeCycle performs compliance checks

MPLLifeCycle automatically conducts compliance checks based on predefined rules housed in **Oversight**.

:::hint{type="info"}
This step is where Cross River ensures the loan details are complete and accurate
:::

If the loan passes all compliance rules, the status updates to `Passed Compliance`. If any rule fails, the status changes to `Compliance Failed`, and detailed reasons are provided via a **Hooks** event. The MPL must address these issues before proceeding. The MPL uses the **Manual Review** UI or API module to communicate with Cross River teams, upload additional documents or correct the loan details.

### 5.  MPLLifeCycle approves the loan

After successful compliance checks, the loan status updates to `Approved` indicating readiness for funding. 

### 6. Arix initiates loan funding

The loan status changes to `InFunding` during this process. Arix supports various funding rails, including ACH, Same-Day ACH, RTP®, FedNow®, RPPS, Check, Internal Transfer, Wire and Push to Card. The platform allows setting fallback options if a chosen rail fails. Once funds are successfully sent and received, the loan status updates to `Funded`. Arix manages the full lifecycle of Funding, including rejects, returns, pulling funds back and cancellations.

[Learn more](docId\:BAB0iNlUG2tAGYrLlkjnM)&#x20;

### 7. Selling kicks off loan seasoning period

After funding, the loan enters an initial seasoning period prior to being allocated to the appropriate financing channel.

[Learn more](docId\:DoBshm4E1JoFa8FUVqAPh)&#x20;

### 8. Loan sale or retention decision

Post initial-seasoning (typically 3 business days), your loans are allocated to temporary or permanent financing arrangements (provided by external parties or Cross River) as established with you.

[Learn more](docId\:DoBshm4E1JoFa8FUVqAPh)&#x20;

### 9. Servicing data submission and reconciliation

MPL submits daily servicing data until the loan is paid off/closed. This is used to monitor loans originated by Cross River.

[Learn more](docId\:sJ6yahWlYzkEDLo6oiJf3)&#x20;


[title] New in lending
[path] Lending/

## Borrower Paid Interest – Automated Interest Netting at Purchase

**Release Date**: 2026-07-13

The Selling Platform now automatically applies borrower-paid interest to reduce the MPL's purchase cost at the time of purchase.

### What It Does:

- **Captures borrower payments**: Ingests interest payments made by borrowers during the seasoning period from servicing data
- **Automatic netting at purchase**: Two transfers execute at purchase:
  - InterestCollectionOnPurchase charges the MPL for full accrued interest
  - BorrowerInterestPaid credits the MPL back for what borrowers already paid
- **Net purchase calculation**: Total Purchase = Principal + (Accrued Interest - Borrower Paid Interest)
- **Config-driven**: Enabled per MPL and per loan type (HFS/LTHFS) via contract configuration

### Why It Matters:

Eliminates manual post-purchase adjustments that were error-prone and time-consuming. Previously, MPLs were charged the full accrued interest without accounting for borrower payments, requiring manual reconciliation. This automation ensures accurate financial reporting at purchase time and scales with growing loan volume.

### No Manual Steps Required:

BPI collection is fully integrated into the standard purchase workflow—no additional action needed from partners. The feature is config-gated, so only enabled MPLs participate.



## Backup Purchase Account – Automatic NSF Fallback

**Release Date**: 2026-07-30

The Selling Platform now automatically retries loan purchases against a backup account when the primary purchase account has insufficient funds.

### What It Does:

- **Automatic retry on NSF**: When a purchase batch detects insufficient funds (NSF) on the primary debit account, the system automatically switches to the secondary purchase account if configured
- **Seamless failover**: All transfers for affected loans are automatically rerouted to the backup account without manual intervention
- **Pre-purchase balance check**: The UI verifies both primary and secondary account balances before enabling the purchase button, ensuring purchases can proceed even when primary accounts are temporarily low
- **Config-driven**: Enabled per investor via the investor\_configuration table&#x20;

### Why It Matters:

Eliminates purchase batch failures due to temporary insufficient funds on primary accounts. Previously, an entire batch would fail if any loan's primary account had NSF, requiring manual intervention to either fund the account or reconfigure the batch. With automatic fallback, purchases complete successfully using the secondary account when available.

### No Manual Steps Required:

NSF fallback is fully automatic for configured investors. When secondary accounts are set up and fallback is enabled, the system handles account switching transparently during the purchase workflow.

## OID (Original Issue Discount) – Automated Fee Disposition

**Release Date**: 2026-04-20

The Selling Platform now automatically handles origination fee disposition at purchase time, moving fees from in-process accounts to partner income accounts.

### What It Does:

- **Internal accounting entry**: Transfers origination fees from "in-process" GL accounts to "partner fee income" accounts at purchase
- **No impact on MPL**: This is an internal CRB accounting operation—does not affect the MPL's purchase account debit
- **Config-driven**: Enabled per contract via oidEnabled flag
- **Financial Processing**: System automatically debits and credits the designated OID accounts through COS

### Why It Matters:

Ensures proper accounting treatment of origination fees without manual journal entries. Fees are automatically moved from temporary holding accounts to their final income classification at the moment of purchase.

### No Manual Steps Required:

OID disposition is fully integrated into the purchase transfer workflow—no additional configuration or action needed from partners once enabled.



## Selling update - Florida Stamp Tax Functionality&#x20;

Release date: 2026-03-15

### Overview

Selling automatically collects Florida Documentary Stamp Tax for loans originated in Florida.

### What It Does

- **Tax Collection**: Florida Stamp Tax is collected based on the amount sent in Field 5 by the issuing MPL
- **Collection Timing**: The tax is collected as a fee when the loan is funded.
- **Financial Processing**: The system automatically debits and credits the designated accounts

### DMV Fee – Automated State Fee Collection

**Release Date:** 2026-03-30

The Selling Platform now automatically calculates and collects DMV (Department of Motor Vehicles) fees for vehicle-related loans at the time of funding.

**What It Does:**

- Identifies auto loans requiring DMV fees based on loan product type and state regulations.
- Collects the fee automatically when the loan is funded.
- Debits and credits the appropriate accounts through COS to record the transaction.

**Why It Matters:**

This automation ensures compliance with state-mandated vehicle registration and titling charges without manual fee lookups or calculations, reducing processing time and improving accuracy.

**No Manual Steps Required:**

DMV fee collection is fully integrated into the standard loan funding workflow—no additional action needed from partners.MV Fee- The Selling Platform can automatically collect DMV (Department of Motor Vehicles) fees for vehicle-related loans, ensuring proper processing of state-mandated vehicle registration and titling charges. The fee is collected when the loan is funded

- **Financial Processing**: The system automatically debits and credits the appropriate accounts through the COS (Central Operating System) to record the DMV fee transaction

## Selling update-Purchase Account selection for batches

Release date: 2026-04-15

The Selling Platform allows users to **override the default purchase account** when creating a batch of loans for purchase. This provides flexibility to direct purchase funds from a specific account rather than using each loan's default configured account.

### What It Does

- **Account Override**: Users can specify an alternative purchase account when initiating a batch purchase
- **Batch-Level Override**: The selected account applies to **all loans in the batch**, overriding individual loan-level purchase account configurations
- **Validation**: The system validates that the selected account is valid and available before allowing the purchase to proceed

## Selling update- Fee Sweep

Release date:  2026-04-15

**Overview**

Fee Sweep is an automated daily sweep capability in Selling  that transfers available balances from your Cross River Bank account to your designated external bank account via Same Day ACH.

**Setup & Configuration**

- **Enable Auto-Sweep:** Auto-Sweep can be activated within your contract settings alongside existing Auto-Purchase options in Selling

**Destination Account Details (Client-Managed):** You control the entry and editing of your sweep destination account information, including:

:::Paragraph{listStyleType="disc" indent="2"}
Routing number
:::

:::Paragraph{listStyleType="disc" indent="2"}
Account number
:::

:::Paragraph{listStyleType="disc" indent="2"}
Account name
:::

:::Paragraph{listStyleType="disc" indent="2"}
Account type (Checking or Savings)
:::

**Real-Time Validation:** Upon entry, your routing number is validated immediately. If invalid, you'll receive an error message to correct before saving.

**Source Account (CRB-Configured):** Cross River Bank will configure the designated source account from which funds will be swept.

**How It Works**

Once enabled, Fee Sweep operates automatically each business day:

1. At 6:00 AM Eastern, the system retrieves your available balance.
2. A Same Day ACH transfer is initiated to your designated external account.
3. The ACH description will appear as: **"CRB SWEEP MMM-DD"** (e.g., CRB SWEEP MAY-20).

##

## Selling update - auto purchase and SOFR

**Release Date**: 2025-07-03

Auto-purchase: MPLs can choose to have the HFS purchase process run automatically without having to log in to Selling UI or call the API. This can be configured to run at a time between 10 AM and 6 PM Eastern.&#x20;

SOFR API: For partners that use Cross River Warehousing facilities, Selling provides a daily SOFR rate from the NY Federal Reserve. There are currently two available options: The daily SOFR rate as well as a daily 30-day average called SOFRAI.&#x20;

&#x20;Graham Agee

Sr. Product Manager, Lending

***

## Webhook update – ACH success message enhancement

**Release Date**: 2025-05-15

We’ve enhanced the [RailUpdated](docId\:jXGfRbtNHOshrZJYHYKTo) webhook for ACH/ ACHSD rails to include the ACH trace number directly within the content.Message field for successful funding events.

**What Changed:**

- Before: `"Message": "LOAN"`
- After: `"Message": "Description: LOAN Trace#: 021214890645262"`

**Why It Matters**:

This addition provides better traceability and aligns webhook data with NACHA record details, making it easier for partners to reconcile and audit ACH disbursements.

**No Changes to JSON Structure:**

The overall structure of the webhook payload remains unchanged, ensuring backward compatibility.

Ari Pollack

Sr. Product Manager, Lending

***

## Improving B2B integration: Cross River’s approach to partner data exchange

### Introduction

At Cross River, we are focused on making financial technology more efficient for our partners. We understand that B2B data exchange can be complicated, especially in regulated industries like lending and payments. That’s why we are working on a **new approach to partner integration**—one that improves **data validation, schema flexibility, and user experience** to make collaboration smoother.

### The challenge: Static APIs and data complexity

Most API integrations rely on **fixed JSON schemas**, forcing partners to adapt to rigid data structures. This can lead to inefficiencies, requiring partners to send redundant data, deal with validation errors, or go through multiple iterations before getting the integration right. Regulatory changes like **1071 compliance** add even more complexity, making flexibility important.

### Our solution: A more flexible schema management platform

To address these challenges, we are developing a **new B2B integration platform** that allows partners to define, customize, and validate JSON schemas **more dynamically**. We are starting with our **Lending and Credit Card partners**, who face the greatest challenges in adapting to evolving data and compliance requirements. The key improvements include:

- **Customizable Schema Structures** – Partners can use a **custom schema** that still meets our regulatory and business requirements, avoiding unnecessary workarounds.
- **Real-time Validation & Error Handling** – With **JSON Schema-based validation**, partners receive immediate feedback on data quality before submission, reducing delays.
- **Simple UI for Schema Design** – We are building a visual schema editor that makes it easier for partners to adjust data structures with no need for deep technical expertise.

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/qkSQ7CrdBCLGjcEATEysS_image.png)

### How lending and credit card partners can get involved

We want to build this with input from our partners. As we refine our integration platform, we are inviting fintech companies and marketplace lenders to help shape the design. By participating, partners will gain:

- **Early access** to our schema editor and integration tools
- **A say** in how validation and structure should work for their specific use cases
- **Faster onboarding** for new product offerings and regulatory changes

### Looking ahead

We aim to improve how financial data is exchanged between businesses. With **scalable and adaptable integration tools**, we are making it easier for partners to work with us.

If you’re a Lending or Credit Card partner interested in collaborating, we’d love to hear from you. Reach out to our team and be part of the **next phase of B2B integrations**.

Amichai Lichtenstein

Product, Lending

***

## Introducing COS lending selling

Cross River Bank is excited to announce an enhancement to our Lending process, designed specifically for our valued Marketplace Lending (MPL) partners. The new solution streamlines the process of purchasing loans, delivering efficiency, transparency, and control. After the designated seasoning period, MPLs repurchase originated loans from issuing banks. With our enhanced Lending Selling solution, MPLs can access a user-friendly interface or integrate with our Lending Selling API . Log on in the morning and see loans scheduled to be purchase that day.

Screenshot of log-in showing loans ready for purchase.

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/XtTz5vjuTZemfrlHnThFQ_image.png)

### Key benefits of the lending selling solution

- **Simplified Loan Management**: MPLs can now log in to our intuitive Lending Selling UI to view and manage loans ready for purchase.
- **Seamless Integration with APIs and Webhooks**: For firms seeking a higher degree of automation, our Lending Selling API enables direct access to the loan buyback process. Additionally, **webhooks** are available to provide notifications and updates, ensuring MPLs stay informed.
- **Pre-Purchase Reports and Post-Purchase Receipts**: Easily access **pre-purchase invoices** and receive **post-purchase receipts** to enable reconciliation and record-keeping.
- **Increased Efficiency**: The new platform minimizes the time and effort required to identify, assess, and complete purchase transactions.
- **Improved Transparency**: With near real-time updates and detailed loan information, MPLs can make informed decisions and maintain control over their purchase process.

### Now live for HFS loans, with more to come

We’re proud to announce that the enhanced Lending Selling solution is now **live for Held for Sale (HFS) loans**, enabling MPLs to immediately benefit from this streamlined process.

Looking ahead, we will be expanding the platform to enable management of loans in a warehousing facility , ensuring full coverage to meet your needs.

We’re committed to empowering our MPL partners with tools that make loan buyback processes faster, smarter, and easier. Whether you prefer the hands-on control of our UI or the automation of our API combined with the proactive capabilities of webhooks, Cross River Bank is here to support your success.

For access requests, inquiries, or feedback, please don't hesitate to contact our dedicated support team at [arix.support@crossriver.com](mailto\:arix.support@crossriver.com). To access the UI, your user will need *COS Lending Selling&#x20;*&#x70;ermissions from an allow-listed static IP address.

Graham Agee

Sr. Product Manager, Lending

***

## Introducing manual review UI: A synergistic addition to Arix's lending APIs

We're thrilled to announce a significant milestone for Arix, CRB's loan validation and funding system. For the past five years, Arix has empowered Marketplace Lending (MPL) partners with an API-only integration. Today, we're excited to unveil a complementary addition: Manual Review, a UI designed to enhance the loan review experience and speed up onboarding.

### What's new?

In response to your feedback, we've developed Manual Review, a UI that integrates with our API-driven system. Now, you have the flexibility to choose between API calls or intuitive UI interactions for loan management tasks. The system currently shows all the loans that have not automatically proceeded to funding.

### Key features

1. Dashboard: Gain comprehensive visibility into loans that are in the queue.
2. Actionable insights: Easily identify why a loan is in the queue, edit loan details or upload documents directly from the UI. These actions rerun the compliance engine.
3. Seamless transition: As an existing user, enjoy consistency and ease of use because all functionalities available via the UI mirror the capabilities of our Arix API.
4. Enhanced collaboration: Add notes to a specific loan, giving Bank Ops more information needed to pass a failed rule (coming soon)!

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/VpgFnU1TNySUISALm6ij5_image.png)

As we celebrate this milestone, we're committed to further enhancing the Arix experience. In future releases, expect even more features and refinements aimed at optimizing loan processing efficiency and compliance management.

### Experience the difference today!

For access requests, inquiries, or feedback, please don't hesitate to contact our dedicated support team at [lending.support@crossriver.com. ](mailto\:lending.support@crossriver.com)To access the UI, your user will need **Oversight&#x20;**&#x61;nd **Loan Edit** permissions from an allow-listed static IP address.

Here's to a future of seamless lending with Arix!

Ari Pollack

Sr. Product Manager, Lending

***

## Streamlining loan funding testing with “BypassRuleChecking”

Building and optimizing a lending platform takes time—and testing should be frictionless. At Cross River, we’re making it easier for our partners to `validate loan funding and loan purchasing flows` **without triggering full compliance** **checks** in the sandbox environment.

Now, by adding the "`BypassRuleChecking`" key in the **Field5&#x20;**&#x4A;SON, you can bypass compliance rule checks during sandbox testing. This lets you focus on funding mechanics and iterate faster, without waiting on full verification cycles.

Want to see it in action? Check out our [Field 5 attributes in Post /Loan](docId\:v8cArTCqMmQrYCIYHUf7f) page for details.

As always, we’re here to help. Reach out with any questions.

Amichai Lichtenstein

Product, Lending

***

## Streamlining fair lending requirements with the Pre-approval UI

We’re excited to announce the launch of our new web-based app for viewing loan application data that’s sent using our Fair Lending API set. This new user interface (UI) lets you view, sort, and filter loan application data, making it more efficient to access the information you need for successful implementation of our APIs.

One of the major benefits the UI gives is the ability to view a large amount of data without the need to pull it via API. You can access the information you need without having to deal with any technical details or coding. The app is ideal for anyone who needs to review loan application data on a regular basis. It also makes onboarding to our systems easier.

Here’s a view of a denied application, including the reasons the loan application was denied.



![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/ShYGAM61JDYMSv_9EhdFn_image.png)

Another benefit the new app gives is the ability to navigate through information, without being overwhelmed by the amount of data needing to be collected. This is sometimes hard to do in a single large JSON object.

This image shows a drill down into an approved application that’s been accepted by the customer.

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/tcn98z-ECAa8sfLFnXusO_image.png)

Overall, our new UI for viewing loan application data is a valuable tool for anyone who needs to access this information. Whether you're a loan officer, Fair Lending specialist, or just someone who needs to view data as part of your job, this new web-based app makes it easy to get the information you need quickly and efficiently.

Ari Pollack

Sr. Product Manager, Lending

***

## New mailing options for checks

Hey API Developers, Engineers, and Product Managers!

Great news from CR for Arix users! We're releasing an update to the check rail, offering more mailing options:

1. FedEx Express Overnight
2. FedEx Priority Overnight
3. FedEx Express 2 Day
4. USPS Overnight
5. USPS Priority "2 day" (delivery confirmation)
6. USPS Priority "2 day" (signature required)
7. USPS First Class - Canadian
8. USPS First Class - International
9. USPS First Class - US
10. USPS Certified Mail

You now have the flexibility to choose the best option for your needs. Plus, for auto loans, checks will expire after 40 days, giving you more time to process payments.

CR values your feedback and is committed to improving your experience with Arix. Head over to check out these fantastic updates and stay tuned for more!

Happy lending.

Amichai Lichtenstein

Product, Lending

***

## Expanding possibilities: Arix welcomes wires and card payment rails to the family!

Arix is thrilled to introduce two new rails to our [collection](docId\:GMP-Bavby6sAgCbQlLsJM), bringing our total to eight!

1. [Wires.](docId:3KsA-jsyJ0pCqtDdHl8sp)  Effortlessly wire funds directly through Arix. Pricing will remain the same if you are using wires through COS today.
2. [Card payments](docId\:f6s7wNyFtdq1mMgxPPnzM). The Card Payment Rail allows you to send funds directly to credit cards. This can be used as a failover for RPPS rail for covering a wider network, or a stand-alone rail.

These rails can be utilized through the Arix APIs, just like one would call the other payment rails.

### The case against the two-step solution

The wide range of payment rails wasn’t always available directly in Arix. Workaround solutions were found by using the XPay rail for internal transfers and then sending funds from your account using another payment method.

It's time to ditch the two-step solution.

Here's why:

1. Efficiency Matters
   The two-step process introduces unnecessary complexity and increases the chances of errors. Direct wiring and card payment rails from Arix simplifies transactions, reducing manual reconciliations and potential failures.
2. Capture Every Loan Funding Event
   With Arix APIs, loan funding events can be seamlessly captured in one step, and in one system. No need to juggle between different systems, Arix ensures a comprehensive record of all your loan disbursements.

### Ready to transform your transactions?

Upgrade your loan processing experience with ArixWires and Card Payment Rails. Explore the possibilities of these new additions, now totaling eight rails in our comprehensive system.

### Learn more

Curious about how to sign up or want to explore these new features further? Reach out to your dedicated relationship manager today. They're here to guide you through the seamless integration of these rails into your loan operations.

Ari Pollack

Sr. Product Manager, Lending

***

## Unveiling the new Hooks UI: Elevating your connectivity experience

We're thrilled to introduce a transformative update that takes our client-facing UI to new heights! Say hello to The New Hooks UI, where functionality meets self-service, and your control over notifications is taken to the next level.

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/_ad0oWkU9o_hzh0KA9YfP_image.png)

Registrations can be restarted, so all failed events are resent.

### Empowering features

1. Interactive Connectivity: You can now create registrations for events, ensuring a tailored experience.
2. Troubleshoot with Ease: Encounter an issue? No problem. Troubleshoot historical data of events, dive into requests sent, and inspect responses from your system – all within a single, user-friendly interface.
3. Edit Registrations and Resend Events: Fine-tune your interactions effortlessly. Edit registrations, restart processes, and resend events on your terms.

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/BVGRyHA9p_Nw7OzgmKuMv_image.png)

### Empower your team, save your resources

The New Hooks UI isn't just a UI update; it's a strategic move to empower your development team and save valuable resources. Faster troubleshooting means more efficient workflows, translating directly to cost savings for your company. The ability to resend events means that no events are lost, and even if the network is down, your system can be updated at a later time.

Ready to experience the future of connectivity? Dive into The New Hooks UI today!

Your Connectivity, Your Control.

Ari Pollack

Sr. Product Manager, Lending

***

## Streamlining fair lending

My name is Ari Pollack and I’m a Product Manager on the lending team. I’m excited to announce the release of our newest set of APIs, Cos.Lending PreApproval. At this first stage, you can send application data to Cross River for all applications (originated, approved-not-accepted, denied, withdrawn, rejected, incomplete, and if applicable, in progress).

### Why is this necessary

Regulatory agencies across the industry recognize how unique our business model is, and have been scrutinizing FinTech lending activities as it relates to Fair Lending. As a partner, expect an annual examination as regards fair lending, in addition to regular examinations. The bank’s prudential regulator, the FDIC, expects us to evidence collaborative data management practices between Cross River and its partners.

### Validation of data on submission

Until recently, only approved and ready to fund loans were sent via API to the system. All other application information was sent daily, as files via sftp. Partners often received feedback from regulators, months and even years after the data was sent in which led to burdensome research to fix old data. With the new Application API, we validate each field on submission, and return instant feedback in the response of the API call. Required fields are enforced so that an application can be recorded. For example, the Approve API in the image below where an application is being sent in and marked as **Approved**.

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/07lURtvyIcoKCzSuWCvmy_image.png)

In the API response you can see immediate feedback. The borrower had an illegal email address and the postal code was also not valid. Now, the submitter will know what needs to be fixed much earlier on in the process.

### Denial API

For Fair Lending purposes, we are not only required to collect information about approved loans, but also for denied, rejected, or undecided applications. Below is an example of an application submission to the API with a decision of Denied. As you can see in the image, there is a list of denial reasons in the body of the API call along with the application itself.

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/aY31aM8T8Ekv9myOGUqun_image.png)

### Long term benefit

**Ultimately, this API strengthens data governance and regulatory exam management processes.**

While it will take some level of effort to integrate, the benefits of the API process include:

- Eliminates or minimizes data errors
- Enables an automated, real-time process to correct data errors and avoid burdensome research/ correction of errors after the fact
- Facilitates proactive identification and management of compliance and fair lending risks
- Allows more timely responses and adequate preparation for regulatory examinations
- Ensures adherence to record retention and technical compliance requirements

The FDIC expects to receive complete and accurate data in a timely manner during the regulatory examination process. The API process will go a long way in meeting those expectations and minimizing potential scrutiny by the examiners, which helps everyone involved.

Ari Pollack

Sr. Product Manager, Lending

***

## Check's in the mail

Don’t start eulogizing the paper check just yet. Our “Check in the Mail” keeps gaining popularity. This release allows for scalability, security, and a better user experience for our partners.

At the end of 2020 we launched our Check in the mail rail. MPLs use checks to give their customers the option of receiving funds or paying off their existing loans via a paper check. Very old school, yes, but our MPL customers jumped at the option.

Our vendor, Checkbook, did a great job of printing and sending out the checks. Because of our architecture, they also managed the check clearing. As the volume increased though, relaying details of cashing, revoking, and expiring checks became a non-scalable procedure.

### Positive pay and COS clearing

To address that issue, we needed to automate the clearing of the checks in-house. COS, our banking core, added a Positive Pay feature, and once the system integrated that feature, check events could be automatically handled.

### Cashing a check

When a check is created, the system adds it to Positive Pay in COS and it has an expiration date. The check is then printed and mailed out by Checkbook. When a customer tries to cash the check, the fed notifies CR, and COS reviews the check. The check only gets cashed if all 3 conditions are met:

1. The check is on the Positive Pay list and matches the account information.
2. The check hasn’t expired.
3. The check hasn’t been revoked.

The system can revoke a check if MPL Operations or the MPL wants to stop a check from being cashed. And, if any of the 3 conditions are not met, COS will bounce the check when someone tries to cash it.

### Return events

Any event that stops a check from being able to be cashed, such as an expired event or a revoke, will create a return event for that check. After a return, you'll be able to request the funds again by check, or by another payment method.

Should I state the obvious? OK, I will.

Since the fed will now send the cash request to CR, cashed events will now be in real time. No tech changes required by our MPL customers. Relax and enjoy the improved experience.

You may notice these features that we added:

- Check number is now printed in the message field for easier tracking
- Check image is now available to our MPL Ops once it is presented to be cashed

Any failure to create a check will result in a return. This will allow the rest of the loan amount to be disbursed using a different rail.

We are working with Checkbook on other possible mailing options (at present, only USPS).

If you are an MPL that’s keen on disbursing via digital rails, of course we support those as well as payment rails. If a business opportunity arises that requires more traditional payment methods, we’ve got you covered. We’re not burying the paper check just yet.

Ari Pollack

Sr. Product Manager, Lending

[title] XML batch payments
[path] Payments/

## Cross River XML batch payments solution

Cross River's XML batch payment () channel provides you with a way to send all your instructions in one single file format (XML).

The system:

1. Processes input files that you have supplied.
2. Records financial movements.
3. Sends Payment Status Reports (PSRs) as output files to update you about payment processing, rejections, and returns.&#x20;

The input files must conform to the ISO 20022 PAIN.001.001.03 and PAIN.008.001.02 standards, and the PSRs conform to the ISO 20022 PAIN002.001.03 standard.

## What we offer

Cross River supports these payment methods (rails):

- [Book transfer](docId\:w-rcA6_BDqLvE_XYSrDYy)&#x20;
- [ACH CCD/PPD](docId\:eVGH2ENEczhwSv1kfeohf)&#x20;
- [Fedwire](docId\:J9vKg2vbjR_XN-awf0lN8)&#x20;
- [ACH direct debit](docId\:Ekk2qYL1RUXrw-Nhfu3Fy)&#x20;
- [RTP/FedNow](docId:251cK85n4Uc8eBV44PGSh)&#x20;

The rail that you use for payment processing depend on your agreement with Cross River. The client support team sets up the rails during your onboarding process.

You will learn how to create the files correctly and how to send them to Cross River. We've included [examples](docId\:MeXfr73i11kMnKc7pVFL1) of input files and PSRs, together with explanations of their blocks and elements. We've also included [return statuses and error codes](docId:9kCGr2dDmGcB9FRvsZ0RH) so you can understand what's happening with your files.

:::hint{type="info"}
You can find detailed information about the ISO 20022 message definitions on the [ISO site](https://www.iso20022.org/iso-20022-message-definitions).
:::

You can reach out to [support](mailto\:unicorn.support@crossriver.com) with any questions.

Acknowledgment files containing initial processing information are normally available within minutes. After that, Cross River checks for updates based on rail type.

## Find out more

- [Payment methods](docId\:E3TSUZoc68EIlvFkaI75t)&#x20;
- [File transfer](docId:6-zq8c8-CWNZG8BXLhILx)&#x20;
- [Requirements per rail](docId\:jb3Gaaluj-4sHWjTWOiZm)&#x20;
- [Prepare input XML file](docId\:MeXfr73i11kMnKc7pVFL1)&#x20;
- [Output files](docId\:Dh2KWo029OFX91GzsvUsi)&#x20;
- [Validation](docId\:SBsu0K2FAGMWeL_hFCSN8)&#x20;




[title] ACH direct debit
[path] Payments/XML batch payments/Untitled/

## ACH direct debit XML input file example

:::hint{type="info"}
For ACH Direct Debit, the PAIN standard is [PAIN.008.001.02](docId:3gf3aPgshkfomTxcSFlzN). This is seen in the 2nd line of the example below.
:::

The example below is for the ACH Direct Debit CCD rail. The XML for ACH Direct Debit PPD is identical to that of ACH Direct Debit CCD, except that the value of the **Prtry** element is "PPD".

```xml
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
  <CstmrDrctDbtInitn>
    <GrpHdr>
      <MsgId>DOMC10000029</MsgId>
      <CreDtTm>2020-09-03T16:32:48</CreDtTm>
      <NbOfTxs>3</NbOfTxs>
      <CtrlSum>6.00</CtrlSum>
      <InitgPty>
        <Nm>John Doe Corporation</Nm>
        <Id>
          <OrgId>
            <Othr>
              <Id>7812871377</Id>
            </Othr>
          </OrgId>
        </Id>
      </InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>DOMC10000029</PmtInfId>
      <PmtMtd>DD</PmtMtd>
      <BtchBookg>true</BtchBookg>
      <NbOfTxs>3</NbOfTxs>
      <CtrlSum>6.00</CtrlSum>
      <PmtTpInf>
        <SvcLvl>
          <Cd>NURG</Cd>
        </SvcLvl>
        <LclInstrm>
          <Prtry>CCD</Prtry>
        </LclInstrm>
      </PmtTpInf>
      <ReqdColltnDt>2020-09-03</ReqdColltnDt>
      <Cdtr>
        <Nm>Upgrade Corporation</Nm>
        <PstlAdr>
          <Ctry>US</Ctry>
          <AdrLine>275 Battery Street, 23rd Floor</AdrLine>
          <AdrLine>94111 San Francisco</AdrLine>
        </PstlAdr>
        <Id>
          <OrgId>
            <Othr>
              <Id>7812871377</Id>
            </Othr>
          </OrgId>
        </Id>
      </Cdtr>
      <CdtrAcct>
        <Id>
          <Othr>
            <Id>2152485385</Id>
          </Othr>
        </Id>
        <Ccy>USD</Ccy>
      </CdtrAcct>
      <CdtrAgt>
        <FinInstnId>
          <ClrSysMmbId>
            <MmbId>021214891</MmbId>
          </ClrSysMmbId>
          <PstlAdr>
            <Ctry>US</Ctry>
          </PstlAdr>
        </FinInstnId>
      </CdtrAgt>
      <DrctDbtTxInf>
        <PmtId>
          <EndToEndId>100DDEB000040</EndToEndId>
        </PmtId>
        <InstdAmt Ccy="USD">3.00</InstdAmt>
        <DbtrAgt>
          <FinInstnId>
            <ClrSysMmbId>
              <MmbId>123345678</MmbId>
            </ClrSysMmbId>
            <Nm>DUMMY</Nm>
            <PstlAdr>
              <Ctry>US</Ctry>
            </PstlAdr>
          </FinInstnId>
        </DbtrAgt>
        <Dbtr>
          <Nm>DUMMY</Nm>
          <PstlAdr>
            <Ctry>US</Ctry>
          </PstlAdr>
        </Dbtr>
        <DbtrAcct>
          <Id>
            <Othr>
              <Id>61651561516</Id>
            </Othr>
          </Id>
        </DbtrAcct>
        <RmtInf>
          <Ustrd>Testing</Ustrd>
        </RmtInf>
      </DrctDbtTxInf>
      <DrctDbtTxInf>
        <PmtId>
          <EndToEndId>100DDEB000042</EndToEndId>
        </PmtId>
        <InstdAmt Ccy="USD">2.00</InstdAmt>
        <DbtrAgt>
          <FinInstnId>
            <ClrSysMmbId>
              <MmbId>123345678</MmbId>
            </ClrSysMmbId>
            <Nm>DUMMY</Nm>
            <PstlAdr>
              <Ctry>US</Ctry>
            </PstlAdr>
          </FinInstnId>
        </DbtrAgt>
        <Dbtr>
          <Nm>DUMMY</Nm>
          <PstlAdr>
            <Ctry>US</Ctry>
          </PstlAdr>
        </Dbtr>
        <DbtrAcct>
          <Id>
            <Othr>
              <Id>61651561516</Id>
            </Othr>
          </Id>
        </DbtrAcct>
        <RmtInf>
          <Ustrd>Testing</Ustrd>
        </RmtInf>
      </DrctDbtTxInf>
      <DrctDbtTxInf>
        <PmtId>
          <EndToEndId>100DDEB000041</EndToEndId>
        </PmtId>
        <InstdAmt Ccy="USD">1.00</InstdAmt>
        <DbtrAgt>
          <FinInstnId>
            <ClrSysMmbId>
              <MmbId>123345678</MmbId>
            </ClrSysMmbId>
            <Nm>DUMMY</Nm>
            <PstlAdr>
              <Ctry>US</Ctry>
            </PstlAdr>
          </FinInstnId>
        </DbtrAgt>
        <Dbtr>
          <Nm>DUMMY</Nm>
          <PstlAdr>
            <Ctry>US</Ctry>
          </PstlAdr>
        </Dbtr>
        <DbtrAcct>
          <Id>
            <Othr>
              <Id>61651561516</Id>
            </Othr>
          </Id>
        </DbtrAcct>
        <RmtInf>
          <Ustrd>Testing</Ustrd>
        </RmtInf>
      </DrctDbtTxInf>
    </PmtInf>
  </CstmrDrctDbtInitn>
</Document>
```


[title] Lending
[path] /

:::CtaButton{label="Lending APIs" docId="439iYERDzE2H4Am7G6jv6" openInNewTab="true"}

:::

## Cross River lending solution

As a marketplace lending (MPL) partner with Cross River you can access  functions via an extensive list of API calls.  Loans are funded after the review and fulfillment of documentation and compliance requirements.&#x20;

## What we offer

- [Application preapproval](docId\:XC9WSry-X6scsfKQZ1sZ6): Preapproval APIs allow you to validate that an application is meeting Cross River requirements as part of the application flow.
- [Loan origination and funding](docId\:BAB0iNlUG2tAGYrLlkjnM): The Arix engine validates all loans and allows you the flexibility to control how the loan is funded. You can enter instructions and control the rails, and the order in which to attempt to fund over those rails. You can also elect to fund different parts of the loan over different rails, and supply fallback options if rails fail.
- [Loan seasoning, sale or retention](docId\:DoBshm4E1JoFa8FUVqAPh): After funding, every loan enters a seasoning period. Post-seasoning, you or your investors will purhcase the loans or retain it on Cross River's books (flexible warehousing).
- [Loan data exchange](docId\:sJ6yahWlYzkEDLo6oiJf3): MPL submits servicing data on a daily basis. This powers Cross River warehousing and long term oversight process.

## Find out more

- [Loan process](docId\:XC9WSry-X6scsfKQZ1sZ6)&#x20;
- [New in lending](docId\:y9mo47e1s9VgVkTgxa8zi)&#x20;

**

[title] Book transfer
[path] Payments/XML batch payments/Untitled/

## Book transfer XML input file example

:::hint{type="info"}
For Book Transfers the PAIN standard is [PAIN.001.001.03](docId:6k_6gEXlRhLar0cNYQToN).
:::

```xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <CstmrCdtTrfInitn>
        <GrpHdr>
            <MsgId>CASH12345678</MsgId>
            <CreDtTm>2020-07-29T18:32:51</CreDtTm>
            <NbOfTxs>2</NbOfTxs>
            <CtrlSum>2.04</CtrlSum>
            <InitgPty>
                <Nm>John Doe Corporation</Nm>
                <Id>
                    <OrgId>
                        <BICOrBEI>JOHNDOE99</BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <PmtInf>
            <PmtInfId>CASH12345678</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <BtchBookg>true</BtchBookg>
            <NbOfTxs>2</NbOfTxs>
            <CtrlSum>2.04</CtrlSum>
            <PmtTpInf>
                <InstrPrty>NORM</InstrPrty>
                <SvcLvl>
                    <Cd>URGP</Cd>
                </SvcLvl>
            </PmtTpInf>
            <ReqdExctnDt>2020-07-29</ReqdExctnDt>
            <Dbtr>
                <Nm>John Doe Corporation</Nm>
                <PstlAdr>
                    <StrtNm>999 Any Street, 13th Floor</StrtNm>
                    <PstCd>99999</PstCd>
                    <TwnNm>Anytown</TwnNm>
                    <CtrySubDvsn>CA</CtrySubDvsn>
                    <Ctry>US</Ctry>
                </PstlAdr>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>0123456789</Id>
                    </Othr>
                </Id>
                <Ccy>USD</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <ClrSysMmbId>
                        <ClrSysId>
                            <Cd>USABA</Cd>
                        </ClrSysId>
                        <MmbId>123456789</MmbId>
                    </ClrSysMmbId>
                    <PstlAdr>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SHAR</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100BKTW004345</InstrId>
                    <EndToEndId>0000000000000072</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">0.04</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Corporation</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Street, 13th Floor</StrtNm>
                        <PstCd>99999</PstCd>
                        <TwnNm>Anytown</TwnNm>
                        <CtrySubDvsn>CA</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                    <Id>
                        <OrgId>
                            <Othr>
                                <Id>0123456789</Id>
                            </Othr>
                        </OrgId>
                    </Id>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100BKTW0000</InstrId>
                    <EndToEndId>0000000000000073</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">2.00</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Corporation</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Street, 13th Floor</StrtNm>
                        <PstCd>99999</PstCd>
                        <TwnNm>Anytown</TwnNm>
                        <CtrySubDvsn>CA</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                    <Id>
                        <OrgId>
                            <Othr>
                                <Id>0123456789</Id>
                            </Othr>
                        </OrgId>
                    </Id>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>
    </CstmrCdtTrfInitn>
</Document>
```


[title] Deposit and withdrawal
[path] Payments/Checks/

## Deposit a check in a Cross River account

The following diagram shows the status and webhook flows when a check is deposited in a Cross River account (*outbound forward* check payment).&#x20;

:::hint{type="info"}
See our tutorial to learn how to [deposit a check](docId\:NCdnIvTYdix4xtbfn8jY6).
:::

![](https://archbee-image-uploads.s3.amazonaws.com/fCt3n1oCa8rgNJ8fw9I2N-aNdioRfdD_2KvVi3hqbXn-20240808-121729.png)

## Write a check on a Cross River account

The following diagram shows the status and webhook flows when a check is drawn on a Cross River account (*inbound forward* check payment).

![](https://archbee-image-uploads.s3.amazonaws.com/fCt3n1oCa8rgNJ8fw9I2N-2OGRFJfKSGjK_Hy6xMXYd-20240808-121751.png)

## Inbound/outbound return

Whether deposited or used as a payment, a check might be returned for a number of reasons.

- A returned check presented to Cross River by the Federal Reserve is considered an *inbound return*.
- A check returned by Cross River is considered an *outbound return.*


[title] Stop payments
[path] Payments/Checks/

## Stop payments intro

If the payer has passed a check that the payer  has not yet processed, they can put a stop payment on the check.

Once a check has been processed by the payer FI, a stop payment cannot be made. Instead, a dispute must be filed by the payer.

## Fees

If the payee deposits the check after the check has had a stop payment put on it, the payee FI generally charges the payee a penalty fee. The payer bank will likely also charge for the stop payment service.

## Details

Usually the check amount, check number and account number is included the stop payment instructions.

In addition, whether deposited or used as a payment, a check might be returned for a number of reasons.

- A returned check presented to Cross River by the Federal Reserve is considered an *inbound return*.
- A check returned by Cross River is considered an *outbound return*

For further guidance, please refer to: **Reg E 1005.10 Preauthorized Transfer (c) Customer's Right to Stop payment** section in the following link:

<font color="#3b9f0f"></font>

[title] Payment methods
[path] Payments/XML batch payments/

## XML batch payments methods

XML batch payments (ISO 20022) promotes efficiency, accuracy, and interoperability across payment networks, making it essential for anyone involved in financial transactions.

## Direct debit (ACH)

Cross River's [ISO 20022 pain.008](docId:3gf3aPgshkfomTxcSFlzN) implementation supports creation of direct debit instructions using the US ACH system.&#x20;

Cross River checks for returns and s once on the effective date provided in the response, then once a day for an additional 3 business days, and then once a week for up to 6 months.

Corss River checks for `Processed`, `Rejected` and `OnHold` statuses once on the effective date provided in the response, and then once a day for an additional three business days.

The checks happen at 20:00 EST for ACH.

:::hint{type="info"}
Effective date is the day the payment came in, or the next business day if the payment came in after the cutoff time set in COS.
:::

## ACH push (CCD/PPD)

Cross River's [ISO 20022 pain.001](docId:6k_6gEXlRhLar0cNYQToN) implementation enables you to initiate electronic payments (such as payroll or vendor payments) through the ACH network.

## Fedwire

Cross River's [ISO 20022 pain.001](docId:6k_6gEXlRhLar0cNYQToN) implementation supports Fedwire payments.

Cross River checks for status updates at 18:00 EST on the business day that the payment was supposed to be processed, and also at 18:00 EST on the business day after that.

## Book transfer

Cross River's [ISO 20022 pain.001](docId:6k_6gEXlRhLar0cNYQToN) implementation allows you to send book transfers to any bank account&#x20;

Cross River checks for status updates every 30 minutes.

## RTP (real-time payments)

Cross River's [ISO 20022 pain.001](docId:6k_6gEXlRhLar0cNYQToN) implementation supports real-time fund transfers from The Clearing House (RTP) and from the Fed (FedNow).

[title] XML input file examples
[path] Payments/XML batch payments/

Cross River have these XML input file examples:

- [Book transfer](docId\:w-rcA6_BDqLvE_XYSrDYy)&#x20;
- [ACH CCD/PPD](docId\:eVGH2ENEczhwSv1kfeohf)&#x20;
- [Fedwire](docId\:J9vKg2vbjR_XN-awf0lN8)&#x20;
- [ACH direct debit](docId\:Ekk2qYL1RUXrw-Nhfu3Fy)&#x20;
- [RTP/FedNow](docId:251cK85n4Uc8eBV44PGSh)


[title] Validation
[path] Payments/XML batch payments/

## Validation for submitted input files

Initial validation on the submitted input files ensures that we received the relevant information needed to initiate the payment requests and report on them.

Additional validations will be executed by Cross Rivers' payment system before processing the transactions.

In both cases, if a validation error is found or we cannot process the request for any other reason, a report will be generated and returned to you describing what is wrong with the input file so that you can re-submit it.

## Considerations

The following are some validation considerations:

- The file must contain valid XML only.
- The XML must follow the ISO 20022 [PAIN.001.001.03](docId:6k_6gEXlRhLar0cNYQToN) or [PAIN.008.001.02](docId:3gf3aPgshkfomTxcSFlzN) format.
- The sum of the transaction amounts in the file must not exceed the File Level Limit configured per your agreement with Cross River.
- You can only use the rails that have been agreed upon with us. At any point, you can request to update the setup for the rails you are using.
- The number of transactions in the file must equal the Control number of transactions specified in the file's Group Header. Each batch’s Payment Information `NbOfTxs` field must equal the number of transactions it contains. Refer to [Prepare input XML file](docId\:MeXfr73i11kMnKc7pVFL1) .
- The sum of the transaction amounts must equal the Control amount specified in the Group Header or Payment Information `CtrlSum` field. Refer to [Prepare input XML file](docId\:MeXfr73i11kMnKc7pVFL1).
- The payment ID (PmtId) is validated so doubles are not sent - if a duplicate payment ID is found, **the instruction will be ignored**.
- The account number used must have been registered at the outset.
- The Requested Execution Date must not be in the future.
- The Creditor and Debtor account currency must be in USD.
- The following fields must be unique between each instruction: `EndToEndID`, `InstrId`, `MsgId`, `PmtInfId`.&#x20;


[title] Get started in testnet
[path] Onchain payments/

## Test USDC transfers

Test USDC transfers in the Cross River sandbox environment using supported blockchain test networks. Both Ethereum (Sepolia) and Solana (Devnet) are available for end-to-end testing.

## Prerequisites

- A [registered](docId\:Z-MVwOV-p00-xX082NabK) sandbox account in the Cross River developer environment.
- A **testnet blockchain wallet address** on Ethereum (Sepolia) and or Solana (Devnet).
- **Test USDC tokens** funded through public faucets.

## Get testnet tokens

Test tokens are required to simulate stablecoin payment flows in the sandbox environment. Each blockchain uses separate assets for testing, including **USDC** for payment simulation and **ETH** or **SOL** for network fees.

| Asset    | Network                              | Source                                                                           | Description                                                                                                                                                                              |
| -------- | ------------------------------------ | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **USDC** | Ethereum (Sepolia) & Solana (Devnet) | [Circle Faucet](https://faucet.circle.com/)                                      | Provides test **USDC** on both **Sepolia** and **Devnet** networks. Requires a wallet configured for the corresponding test network, such as MetaMask for Sepolia or Phantom for Devnet. |
| **ETH**  | Ethereum (Sepolia)                   | [Google Cloud Faucet](https://cloud.google.com/application/web3/faucet/ethereum) | Provides test **ETH** for Sepolia network fees. Each request grants a limited amount for development use.                                                                                |
| **SOL**  | Solana (Devnet)                      | [Solana Faucet](https://faucet.solana.com/)                                      | Provides test **SOL** for Solana Devnet network fees. Requires a Solana compatible wallet.                                                                                               |

:::hint{type="warning"}
**IMPORTANT**

Testnet assets have no monetary value and are intended for development and testing only. Always confirm that the correct test network is selected before initiating transfers.
:::

## Run your first test

The sandbox environment supports testing of both inbound and outbound stablecoin payment flows.

::::WorkflowBlock
:::WorkflowBlockItem
**Test an inbound payment (external to Cross River)**

1. **Retrieve a receiving address:** Call `GET /v1/accounts/{accountNumber}/account-addresses` to retrieve a Cross River-managed receiving address associated with the account for the selected blockchain network.
2. **Fund a test wallet:** Request test USDC and the corresponding network token using the public faucet links listed in the table in the [Get testnet tokens](docId\:kKg6wDGvPtdFwWN7gCCRH) section.
3. **Initiate the transfer:** Send test USDC from an external testnet wallet to the retrieved receiving address.
4. **Onchain confirmation:&#x20;**&#x4F;nce the transaction is confirmed on the test network, Cross River detects the transfer and makes the payment available for PII submission.
5. **Provide PII:** Submit the required sender PII using `POST /v1/payments/{id}/pii`.
6. **Verify receipt:** After required PII is submitted and the payment is completed, Cross River issues a `Crypto.Payment.Received` webhook. Webhook logs can be used to confirm successful receipt of the inbound payment and account credit.
:::

:::WorkflowBlockItem
**Test an outbound payment (Cross River to external)**

1. **Create an external destination wallet:&#x20;**&#x43;all `POST /v1/accounts/{accountNumber}/external-addresses`to register a destination blockchain address for testing.
2. **Send a payment:**
   1. Call `POST /v1/payments` to initiate a USDC payment from the Cross River sandbox account to the registered external address.
   2. Set the `blockchain` field to either **ethereum** or **solana**, based on the selected test network.
3. **Confirm transaction status:&#x20;**&#x41;fter the transaction is broadcast and confirmed, a `Crypto.Payment.Sent`webhook is issued containing the payment ID and blockchain transaction hash.
:::
::::

[Learn about Cross River onchain payment APIs](docId\:lnZ2VwmXVahA4yP7mayED)&#x20;

[Learn more about using the Cross River sandbox environment](docId\:wmg-1Fqwq3bj-D3c3HFfs)

## Additional considerations

- **Supported assets in sandbox:** USDC on Ethereum Sepolia and Solana Devnet.&#x20;
- **Settlement timing:** Confirmation typically occurs within seconds, subject to blockchain network conditions and applicable review processes.&#x20;
- **Network fees:&#x20;**&#x54;estnet network fees may apply as part of the sandbox testing flow. These fees are paid using the applicable test network token.&#x20;

[title] Send and receive
[path] Onchain payments/

## Stablecoin payment flow

Stablecoins can be sent and received using the Cross River [stablecoin payments API](docId\:lnZ2VwmXVahA4yP7mayED). Each transaction is initiated, validated, and reconciled through Cross River regulated infrastructure, ensuring that onchain transfers follow the same operational, compliance, and regulatory frameworks applied to other payment rails.

## Outbound payments (send)

Use the [POST /v1/payments](docId:97ecBPkLpcwxVCxKeo_la) endpoint to send stablecoins to a verified external blockchain address. For outbound payments, **USD is debited from the Cross River account**, and the corresponding USDC amount is delivered onchain.

### How it works

**Step 1: Payment initiation**
Submit a request to `POST /v1/payments` specifying the account number, amount, currency (`USDC`), blockchain (`solana`), and destination blockchain address.

**Step 2: Validation**
Cross River:

- Validates account permissions
- Verifies available balances
- Confirms that the specified blockchain and asset are supported
- Performs any other necessary compliance and regulatory validations

**Step 3: Execution**
Once validated, the transaction is broadcast to the selected blockchain for settlement.

**Step 4: Confirmation**
After settlement, Cross River records the transaction and issues a webhook notification (`Crypto.Payment.Sent`) containing the payment ID and blockchain transaction hash.

**Step 5: Reconciliation**
The completed transaction is reflected in account reporting to support operational and accounting traceability.

## Inbound payments (receive)

Stablecoins may be received into a Cross River-managed onchain address. Inbound transfers are detected and validated once confirmed onchain, after which **USD is credited to the Cross River account**.

### How it works

**Step 1: Address retrieval&#x20;**&#xA;Use [GET /v1/accounts/\{accountNumber}/account-addresses](docId:28f-_LH3atAq88tJCqNTw) to retrieve the receiving blockchain address for the selected network.

**Step 2: Sender transfer initiation** 
A sender, which may be Cross River’s customer or the customer’s customer (i.e. the end user), initiates a stablecoin transfer to the retrieved address using a supported blockchain network.&#x20;

**Step 3: Onchain confirmation** 
Cross River detects the transaction and validates that it matches the account and asset configuration, and issues a `Crypto.Payment.OnchainPaymentDetected` webhook.

**Step 4: PII submission and account credit** 
If sender PII is not being reused from a previous transfer, provide the required sender PII using [POST /v1/payments/\{id}/pii](docId\:A9MDJ5F6zIXzYX4IskuCv). Once the required PII is submitted and the transfer is validated, the equivalent USD amount is credited to the account and reflected in reporting.&#x20;

**Step 5: Notification**
A webhook (`Crypto.Payment.Received`) confirms that the inbound transfer has completed successfully.

## Example

A payment of 1,000 USDC is sent to a supplier.

1. A call is made to `POST /v1/payments`, specifying the supplier’s Solana blockchain address.
2. Cross River validates and executes the transaction on the Solana network.
3. The payment is finalized onchain, subject to network conditions.
4. A webhook notification (`Crypto.Payment.Sent`) is issued containing the payment ID and blockchain transaction hash for reconciliation.

[title] Use cases
[path] Onchain payments/

## Why Cross River

Cross River supports stablecoin payment activity within a regulated banking framework, combining established bank controls with blockchain based settlement capabilities. Stablecoin payments are governed by the same compliance and risk management applied to traditional payment rails.&#x20;

When stablecoin payments are sent or received, an equivalent amount of **USD is credited to or debited from the linked Cross River account**, while stablecoins are used only for onchain settlement. This provides consistent oversight, reconciliation, and operational clarity.

Working with Cross River means:

| Capability                      | Description                                                                                                                                                                                                                              |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Trusted foundation**          | Support stablecoin payments within a regulated banking environment. Transactions are subject to Cross River established compliance, risk management, and settlement oversight frameworks.                                                |
| **Integrated operating model**  | Manage fiat and stablecoin activity through a single USD posting model. Payment initiation, settlement, and reporting are handled within Cross River regulated infrastructure.                                                           |
| **Near real time availability** | Onchain settlement occurs on supported networks with confirmation typically within seconds, subject to network conditions, compliance and verification checks. Corresponding USD balances are reflected once transactions are validated. |
| **Network optionality**         | Select a supported blockchain network based on operational considerations. Cross River manages network interaction, transaction execution, and confirmation tracking.                                                                    |
| **Operational visibility**      | Stablecoin payments include reference data and transaction identifiers to support reconciliation, audit readiness, and operational monitoring.                                                                                           |

## Common use cases

The Cross River stablecoin payments support a range of payment and settlement scenarios across industries.

| Use case                  | Description                                                                                                                                       |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Network settlements**   | Support near real time settlement between program participants without reliance on legacy clearing windows                                        |
| **Merchant payouts**      | Distribute funds to merchants, suppliers, or platform participants using stablecoin payments on supported networks                                |
| **Treasury movements**    | Move liquidity between internal accounts or affiliated entities with onchain settlement and USD-based reporting                                   |
| **Cross border payments** | Facilitate international value movement using stablecoins, with settlement occurring on supported blockchain networks (not yet live)              |
| **On and off ramps**      | Enable fiat-to-stablecoins and stablecoins-to-fiat flows through Cross River regulated ramp infrastructure to support payout and pay-in workflows |
| **Program funding**       | Fund card, prepaid, or digital asset programs using stablecoin payments with integrated reconciliation                                            |

## Designed for scale

The Cross River stablecoin payments platform is designed to support enterprise level operations and growth.

| Design principle            | Description                                                                                                 |
| --------------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Unified operating model** | Built on Cross River regulated banking infrastructure with integrated onchain settlement                    |
| **Continuous availability** | Designed to support continuous (24/7/365) operation, subject to network conditions and operational controls |
| **Institutional controls**  | Operated within established compliance, risk management, and operational oversight processes                |

[Learn about our onchain payment APIs](docId\:lnZ2VwmXVahA4yP7mayED)&#x20;

[title] Loan seasoning, sale or retention
[path] Lending/

## Loan seasoning

After [funding](docId\:BAB0iNlUG2tAGYrLlkjnM), every loan enters a seasoning period. **Selling** manages this period. Cross River provides a range of warehousing facilities, with customized pricing to fit your needs.

## Loan sale or retention

At [loan origination](docId\:XC9WSry-X6scsfKQZ1sZ6) you decide either to purchase the loan back at the end of the seasoning period or have Cross River retain the loan on its books.&#x20;

The following options are available:

- **Purchase:** The MPL repurchases the loan from Cross River. This process is managed by you via the Lending Selling solution, which offers a user-friendly interface and API integration for efficient loan buyback transactions and investor management. 
- **Retention:** Alternatively, Cross River retains the loan, adding it to its portfolio.

## Loan purchase

### The loan purchase process

Loans follow a multi-stage journey through different systems before they are ready for investor purchase:

1. **Origination in Arix**: Loans are initially created and originated in the **Arix** system, which handles the borrower application, underwriting, approval, and funding processes. Arix creates the loan and disburses it to the borrower.&#x20;
2. **Transfer to selling**: Once Arix successfully funds a loan, it is transferred to the **Selling** system (the system documented here). The Selling system serves as the transaction and accounting hub that manages the loan sale process from the lending partner to the investor.
3. **Purchase process**: Within the Selling system, loans progress through various statuses (Pending → In Seasoning → Ready for Purchase) until they meet all criteria for investor purchase. The purchase process, which this documentation describes, is the final step where ownership and financial settlement occur.

**System context**: The purchase process operates entirely within the Selling system. By the time a loan reaches this stage, it has already been:

- Originated and funded in Arix
- Synced to the Selling system with all relevant loan details
- Validated for completeness and accuracy
- Assigned to an investor per the applicable contract terms
- Allowed to complete any required seasoning period (if applicable)

The Selling system maintains its own loan records synchronized with Arix, but operates independently for the sale transaction. This separation lets the origination and sale processes to function in parallel without dependencies.

### How it works

Selling processes loan purchases in batches, not individually. A batch groups multiple loans that share characteristics like issuing bank, loan type, and purchase date.

This batch-based approach provides several key benefits:

- **Efficiency**: The system processes multiple loans simultaneously, reducing overall processing time
- **Consistency**: The system evaluates all loans in a batch against the same business rules and validation criteria
- **Traceability**: Each batch receives a unique identifier that allows all stakeholders to track the purchase from initiation through completion
- **Transaction Safety**: If issues arise during processing, the batch framework ensures loans can be retried without duplicate financial transactions

### Financial transfers involved

When you purchase a loan, the system orchestrates multiple financial transfers between accounts. This compensates the lending partner and records the transaction in the investor's books. These transfers typically include:

1. **Principal transfer**: The system transfers the outstanding principal balance from the partner's account to the investor's loan asset account.
2. **Interest transfer**: The system collects any accrued interest up to the purchase date from the partner.
3. **Fee transfers**: The system processes applicable fees like volume fees or origination fees according to contract terms.

The exact combination and amounts of these transfers depend on the loan type (HFS, LTHFS, RET), the specific contract terms between the partner and investor, and the loan's current state.

### Double-entry accounting principles

All financial transfers in the purchase process adhere to **double-entry accounting** principles, meaning every transaction involves both a debit and a credit to maintain balanced books:

- **Debit accounts** represent where funds are coming from (typically partner accounts or the investor's purchase account)

For example, when purchasing the principal of a loan:

- The partner's principal account (or the investor's designated purchase account) is **debited** for the loan amount
- The investor's loan source account is **credited** with the same amount, recording the new asset

This dual-sided approach ensures complete financial transparency and enables both parties to reconcile their records independently. The system requires both accounts to be properly configured before a purchase can proceed, preventing incomplete or unbalanced transactions.

### Process validation and safety

Before any funds are transferred, the system performs comprehensive validations:

- **Date validation**: Purchases can only occur on Federal business days
- **Account verification**: All required accounts must be properly configured and accessible
- **Balance confirmation**: The system verifies sufficient funds are available in the debit accounts (though this can be configured per business needs)
- **Loan eligibility**: Loans must be in an eligible status (typically "Ready for Purchase" or "Purchase Requested")

These safeguards protect both partners and investors from erroneous transactions and ensure regulatory compliance.

### Monitoring and transparency

Throughout the purchase process, Selling provides real-time visibility into batch status:

- `Pending`: Loans queued for purchase
- `In Progress`: Transfers being executed
- `Completed`: Successfully purchased loans
- `Failed`: Loans requiring attention due to validation or processing errors

Both partners and investors can monitor batch progress through the API or user interface, with detailed reporting available at both batch and individual loan levels. Post-purchase receipts and reports provide a complete audit trail for accounting and compliance purposes.

### System integration points

While the purchase process operates within the Selling system, it interacts with several other systems:

- **Arix**: Source of loan origination data (read-only during purchase)
- **Core banking system (COS)**: Executes the actual fund transfers between accounts
- **Accounting services**: Provides account balance information and manages account configurations
- **Contract management**: Supplies the business rules governing which loans can be purchased and under what terms



## Next step

- [Servicing data submission and reconciliation](docId\:sJ6yahWlYzkEDLo6oiJf3)&#x20;


[title] Loan returns
[path] Lending/

## What happens in Arix when a rail is returned

### What triggers a return in Arix?

A return is an event that causes a rail that was initially disbursed to be returned to the loan's available funds, making them eligible for re-disbursement.&#x20;

A return can happen for different reasons on different rails (receiving FI not accepting an ACH, check expiring, etc.).  For some rails, a return can be explicitly requested via the [Return rails](docId\:cQnvaS7kTizOjddJIbThO) API.

### Rail status

When a rail is returned, the status of the rail is automatically updated to **Returned**.

### Loan status

The loan status changes based on these conditions:

- **Returned**
  If all rails were returned, then the loan automatically moves into the status, `Returned`, regardless of the previous loan status.
- **NotFullyFunded**
  If at least one rail was returned, the loan moves into the status, `NotFullyFunded`. See the [enums](docId\:hpq_QWOAKV9JprqwkFR1I) reference document for a list of the loan and rail statuses.

### Webhooks

These webhooks are triggered for the rail and loan statuses:

- `LoanStatusUpdated` (if the return causes the loan status to change)
- `RailUpdated`

### Loan funding

The loan funding information is updated accordingly in these fields:

- `ProcessedRails`
- `ReturnedRails`

## Investigating returned rails

You can call [Get/LoanDetails](docId:6ZfJGj39xq4RWRWzmXJCD) to view the details on a returned rail by including returned rails in the field request. The update includes the NACHA return reason code, the return trace number, and the original trace number.

## Resubmitting a returned rail

To resubmit a returned rail, call [PUT/FundingInfo](docId\:GMP-Bavby6sAgCbQlLsJM) with the correct details.

## Next steps

- [Loan seasoning, sale or retention](docId\:DoBshm4E1JoFa8FUVqAPh)&#x20;
- [Servicing data submission and reconciliation](docId\:sJ6yahWlYzkEDLo6oiJf3)&#x20;

[space] Ops and admin (/ops-and-admin)

[title] Set up SFTP
[path] /

## Why use SFTP

When you exchange sensitive information in a file format with Cross River, we require you to use Secure File Transfer Protocol (SFTP). Use SFTP either to send files or to download them from Cross River, according to your needs and ours. In some cases, you or we will encrypt these files, particularly if they contain any Personal Identifying Information (PII).

SFTP lets you securely send and receive sensitive files and reports using a folder assigned specifically to your business on a secure server. Upload and download files through that folder or subfolders of that folder, as per your specific needs.

## Why use encryption

Encrypting files adds an additional layer of protection. Only authorized personnel with the correct key will be able to decrypt the encrypted file. In Cross River we use PGP encryption.

## Get started

There are several steps to getting you up and running with our SFTP server.

:::::WorkflowBlock
::::WorkflowBlockItem
**You complete the IP Access Request for Cross River SFTP Services form (from your RM).**
If you need to share files with Cross River, your Relationship Manager will send you an IP Access Request for CRB SFTP Services form. Among other information, you need to provide the static public IP addresses you'll use to access the SFTP folder, and a PGP public key for encrypting and decrypting files. Send the completed form back to your Relationship Manager

:::hint{type="warning"}
**IMPORTANT**
Cross River will allowlist only 5 IP addresses for you, so take that into account.
The IP addresses must be static. Therefore, you need to proxy anything that is not static on your end.

:::
::::

::::WorkflowBlockItem
**We set up your SFTP folder structure.**
Once Cross River has your details, our IT engineering department creates a standard set of folders and sub-folders for you. This unique path is for your business only. No other partner can access it. IT engineering sends you an email with the information you need to access the folders. The email includes a link to your credentials. Cross River does not save your password!

:::hint{type="warning"}
**IMPORTANT**
The link is only good for a few days, after which you'll need to request a password reset if you don't use it.
The credentials also become invalid if more than two people access the lin&#x6B;**.**
:::
::::

:::WorkflowBlockItem
**Test SFTP upload.**
If you will be supplying files to Cross River, your IT department should set up a service account with an automated process for uploading those files to your SFTP folders. We strongly recommend that you test this out before you try to send real data. Contact your  with any questions or issues or open a ticket with your first line support.
:::

:::WorkflowBlockItem
**Set up PGP to send or receive files from Cross River. (This step is only necessary if you are sending or receiving PII. Please check with your RM.)**
If you need to send Cross River files, we will first send you our PGP public key for use in encrypting those files.
You should have already sent Cross River your PGP public key to receive files from us.
:::

:::WorkflowBlockItem
**Share your data.**
Once your SFTP folder is set up and your process is in place you can begin sharing files with us. Your  tells you if there is something more specific you need to do to receive reports, or how to prepare data to send to us.
:::
:::::

## Specific Reports

Learn more about receiving or sending reports and files for:

- [Accounts and payments](docId:_Y-8nEbvhN9E43-PV3YWj)&#x20;
- [Card payments](docId\:bvd4wcnis6ZULo9cP6S5K)
- [Credit risk](docId\:jKTOt5UGr29dnMBqS4fQm)&#x20;
- [Lending](docId\:Ary2An4hZY3uRKj7KFDFC)&#x20;
- [XML batch payments (ISO 20022)](docId:6-zq8c8-CWNZG8BXLhILx) &#x20;




[title] Card payment reports
[path] Reports/

## Cross River card payment reports

To assist partners with financial settlement and reconciliation, Cross River provides consolidated daily reports of payment transaction and chargeback activity.

In finance and accounting, financial settlement and reconciliation reporting are essential. Reporting involves verifying and balancing financial transactions. This ensures control, accuracy, and transparency in financial records.

Use daily reports to:

- Track the flow of money in and out of a business
- Identify any errors or discrepancies in financial records
- Prepare financial statements
- Comply with regulatory requirements
- Stay on top of chargeback status

## Benefits

- Address potential risks
- Optimize cash flows
- Make strategic decisions in a timely way based on the organization’s current financial position.

## Daily report types

- [Settlements (detailed)](docId\:ID2xJOHUQ_SaDaUgT9Xhv)
- [Settlements (summary)](docId\:gX6X18R6oXhV8ckidsmLM)&#x20;
- [Exceptions](docId\:IiJ8_BmT0qfpmP_dJjAHm)
- [Chargebacks](docId\:GjHgMGK1dOOQdccLsZg-o)&#x20;


[title] COS Explorer
[path] /

## What is COS Explorer

COS Explorer is a web console that helps you manage banking activities in the Cross River system. With COS Explorer, you can:

- Create and manage customer records
- Handle account details
- Process and verify payments
- Complete routine tasks without relying on Cross River Operations

The COS Explorer web console has both sandbox and production versions.

For more information on how to become a Cross River Partner, please reach out to your Partnership Manager or send an email to [clientmanagement@crossriver.com.](mailto\:clientmanagement@crossriver.com)&#x20;

## Access and user management

- You [provide](docId\:pd0J5p2HwghkS-Jt9JrLy) a list of static IPs to be whitelisted/allowlisted and specify 2 people to be your organization admin users.
- Your organization admins [create and manage](docId\:Ky3rxaooJJDsyQmVmfD6P) the rest of your organization's users.

## COS Explorer URLs

Production: [https://api.crbcos.com/explorer2/](https://api.crbcos.com/explorer2/)

Sandbox: [https://sandbox.crbcos.com/explorer2/](https://sandbox.crbcos.com/explorer2/)

## Learn more

- ****[COS Explorer IP whitelist](docId\:YP_CZ44UkO-F5j5wESCav)&#x20;
- [COS Explorer organization access](docId\:pd0J5p2HwghkS-Jt9JrLy)&#x20;
- ****[COS Explorer first-time access](docId\:JwSEUG3ELF_gXLhy6T9KI)&#x20;
- [COS Explorer access troubleshooting](docId\:BoVOPz7Pdg2zUCg19UaMc)&#x20;
- [COS Explorer user management](docId\:Ky3rxaooJJDsyQmVmfD6P)&#x20;

## Tutorials

:::Iframe{iframeHeight="0" code="<div class=&#x22;v-spacing-fix&#x22;><div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Customer management</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;></p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/customer-management/create-customer&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-o9BonA46d9Pgd2dY1gYck-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Create customer</h4><p></p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/customer-management/find-a-customer&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-o9BonA46d9Pgd2dY1gYck-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Find a customer</h4><p></p></div>&#xA;        </div></a>&#xA;      </div>&#xA;<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Accounts</h2>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/accounts&#x22;><div class=&#x22;category flex items-center v-spacing-fix-horiz&#x22;>&#xA;      <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-_o_Bkd0oifF7sIa9NS_d9-20240910-163105.png&#x22;/></div>&#xA;      <div><h4>Accounts</h4></div>&#xA;    </div></a>&#xA;    </div> &#xA;<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Instant payments</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;></p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/instant-payments/send-an-instant-payment&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-U3JmJpNNkm4VJ_aaIqQ-J-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>Send an instant payment</h4><p></p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/instant-payments/find-an-instant-payment&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-U3JmJpNNkm4VJ_aaIqQ-J-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Find an instant payment</h4><p></p></div>&#xA;        </div></a>&#xA;        <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/instant-payments/manage-return-flow&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-U3JmJpNNkm4VJ_aaIqQ-J-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Manage return flow</h4><p></p></div>&#xA;        </div></a>    &#xA;      </div> &#xA;  <div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>International payments</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;></p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/international-payments&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-RMUoFxLXnzLTHXVyTmPd0-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Send an international payment</h4><p></p></div>&#xA;        </div></a>&#xA; </div>&#xA;<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>ACH</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;></p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/ach/send-an-ach&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-NDnV6bvaWMtbhT250MdPS-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>Send an ACH</h4><p></p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/ach/cancel-an-ach&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-NDnV6bvaWMtbhT250MdPS-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Cancel an ACH</h4><p></p></div>&#xA;        </div></a>&#xA;   <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/ach/find-ach-payment&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-NDnV6bvaWMtbhT250MdPS-20240910-163105.png&#x22;/></div>&#xA;            <div><h4>Find ACH payment</h4><p></p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/ach/manage-reversal-flow&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-NDnV6bvaWMtbhT250MdPS-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Manage reversal flow</h4><p></p></div>&#xA;        </div></a>&#xA;      </div>         &#xA;<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Wires</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;></p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/wires/send-a-wire&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Send a wire</h4><p></p></div>&#xA;        </div></a>&#xA;        <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/wires/find-a-wire&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Find a wire</h4><p></p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/wires/cancel-a-wire&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Cancel a wire</h4><p></p></div>&#xA;        </div></a>&#xA;     <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/wires/investigation-requests&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Investigation requests</h4><p></p></div>&#xA;        </div></a>&#xA;	<a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/wires/originate-drawdown&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Originate drawdown</h4><p></p></div>&#xA;        </div></a>&#xA;     	<a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/wires/authorization&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Authorization</h4><p></p></div>&#xA;        </div></a>     &#xA;      <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/wires/return-requests&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Return requests</h4><p></p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/wires/create-payment-template&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-9dZtlvnk67xpXiqrZ09Sr-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Create payment template</h4><p></p></div>&#xA;        </div></a>&#xA;        </div> &#xA;<div class=&#x22;v-spacing-fix&#x22;><h2 class=&#x22;h2 mt-10&#x22;>Book transfer</h2>&#xA;<p class=&#x22;ab-paragraph w-full mt-2 leading-7 break-words text-gray-600 dark:text-gray-300&#x22;></p></div>&#xA;<div class=&#x22;products-grid&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/tutorials/cos-explorer/book-transfer&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-_o_Bkd0oifF7sIa9NS_d9-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Book transfer</h4><p></p></div>&#xA;        </div></a>		&#xA;  </div></div>"}

:::

****






[title] COS Explorer organization access
[path] COS Explorer/

## Prerequisites﻿ for organizational access

To use COS Explorer, your organization must first complete these steps:

1. **Prepare your list of static IP addresses**
   Your organization must use static IPs﻿ to access COS Explorer. You need this list when you request access. Speak with your internal IT support if you need help identifying your static IPs.
   Learn more about [COS Explorer IP whitelist](docId\:YP_CZ44UkO-F5j5wESCav).
2. **Submit your complete request**
   Your  provides you with a COS Explorer enrollment form to request access. On this form you must provide the list of static IPs you prepared, and details for at least 2 admin users to manage your organization's access including names, phone numbers, and email addresses. Submit the form to your RM.
   Cross River creates accounts for your *admin users*.
3. **Set up your users**
   Your admin users create accounts for other users in your organization.
   Learn about [COS Explorer user management](docId\:Ky3rxaooJJDsyQmVmfD6P).&#x20;

:::hint{type="info"}
Once a user has finished this initial access procedure, they can access COS Explorer from these links:

- Sandbox: [https://sandbox.crbcos.com/explorer2/](https://sandbox.crbcos.com/explorer2/)
- Production: [https://api.crbcos.com/explorer2/](https://api.crbcos.com/explorer2/)
:::


[title] Daily account activity
[path] Reports/Accounts and payments/

## Daily account activity report

This report lets you see all the money movement for a single given master account.

You can use this report to reconcile between what you requested from the Cross River Operating System (COS) and what COS actually processed.

## Report in detail

The table below shows the different columns included in the report and explanations of the information each represents.

| Column              | Description                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Id                  | Cross River internal ID                                                                                                                                                                                                                                                                                                                                                                                                  |
| TransactionId       | Unique identification number for the related core transaction                                                                                                                                                                                                                                                                                                                                                            |
| TraceNumber         | A unique number assigned to the transaction by COS                                                                                                                                                                                                                                                                                                                                                                       |
| Status              | Transaction status                                                                                                                                                                                                                                                                                                                                                                                                       |
| TransactionType     | - **Debit**
- **Credit**                                                                                                                                                                                                                                                                                                                                                                                                 |
| ActivityType        | * **Internal**. Transaction between two subaccounts under the same master account
* **External.** Transaction between two master accounts                                                                                                                                                                                                                                                                                |
| Source              | - **Transaction**. Transactions first soft post, remaining as status pending for the day, and later hard post during the nightly settlement process. Once hard posted, a transaction receives a sequence number and the system calculates the running balance.
- **Memo post**. Activity from memo posts are a temporary debit or credit on the account. Commonly they will be removed and then posted as a transaction. |
| MasterAccountNumber | Master account affected by the transaction                                                                                                                                                                                                                                                                                                                                                                               |
| SubAccountNumber    | Subaccount affected by the transaction                                                                                                                                                                                                                                                                                                                                                                                   |
| TransactionCode     | What kind of transaction took place:<br />- Incoming ACH
- Outgoing ACH
- Account Transfer
- Fee
- Fee Refund
- Deposit
- Withdrawal
- Interest
- Misc Credit
- Misc Debit
- Incoming Wire
- Outgoing Wire
- Check
- Cash
- Reversal
- Adjustment
- Sale
- Card Auth
- Payment
- Refund
- ATM Transaction
- Zelle Debit
- Zelle Credit
- RTP Debit
- RTP Credit                                                          |
| Description         | Transaction description                                                                                                                                                                                                                                                                                                                                                                                                  |
| Rail                | What payment rail was used (for example, ACH, Wires, internal)                                                                                                                                                                                                                                                                                                                                                           |
| RailId              | A combination of the transaction code and the payment ID. No value appears in this column for internal transactions.                                                                                                                                                                                                                                                                                                     |
| Amount              | Amount of funds transacted in positive integral cents. For example, $1.00 appears as 100, whether a credit or a debit.                                                                                                                                                                                                                                                                                                   |
| Balance             | Balance after the transaction in positive integral cents. For example, $1.00 appears as 100.                                                                                                                                                                                                                                                                                                                             |
| SequenceNumber      | COS assigns a posting sequence number to each account activity record. The sequence number is inserted when the transaction posts.                                                                                                                                                                                                                                                                                       |
| ProductId           | Product identifier for the account involved in the transaction.                                                                                                                                                                                                                                                                                                                                                          |
| PartnerId           | Your unique identification number as a partner in the Cross River system                                                                                                                                                                                                                                                                                                                                                 |
| ExecutedAt          | Date and time the transaction was executed                                                                                                                                                                                                                                                                                                                                                                               |
| PostingDate         | Day, month and year of the posting. The time is always midnight (12:00 am) Eastern time.                                                                                                                                                                                                                                                                                                                                 |
| PostedAt            | End of day settlement date and time, showing when the transaction actually posted                                                                                                                                                                                                                                                                                                                                        |
| CreatedAt           | Date and time the transaction record was created in the system                                                                                                                                                                                                                                                                                                                                                           |
| LastModifiedAt      | Date and time of the last change to the resource record                                                                                                                                                                                                                                                                                                                                                                  |
| Flags               | An additional identifier added to certain transaction scenarios                                                                                                                                                                                                                                                                                                                                                          |

## Sample Report

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/BQ2aerJtcZzbcf58dSadv_yourcompanyname-daily-account-activity-yyyy-mm-dd-hhmmss.csv" label="[YourCompanyName]_Daily_Account_Activity_[YYYY]_[MM]_[DD]_[HHMMSS].csv"}


[title] Daily exceptions
[path] Reports/Card payment reports/

## Report description

The daily exceptions report lists the transactions that contain irregularities.

This report includes unprocessed, incomplete, interrupted, or suspicious transactions. It also contains transactions with unusual balances. In addition, this report could hold mismatches or conflicts between data in the Cross River and the card networks. These could be, for example, transaction status, amounts, and so forth.

Unlike the daily settlement report, where you trigger each transaction, exceptions are triggered by another person, event or action, and are unexpected.

Cross River generates a daily exception report every day that we settle transactions with merchant partners.

You receive this report using the Secure File Transfer Protocol (SFTP).  [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25) lets you receive and send information securely.

This report is generated automatically, and pushed to your assigned subfolder on the secure server, where you access it.

:::hint{type="warning"}
**IMPORTANT**
SFTP must be set up *before* you create a report request with Cross River’s Data Team. This allows the reporting team to automate the delivery of Settlement and Reconciliation reports to the appropriate folders.
:::

## Report distribution

Recipients include user-partners only.

## Report structure

Detailed daily exception reports have 2 structures: *basic* and *expanded*.

The basic report filename uses this convention: **PartnerName\_CRBPayments\_Exceptions\_Itemized\_YYYY\_MM\_DD**

The expanded report filename uses this convention: **PartnerName\_CRB\_Settlement\_Exceptions\_Expanded\_YYYY-MM-DD**

### Basic report structure

| No. | Field                          | Default | Description                                                                     |
| --- | ------------------------------ | ------- | ------------------------------------------------------------------------------- |
| 1   | ExceptionID                    | ✓       |                                                                                 |
| 2   | ExceptionCode                  | ✓       |                                                                                 |
| 3   | OriginalTransactionRequestId   | ✓       | ID of the automatically created transaction associated with this settlement day |
| 4   | Network                        | ✓       |                                                                                 |
| 5   | ResponseCode                   | ✓       |                                                                                 |
| 6   | TransactionType                | ✓       | - Pull
- Push
- Chargeback
- Reversal
- Adjustment                              |
| 7   | ResponseDescription            | ✓       |                                                                                 |
| 8   | TransactionRequestedAt         | ✓       |                                                                                 |
| 9   | OriginalTransactionRequestedAt | ✓       |                                                                                 |
| 10  | CreditCardId                   | ✓       |                                                                                 |
| 11  | RetrievalReference             | ✓       |                                                                                 |
| 12  | TraceNumber                    | ✓       |                                                                                 |
| 13  | Destination\*                  | ✓       | * For AFT: Settlement
* For OCT: Network                                        |
| 14  | TransactionAmount              | ✓       |                                                                                 |
| 15  | TransactionIndicator           | ✓       |                                                                                 |
| 16  | OriginalCurrency               | ✓       |                                                                                 |
| 17  | InterchangeFee                 | ✓       |                                                                                 |
| 18  | InterchangeFeeIndicator        | ✓       |                                                                                 |
| 19  | InterchangeCategoryDescriptor  | ✓       |                                                                                 |
| 20  | EstimatedNetworkFee            | ✓       |                                                                                 |
| 21  | IntegrityNetworkFee            | ✓       |                                                                                 |
| 22  | IntegrityNetworkFee            | ✓       |                                                                                 |
| 23  | SettlementDate                 | ✓       |                                                                                 |
| 24  | CutoffDate                     | ✓       |                                                                                 |

### Expanded report structure

| No. | Field                          | Default | Description                                                                                                                                                                           |
| --- | ------------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1   | ExceptionID                    | ✓       |                                                                                                                                                                                       |
| 2   | ExceptionCode                  | ✓       |                                                                                                                                                                                       |
| 3   | OriginalTransactionRequestId   | ✓       | ID of the automatically created transaction associated with this settlement day                                                                                                       |
| 4   | Network                        | ✓       |                                                                                                                                                                                       |
| 5   | ResponseCode                   | ✓       |                                                                                                                                                                                       |
| 6   | TransactionType                | ✓       | - Pull
- Push
- Chargeback
- Reversal
- Adjustment                                                                                                                                    |
| 7   | ResponseDescription            | ✓       |                                                                                                                                                                                       |
| 8   | TransactionRequestedAt         | ✓       |                                                                                                                                                                                       |
| 9   | OriginalTransactionRequestedAt | ✓       |                                                                                                                                                                                       |
| 10  | CreditCardId                   | ✓       |                                                                                                                                                                                       |
| 11  | RetrievalReference             | ✓       |                                                                                                                                                                                       |
| 12  | TraceNumber                    | ✓       |                                                                                                                                                                                       |
| 13  | Destination\*                  | ✓       | * For AFT: Settlement
* For OCT: Network                                                                                                                                              |
| 14  | TransactionAmount              | ✓       | Transaction Amount                                                                                                                                                                    |
| 15  | TransactionIndicator           | ✓       | - **D** - Debit the merchant
- **C** - Credit the merchant                                                                                                                            |
| 16  | OriginalCurrency               | ✓       |                                                                                                                                                                                       |
| 17  | InterchangeFee                 | ✓       |                                                                                                                                                                                       |
| 18  | InterchangeFeeIndicator        | ✓       |                                                                                                                                                                                       |
| 19  | InterchangeCategoryDescriptor  | ✓       |                                                                                                                                                                                       |
| 20  | EstimatedNetworkFee            | ✓       |                                                                                                                                                                                       |
| 21  | IntegrityNetworkFee            | ✓       |                                                                                                                                                                                       |
| 22  | IntegrityNetworkFee            | ✓       |                                                                                                                                                                                       |
| 23  | SettlementDate                 | ✓       | CRB Settlement Date                                                                                                                                                                   |
| 24  | CutoffDate                     | ✓       |                                                                                                                                                                                       |
| 25  | CardholderFirstName            | ✓       | Cardholder First Name                                                                                                                                                                 |
| 26  | CardholderLastName             | ✓       | Cardholder Last Name                                                                                                                                                                  |
| 27  | IssuerCountryCode              | ✓       | Card issuer country code                                                                                                                                                              |
| 28  | SystemTraceAuditNumber         | ✓       | A unique Cross River reference number created in card transactions                                                                                                                    |
| 29  | RetrievalReference             | ✓       | The transaction identifier vs. all parties, including the card networks. Using this number, the partner can directly reach out to the network to get more info about the transaction. |
| 30  | StatementDescriptor            |         | An arbitrary string attached to the transaction, often useful for displaying to information users                                                                                     |
| 31  | CardType                       | ✓       | Debit/Credit/Prepaid                                                                                                                                                                  |
| 32  | Credit Card Id                 | ✓       | Token for the signed-up card. The partner gets this Id upon first-time card sign-up, per each card holder.                                                                            |
| 33  | First6                         | ✓       | First 6 digits of the payment card                                                                                                                                                    |
| 34  | Last4                          | ✓       | Last 4 digits of the payment card                                                                                                                                                     |

## Related topics

- [Daily settlement (detailed)](docId\:ID2xJOHUQ_SaDaUgT9Xhv)&#x20;
- [Daily settlement (summary)](docId\:gX6X18R6oXhV8ckidsmLM)&#x20;
- [Daily chargeback report](docId\:GjHgMGK1dOOQdccLsZg-o)
- [Send funds to payee (push) API](docId\:q59J0rxBvNfQ-y92-TASq)&#x20;
- [Request funds from payer (pull) API](docId\:KVpHbesGRkxsFI6YyS8zD)&#x20;


[title] Lending reports
[path] Reports/

To access the SFTP:

1. [Set up SFTP with Cross River](docId\:vS2CkU9_W5BQQlbjsBq25).&#x20;
2. Access your SFTP folder using the credentials and information you receive from your Relationship Manager.

:::hint{type="warning"}
To transfer the files securely, you must use a client that supports SSH with the following public-key algorithms:

- RSA
- sha2 521
- sha2 384
- sha 256
:::

These loan reports are available:

- [Servicing](docId\:TwtdRN1QeSyjeTBmoegpI)
- [Transaction](docId\:llhNxjQGt5Ph4gK_R8OcO) &#x20;


[title] Cross River access troubleshooting
[path] Org management portal/

When logging in to a Cross River application, there are some common issues that might crop up.&#x20;

## Site cannot be reached

If you log in to a Cross River application for which you have access and get following error screen, you are blocked by the firewall.

![](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j-Kc3YWS0Zb310IMKY0uVt--20250123-122443.png)

To unblock your access:

1.   Contact your internal IT department to see if your organization enforces firewall rules for outbound traffic. If they do, ensure that your access to the application is not blocked.
2.   If there are no firewall rules for outbound traffic, contact your internal IT department to make sure you're connecting to the Cross River application portal from an approved IP address. If you need to register more IP addresses, send an email to [customer.support@crossriver.com](mailto\:customer.support@crossriver.com).

## Multifactor authentication

### Invalid MFA code

If you enter an invalid MFA code, a red message under the code field asks you to try again. A code could be invalid because:

- **Code timeout**
  If the code timed out before you clicked **Continue** (and is therefore invalid), you need to generate a new code. Some authenticator apps indicate the time remaining for the code to be valid by showing a countdown circle to the right of the account name and MFA code.
- **Wrong code**
  If you have the authenticator app set up for multiple Cross River environments or applications, double check that you entered the correct code for the application you are entering.

:::hint{type="info"}
If you are using the authentication app for more than one environment or application, we recommend that you give a meaningful name to each MFA connection.
:::

### Reset multifactor authentication

If you already have MFA configured:

1. Log in to [https://idptest.crbcos.com/](https://idptest.crbcos.com/)**.&#x20;**
2. Click **Account settings**.
3. Click **Reset your MFA device**.

If your current MFA is SMS, you can enable MFA with your authenticator app.

### Reset MFA if you change phones

If you need to use a new device:

1. Download the authenticator app to your new phone.
2. Log in to the Cross River application and authenticate using your old phone.
3. Create a new user for your new phone. If you can't create a user or if you don't succeed in authenticating with your new phone, ask your organization admin to reset the MFA. You'll go through the initial [access process](docId\:JwSEUG3ELF_gXLhy6T9KI) again.

If you lose your phone you'll need to [authenticate with a recovery code](docId\:WJspnXy9wpWu5rlxVOHyp) and then reset your MFA for your new phone.

### Create new recovery codes

You can also create new multifactor authentication recovery codes from the reset screen. Note that you are only allowed to create new recovery codes 10 times.

1. Click **create new multi-factor authentication recovery codes**.
2. The Recovery Codes page opens and you can copy or download your 10 new recovery codes.

### Use a recovery code

If you do not have access to your multifactor (2-factor) authenticator, you can log in using one of your recovery codes.

1. Log in as usual.
2. On the multifactor authentication page, select the option to use a recovery code as your authentication option.
3. Enter one of your recovery codes in the text box. Once you've used it, the recovery code cannot be reused. To avoid future confusion, we recommend that you mark the recovery code as used.

## Forgot password

1. In the login screen, click **Forgot password?** and enter your email.
2. Generate a 6-digit authentication code from your authenticator app and enter it in the field.
3. We send you a *Forgot Password* email. Click **Reset Password** in the body of the email.
4. In the Password Reset page that opens, enter a new password, click **Reset Password**, and **Continue to the application**.

## Account lockout

If you enter the wrong password for your username 5 times, the system locks your account for approximately 5 minutes. If after 5 minutes, you are still unable to access your account, contact [customer.support@crossriver.com](mailto\:customer.support@crossriver.com).


[title] Customer onboarding
[path] /

## Create a customer record

Manage your customer information in the Cross River operating system (COS) using either APIs or [COS Explorer](docId\:tmGNa7cLKpnBTh7gSkEFA). This information includes basic details needed to open a bank account or use a credit card, as well as more specific data about the customer, as needed. We call this a *customer record*.

Before you can open a deposit account or create a card you must create the customer record, sometimes called *onboarding*.

The customer onboarding process includes creating a [customer record](docId\:EDJywbh2OgbvTQleF_QZZ) with relevant customer information.&#x20;

## Add other customer information

- [Add identification](docId\:QjfGSujVfqoxCpJiqzLfF)&#x20;
- [Add beneficial owner](docId\:EOH9pzYARQnyhe9mh979u)&#x20;

## Error codes

See [COS system error codes](docId:5SkxeUHp4B9u0UWcqJmBz), along with lots of other reference information, on the COS reference codes page.

## Tutorials

See our tutorials to learn how to:

| Through APIs                                            | Through COS Explorer                               |
| ------------------------------------------------------- | -------------------------------------------------- |
| [Onboard a customer](docId\:iXWQHkcTI4dw4d_LoutGh)      | [Create a customer](docId\:FfHFeajqLBBvqME-M5lwl)  |
| [Add a beneficial owner](docId\:dHPmHjC04E5WUq34V59Iu)  | [Find a customer](docId\:Le1qW4rQpCkm1pAGeNNFM)    |
| [Add identification](docId\:Gk2cTwkzVsjNTRDhQ67E5)      |                                                    |
| [Open an account](docId\:ZtQ-EXuMODfi9pu3z10FW)         |                                                    |
| [Create a card](docId\:RZZRD7am62-KTyv9G1n9-)           |                                                    |


[title] Daily Wire payments
[path] Reports/Accounts and payments/

## Report description

Using the Cross River Operating System (COS) [wires APIs](docId\:Mm_yqgvcWNtsGDLnNX-og), you can both originate and receive wire transfers through the Fedwire system. The level of information required varies depending on whether the transaction is purely domestic or international. Domestic wire payments require less information.&#x20;

The Daily Wire Payment File Drop By Partner report lets you see all wire payments for a single given Cross River Operating System (COS) partner.

You can use this report to reconcile between what you requested from COS and what COS actually processed.

[Learn more about wires](docId\:hFNmQa22W2BNqAJijpAVT)&#x20;

## Report  in detail

The table below shows the different columns included in the report and explanations of the information each represents.

| Column                   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Id                       | The unique payment ID in the Cross River system assigned when the payment is sent                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| AccountNumber            | Partner account or subaccount number used in the transaction                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| CoreTransactionId        | The payment-related core transaction ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ReferenceId              | Unique Cross River reference ID for the payment                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ClientBatchId            | Identifier used to group related client payments in batch submissions, if you originate the client batch. Otherwise blank.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ClientBatchSequence      | Sequence number of the payment in the batch, if you originate the client batch. Otherwise blank.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| FedBatchId               | Unique identifier in GUID format for the Federal Reserve batch the payment went out on (or came in on for inbound payments)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| FedBatchSequence         | Sequence number of payment in the Federal Reserve batch                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Direction                | The direction of this transfer:<br />* **Inbound**: a payment received from another bank
* **Outbound**: a payment being sent to another bank                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Source                   | How the payment originated:<br />* Api
* Phone
* Fax
* Email
* File
* Partner Portal (when a partner user enters a payment request in COS Explorer)
* Ops Portal (when Cross River Ops enters a payment request in COS Explorer)
* MQ (for inbound transfers)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Status                   | The status of the payment at the time the report was generated:<br />* **Created**: the payment has been received but hasn’t been processed yet. This status will only appear briefly.
* **Pending**: the payment is waiting to be batched and sent to the through the Fedwire system.
* **Hold**: the payment is currently being held and is being reviewed by Cross River's Operations team.
* **Batched**: the payment has been batched, and CRB is carrying out a final review before the payment is sent in a batch file through the Fedwire system.
* **Processing**: For inbound payments, we are attempting to post the payment to the receiving account. For outbound payments, the payment has been sent to the FRB, but has not been posted yet. An outbound standard payment may remain in this status for a day or more.
* **Completed**: the payment has been posted and accepted by the FRB (in the case of outbound payments). This is a final status.
* **Canceled**: Indicates that an outbound payment has been canceled at the Partner’s request. A payment can only be canceled while either pending or on hold. This is a final status.
* **Rejected**: Cross River's Operations team was unable to process the payment and has rejected it. For inbound payments, the payment request is returned to the originating bank. This is a final status. |
| PaymentType              | A description of the payment type:<br />* **Transfer**: New payment originating from either Cross River or another bank. Most payments are of this type.
* **Drawdown**: Request for a drawdown
* **DrawdownResponse**: Payment is a response to a drawdown request
* **ServiceMessage**: An informational message transferred between banks and not an actual payment. This is used when there’s a relationship to a previously processed wire.
* **Reversal**: Reversal of a previously sent wire payment                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Posting                  | Status of the related core transaction for the payment. Values include:<br />\* **Pending**: Transaction is pending posting<br />\* **Posted**: Transaction has been posted to the account<br />\* **Failed**: Transaction posting failed<br />\* **Canceled**: Transaction was canceled                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Purpose                  | Reason for the wire transfer. For internal Cross River use only. The data is not included with the outgoing FedWire message.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Amount                   | The transaction amount in integral cents. For example, $1.00 appears as 100.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Currency                 | The currency the payment is being or was made in.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Imad/Omad                | The mandatory unique number given to each Fedwire payment when using the Federal Reserve Bank Service. You can use this number to track your wire transfer.<br />* **IMAD** indicates an inbound transfer
* **OMAD** indicates an outbound transfer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ReceiptDate              | Date payment was received                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ReceiptTime              | Time of day payment was received                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| BusinessFunctionCode     | Always CTR, for a customer transfer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| TypeCode                 | Type of transfer taking place. See [Request and response codes: Wires](docId\:dNVmZA82yPq34WBpmrPyj) for information about type codes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| SenderRoutingNumber      | Sender’s ABA number                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| SenderName               | Name of the party sending the transfer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| SenderReference          | Sender's assigned reference number                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ReceiverRoutingNumber    | Receiver’s ABA number                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ReceiverName             | Name of the party receiving the transfer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| OriginatorToBeneficiary1 | Optional free-text information included by the originator to the beneficiary. For example:<br />`"originatorToBeneficiary1": "THANK",`<br />`"originatorToBeneficiary2": "YOU",`<br />`"originatorToBeneficiary3": "PAID",`<br />`"orginatorToBeneficiary4": "IN FULL",`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| OriginatorToBeneficiary2 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| OriginatorToBeneficiary3 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| OriginatorToBeneficiary4 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| OriginatingFiIdCode      | The single-character code (**F**inancial **I**nstitution **ID** **code**) indicating the originating institution ID type as follows:<br />* **B** - SWIFT Bank Identifier Code (BIC)
* **C** - CHIPS Participant
* **D** - Demand Deposit Account (DDA) Number
* **F** - Fed Routing Number
* **T** - SWIFT BIC or Bank Entity Identifier (BEI) and account number
* **U** - CHIPS Identifier                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| OriginatingFiIdentifier  | The originating institution’s identifier as per the selected FiIdCode                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| OriginatingFiName        | Name of the originating party’s financial institution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| OriginatingFiAddress1    | Address details of the originating party’s financial institution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| OriginatingFiAddress2    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| OriginatingFiAddress3    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| OriginatorIdCode         | The single-character code to indicate the originator type. The code selected determines which identifier information must be used:<br />* **B** - SWIFT Bank Identifier Code (BIC)
* **C** - CHIPS Participant
* **D** - Demand Deposit Account (DDA) Number
* **F** - Fed Routing Number
* **T** - SWIFT BIC or Bank Entity Identifier (BEI) and account number
* **U** - CHIPS Identifier
* **1** - Passport Number
* **2** - Tax Identification Number
* **3** - Driver’s License Number
* **4** - Alien Registration Number
* **5** - Corporate Identification
* **9** - Other Identification                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| OriginatorIdentifier     | This is the originator’s ID informationas per the selected `FiIdCode`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| OriginatorName           | Name of the party originating the transfer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| OriginatorAddress1       | Address details of the originating party                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| OriginatorAddress2       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| OriginatorAddress3       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| IntermediaryFiIdCode     | The single-character code to indicate the intermediary institution type. The code selected determines which identifier information must be used:<br />* **B** - SWIFT Bank Identifier Code (BIC)
* **C** - CHIPS Participant
* **D** - Demand Deposit Account (DDA) Number
* **F** - Fed Routing Number
* **T** - SWIFT BIC or Bank Entity Identifier (BEI) and account number
* **U** - CHIPS Identifier                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| IntermediaryFiIdentifier | The intermediary institution’s identifier as per the selected `FiIdCode`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| IntermediaryFiName       | Name of the intermediary financial institution. This will be empty if an intermediary institution is not being used for this transaction.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| IntermediaryFiAddress1   | Address details of the intermediary financial institution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| IntermediaryFiAddress2   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| IntermediaryFiAddress3   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| BeneficiaryFiIdCode      | The single-character code to indicate the beneficiary institution type. The code selected determines which identifier information must be used:<br />* **B** - SWIFT Bank Identifier Code (BIC)
* **C** - CHIPS Participant
* **D** - Demand Deposit Account (DDA) Number
* **F** - Fed Routing Number
* **T** - SWIFT BIC or Bank Entity Identifier (BEI) and account number
* **U** - CHIPS Identifier                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| BeneficiaryFiIdentifier  | The beneficiary institution’s identifier as per the selected `FiIdCode`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| BeneficiaryFiName        | Name of the beneficiary party’s financial institution.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| BeneficiaryFiAddress1    | Address details of the beneficiary’s financial institution.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| BeneficiaryFiAddress2    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| BeneficiaryFiAddress3    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| BeneficiaryIdCode        | The single-character code to indicate the beneficiary type. The code selected determines which identifier information must be used:<br />* **B** - SWIFT Bank Identifier Code (BIC)
* **C** - CHIPS Participant
* **D** - Demand Deposit Account (DDA) Number
* **F** - Fed Routing Number
* **T** - SWIFT BIC or Bank Entity Identifier (BEI) and account number
* **U&#x20;**- CHIPS Identifier
* **1** - Passport Number
* **2&#x20;**- Tax Identification Number
* **3&#x20;**- Driver’s License Number
* **4** - Alien Registration Number
* **5** - Corporate Identification
* **9** - Other Identification                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| BeneficiaryIdentifier    | The beneficiary’s ID information as per the selected `FiIdCode`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| BeneficiaryName          | Name of the beneficiary party.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| BeneficiaryAddress1      | Address details of the beneficiary party                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| BeneficiaryAddress2      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| BeneficiaryAddress3      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| BeneficiaryReference     | Optional information provided by transfer initiator                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ReleasedAt               | The date and time the payment was **released**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ProcessedAt              | The date and time the payment was **processed**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| EffectiveDate            | The actual date the transaction was **posted**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| CreatedAt                | The date and time the payment was **initiated**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| CanceledAt               | The date and time the payment was **canceled**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| RejectedAt               | The date and time the payment was **rejected**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| CompletedAt              | The date and time the payment was **completed**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| PostedAt                 | The date and time the payment was **posted**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| OriginalPaymentId        | Payment ID of a previously sent wire that was reversed. Otherwise, the same as the `Id` column.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ProductId                | The product identifier for the account involved in the wire transfer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| PartnerId                | Your unique identification number as a partner in the Cross River system                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| LastModifiedAt           | Internal Cross River value. Date and time the database entry was last modified.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| InsertedAt               | Internal to Cross River                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

## Sample report

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/FAyB-z_rXH1q4aK30WCec_yourcompanyname-daily-wire-payment-yyyy-mm-dd-hhmmss.csv" label="[YourCompanyName]_Daily_Wire_Payment_[YYYY]_[MM]_[DD]_[HHMMSS].csv"}


[title] Daily Instant Payments activity
[path] Reports/Accounts and payments/

## Report description

This report lets you see all instant payments for a single given Cross River Operating System (COS) partner.

Instant payments include transactions processed through:

- **RTP** (The Clearing House Real-Time Payments network)
- **FedNow** (Federal Reserve instant payments service)
- **CRNow** (Cross River instant payments network)

You can use this report to reconcile between what you requested from COS and what COS actually processed.

[Learn more about instant payments](docId\:U_TnYPQ3-5yepG7jKD5FK)&#x20;

## Report in detail

The table below shows the different columns included in the report together with descriptions and explanations of the information they represent.

| Column                     | Description                                                                                                                                                                                                                                                                                                                                                                                                 |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| PaymentId                  | The unique identification number for the payment                                                                                                                                                                                                                                                                                                                                                            |
| TransactionAmount          | The dollar amount of the payment                                                                                                                                                                                                                                                                                                                                                                            |
| PaymentStatus              | The payment status in COS                                                                                                                                                                                                                                                                                                                                                                                   |
| Payment\_TypeName          | The core transaction type. For a full list of payment types, see [Request and response codes: Instant payments](docId\:i1MCoCYNv8NOKPkqFQ1Gb).                                                                                                                                                                                                                                                              |
| PaymentSource              | The source initiating the payment. This may be one of the following:<br />* API
* Clearing House (for inbound payments from RTP network)
* FedNow (for inbound payments from FedNow network)
* CRNow (for inbound payments from CRNow network)
* Partner Portal (when a partner user enters a payment request in COS Explorer)
* Ops Portal (when Cross River Ops enters a payment request in COS Explorer) |
| PartnerName                | The name of the partner the report was prepared for                                                                                                                                                                                                                                                                                                                                                         |
| ProductName                | The COS product name for the COS account participating in the payment                                                                                                                                                                                                                                                                                                                                       |
| ClientIdentifier           | An optional unique internal identifier for the payment that you can define when sending the call. See [Idempotency](docId\:ZcfTqXpiawlJCeIjcug5R) to understand how the `clientIdentifier` can work with the idempotency key.                                                                                                                                                                               |
| DebtorName                 | The debtor name for the payment. This can be either the COS customer or external debtor, based on the direction of the payment.                                                                                                                                                                                                                                                                             |
| AccountNumber              | The COS master account involved in the payment                                                                                                                                                                                                                                                                                                                                                              |
| SubAccountNumber           | The COS sub ledger account involved in the payment, if exists                                                                                                                                                                                                                                                                                                                                               |
| CreditorName               | The creditor name for the payment. This can be either the COS customer or external creditor, based on the direction of the payment.                                                                                                                                                                                                                                                                         |
| CreditorAccountNumber      | The creditor account number. This can be the account number for either the COS customer or the external customer, based on the direction of the payment.                                                                                                                                                                                                                                                    |
| Direction\_Desc            | The payment direction (Inbound or Outbound).                                                                                                                                                                                                                                                                                                                                                                |
| Purpose                    | Internal Cross River field used to include a short description of the purpose of the payment. The RDFI does not see this field.                                                                                                                                                                                                                                                                             |
| ReferenceId                | The payment reference ID in COS                                                                                                                                                                                                                                                                                                                                                                             |
| SentAt                     | The date and time the payment was executed.                                                                                                                                                                                                                                                                                                                                                                 |
| CompletedAt                | The date and time the payment completed.                                                                                                                                                                                                                                                                                                                                                                    |
| RejectedAt                 | The date and time the payment was rejected. If this field is populated, then the **CompletedAt** field is always empty.                                                                                                                                                                                                                                                                                     |
| RTPTransactionStatus       | Status of the instant payment transaction as reported by the receiving institution. For a list of statuses, see [Request and response codes: Instant payments](docId\:i1MCoCYNv8NOKPkqFQ1Gb).                                                                                                                                                                                                               |
| ConfirmedTransactionStatus | The instant payment transaction status, as reported by the receiving institution and confirmed by COS. For information on available statuses, see [Request and response codes: Instant payments](docId\:i1MCoCYNv8NOKPkqFQ1Gb).                                                                                                                                                                             |
| ConfirmedReasonCode        | The reason the payment did not complete, as confirmed by COS. For information on available reason codes, see [Error codes: Instant payments](docId:3gfvw44bHPSEpyA8ipwxK).                                                                                                                                                                                                                                  |
| ConfirmedAdditionalInfo    | Additional payment information, as confirmed by COS                                                                                                                                                                                                                                                                                                                                                         |

## Sample report

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/6NmRlXRuhExcXGmN8C4Js_yourcompanyname-rtp-activity-report-yyyy-mm-dd-hhmmss.csv" label="[YourCompanyName]_RTP Activity Report_[YYYY]_[MM]_[DD]_[HHMMSS].csv"}


[title] Overdrawn account
[path] Reports/Accounts and payments/

## Overdrawn account report

The Overdrawn Account Report is an .xlsx file generated daily by the Cross River Operating System (COS) and sent via [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25). It contains a list of the your customer's accounts that are overdrawn.

You can use this report to reconcile between what you requested from the Cross River Operating System (COS) and what COS actually processed.

Only accounts that meet certain criteria appear in this report:

- Only accounts with **Overdraft Funding Enabled** and a configured **Overdraft Funding Account Number&#x20;**&#x61;ppear
- Overdraft is determined by the configured overdraft funding threshold, and not just by a negative account balance
- No subaccounts appear, only master accounts

## Report in detail

| Column                   | Description                                                                                       |
| ------------------------ | ------------------------------------------------------------------------------------------------- |
| Partner                  | Partner name                                                                                      |
| Master Account Number    | Your customer’s master account number                                                             |
| Account Title            | The name on the account                                                                           |
| Date Account Opened      | The date the account was originally opened in COS                                                 |
| Master Current Balance   | Current balance on the account. This balance is compared against the overdraft funding threshold. |
| Master Available Balance | Available balance on the account                                                                  |
| Date Overdrawn           | Day the account first became overdrawn                                                            |
| Fed Days in Overdraft    | The number of days the account has been overdrawn                                                 |

## Understand current and available balance

The report includes two different balance values for each account. They are slightly different.

### Current balance

The current balance (also called ledger balance) represents the actual settled balance of the account after all posted transactions. This is the authoritative balance that includes all hard posted transactions that have completed the settlement process.

### Available balance

The available balance represents funds that are immediately accessible for transactions. It is calculated as:

Current Balance - Holds - Pending Authorizations +/- Memo Posts

The difference between current balance and available balance represents:

- Funds on hold (reducing available balance)
- Temporary memo post adjustments
- Pending transactions not yet settled

## Sample report

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/feGZQlcY-tr2nVUc9lKOc_overdrawn-account-report-yourcompany-yyyy-mm-dd.xlsx" label="Overdrawn Account Report_[YourCompany]_[YYYY-MM-DD].xlsx"}

## Overdraft notice

On the 1st and 7th days of a customer’s account being overdrawn, COS sends the following form notice to the customer in PDF format, with the fields in the letter populated from the Overdrawn Account Report and additional data fields.

![](https://archbee-image-uploads.s3.amazonaws.com/511c8QBH-VHiwWnyzIwUb/W41JUwBYvjTsmwwIzjyfi_cos-overdrawn-account-report-and-overdraft-notice-2.png)




[title] Webhooks report
[path] Reports/Accounts and payments/

## Report description

You can use [webhooks](docId\:dxhMTjduYWp5-pYQaJUdx) within the Cross River Operating System (COS) to notify you when different events occur.

This Webhook Events Export File Drop By Partner report summarizes your webhook events.

## Report details

The table below shows the different columns included in the report together with descriptions and explanations of the information they represent.

| Column          | Description                                                                                                                                                                                          |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| EventId         | The unique ID for the event, returned inside the event                                                                                                                                               |
| EventName       | The name of the event in the syntax you used to register for it. This name also appears in the webhook event.                                                                                        |
| Status          | Event statuses include:<br />* **Pending**: event created but not sent
* **Success**: event successfully sent to the registered URL
* **Failed**: event could not be delivered to the registered URL |
| Resource        | The call that launched the event and its payment ID                                                                                                                                                  |
| CreatedAt       | The date and time the event was created                                                                                                                                                              |
| LastAttemptedAt | The date and time the event was last sent                                                                                                                                                            |
| PartnerId       | Your unique ID in the Cross River system                                                                                                                                                             |

## Sample report

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/oM8pNftQpmwrzevvrvXIH_yourcompanyname-webhook-events-yyyy-mm-dd-hhmmss.csv" label="[YourCompanyName]_Webhook_Events_[YYYY]_[MM]_[DD]_[HHMMSS].csv"}


[title] Daily settlement (summary)
[path] Reports/Card payment reports/

## Report description

Daily pre-settlement reports help you match payments with the batches of transactions to which they relate.

The daily settlement summary report shows the following. This reflects the settlement transactions to be transferred on this particular day:

- Starting and ending balance held at Cross River for a stated date range
- A high-level summary of merchant partner activity during that range.

Together, these reflect the settlement transactions to be transferred on this day.

## Generation schedule

Every day that Cross River settles funds. This is the day that the bank settles transactions with the merchant partner.

## Report delivery

- By email
- Via [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25) file export

## Report file format

**PartnerName\_CRBPayments\_Settlement\_Summary\_YYYY\_MM\_DD**

## Report structure

*Aggregation level:* Networks

*Fields*: Report Date, Total Settlement Amount, Daily Limit, Amount Balance, Required Replenishment, etc.

![](https://archbee-image-uploads.s3.amazonaws.com/511c8QBH-VHiwWnyzIwUb/1uPnsOWbYVGA0tTtxrGhH_visaoctversusothervisatransactions.png)

\* This could be any of the card networks listed in theNetwork Identification supplement.

## Related topics

- [Daily settlement (detailed)](docId\:ID2xJOHUQ_SaDaUgT9Xhv)&#x20;
- [Daily exceptions](docId\:IiJ8_BmT0qfpmP_dJjAHm)
- [Daily chargeback report](docId\:GjHgMGK1dOOQdccLsZg-o)
- [Send funds to payee (push) API](docId\:q59J0rxBvNfQ-y92-TASq)&#x20;
- [Request funds from payer (pull) API](docId\:KVpHbesGRkxsFI6YyS8zD)&#x20;


[title] Configure SSO
[path] Org management portal/

## Cross River SSO

Cross River offers you the option to access Cross River applications with your own SSO (Single Sign On) login system. Benefits of SSO include a more seamless and cohesive user experience, as well as higher levels of security.&#x20;

We support both OIDC and SAML configurations.&#x20;

:::hint{type="info"}
These instructions explain how to configure SSO on the Cross River side. You also need to configure this SSO connection on your specific identity provider side, for example, EntraID.

Your Org Management Admin user configures SSO on the Cross River side.
:::

## Verify SSO enabled

If the option for SSO Settings appears on the navigation of the [Org Management screen](docId\:C90JfVUQ2MwiRVdsAwxgr) SSO is enabled for your organization. If SSO is not enabled, open a support ticket using Cross River ServiceNow.



![SSO appears on Org Management user interface](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/mtCAUSwLjW3RPwot_JW2N_image.png "SSO appears on Org Management user interface")

## Configure Cross River-side SSO connection

Configure your SSO connection as follows:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Click **SSO** in the navigation pane, and then click **Configure**.



![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/pVTHprG_Wtdnb3BZj4wQf_image.png)
:::

:::WorkflowBlockItem
The SSO Configuration Panel opens. Select which type is required: **OIDC** or **SAML**. Fill in the fields according to the instructions on the page and click **Save**.
:::

:::WorkflowBlockItem
OIDC tab

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/-1S-UZP2pIBshZ7GYjvN3_image.png)
:::

:::WorkflowBlockItem
SAML tab

![](https://archbee-image-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/v9yoU2zr4fJiQtLB7---t_image.png)
:::

:::WorkflowBlockItem
Be sure to add the callback paths to your authentication server.
:::
::::


[title] Admin actions
[path] Org management portal/

## What you can do

As an Organization Management Portal **Admin**, you can:

- View the applications your organization has access to
- Manage users, including:
  - Create, edit and delete a user
  - Add, edit, and delete the roles associated with a user
  - Resend a registration email during sign-up/Reset user multifactor authentication (MFA)
- Manage API clients, including:
  - Create, edit, disable, and delete API clients (API machine to machine) from your organization
  - Add, edit, and delete the scopes associated with an API client
  - Access a script for the Get Token command for a specific API client

## Terminology

| Term         | Explanation                                                                                                                                                                                                                                                                                                                        |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Users        | Human users from your organization that use Cross River applications                                                                                                                                                                                                                                                               |
| API clients  | Agents that use Cross River applications                                                                                                                                                                                                                                                                                           |
| Partners     | Your different types of offerings or product groups. You assign users to a partner or partners. Partners are preconfigured by Cross River for you.                                                                                                                                                                                 |
| Applications | Cross River applications that your users have permissions to access                                                                                                                                                                                                                                                                |
| Roles        | Define what features your organization’s users can see and the permissions they have in the Cross River applications that your organization uses. You can apply roles to different applications, per user. Roles are preconfigured by Cross River for your organization.                                                           |
| Scopes       | Define access for an organization's client applications via the Cross River API to user data. You control the abilities and limits (meaning, the "scope") of the client application within a Cross River application. Scopes are also known as protected resources. Scopes are preconfigured by Cross River for your organization. |

## Log into the portal

:::hint{type="warning"}
**IMPORTANT**

Be sure you include the organization management portal outgoing IP address **66.206.202.116** in your list of addresses to be allowed at your end.
:::

Once you have completed [initial access registration](docId\:RuUg6xLVU1Ywyh7_4vekE), access the appropriate version of the portal from these URLs:

- [https://orgmanagementsandbox.crbcos.com/ ](https://orgmanagementsandbox.crbcos.com)(sandbox)
- [https://orgmanagement.crbcos.com/](https://orgmanagement.crbcos.com) (production)

## Navigate in the portal

Once in the portal you see your dashboard, displaying data about your applications, users, API clients and partners. Navigate from the tree on the left.

## Manage users﻿

Click **Users** in the left-hand navigation to see a list of your users and to perform related actions.

### View user details

::::WorkflowBlock
:::WorkflowBlockItem
On the main user screen, for each user, see:

- Full name
- Username
- Phone number
- Registration status (Completed, pending, blocked)
- How many applications the user can access
- How many roles have been assigned to the user
- User access level in Org Management
- Last login date
- Creation date
:::

:::WorkflowBlockItem
Click the three-dot menu on the right for a specific user and select **View Details**. More details appear on the right of the screen, including specific roles per application.
:::
::::

### Create user

::::WorkflowBlock
:::WorkflowBlockItem
Click **Actions**, and select **New User**. A pane opens on the right.
:::

:::WorkflowBlockItem
Enter the all following required information for the user:

- First name
- Last name
- Phone number
- Email address
:::

:::WorkflowBlockItem
If the user will also be an admin for your organization, select **Organization Administrator**.
:::

:::WorkflowBlockItem
For each application your user needs access to, select that application from the tree, and the relevant roles to apply.
:::

:::WorkflowBlockItem
Click **Save**. The user now appears in your list of users.
:::
::::

### Edit user name and roles

::::WorkflowBlock
:::WorkflowBlockItem
Click the three-dot menu on the right for a specific user and select **Edit User**.

Fields available to edit include:

- First and last name
- Applications the user can access
- Roles the user has for each application
:::
::::

### Resend registration email

If the user has not yet registered you can resend the registration email.

:::::WorkflowBlock
::::WorkflowBlockItem
Click the three-dot menu on the right for a specific user and select **Resend Registration Email**.

:::hint{type="info"}
If this option does not appear, the user already registered.
:::
::::

:::WorkflowBlockItem
Follow the onscreen instructions to resend the email.
:::
:::::

### Reset multifactor authentication (MFA)

If the user is already registered you can reset their authentication.

:::::WorkflowBlock
::::WorkflowBlockItem
Click the three-dot menu on the right for a specific user and select **Reset MFA**.

:::hint{type="info"}
If this option does not appear, the user is not registered yet.
:::
::::

:::WorkflowBlockItem
Enter the user phone number in the Reset MFA pane.

Do not use spaces or hyphens. Do include the area code.
:::

:::WorkflowBlockItem
Click **Save**.

The user phone number updates and the MFA is reset.
:::
:::::

### Delete user

::::WorkflowBlock
:::WorkflowBlockItem
Click the three-dot menu on the right for a specific user and select **Delete User**.
:::
::::

## Manage API clients

Click **API clients** in the left-hand navigation to see tiles representing each API client you have created and information about that client.

### View API client details

::::WorkflowBlock
:::WorkflowBlockItem
On the main API clients screen, for each user, see a tile that includes:

- Client name
- Client ID
- Number of scopes assigned to that client
- Number of applications the client can access
- Creation date&#x20;
- Description (if added)
- Organization name
- Partner name (if added)
:::

:::WorkflowBlockItem
Hover over a tile to reveal the hamburger menu (three parallel lines).

Hover the hamburger menu and click **View**. More details appear on the right of the screen.
:::
::::

### Create API client

::::WorkflowBlock
:::WorkflowBlockItem
Click **Actions**, and select **New Client**. A pane opens on the right.
:::

:::WorkflowBlockItem
Enter the following information for the client:

- Details tab:
  - Client ID (required)
  - Client name (required)
  - Description of the client. This field is searchable.
- Partner tab:
  - Partner name. You can search for this if you are not sure of the exact name.
- Scopes tab:
  - Scopes to be added to the client. You can search for these if you are not sure of the exact names.
- Secrets tab:
  - Click **+ New Secret** to generate a new secret for the client
:::

:::WorkflowBlockItem
Click **Save**. The API client tile appears on the main screen.
:::
::::

## View applications

Click **Applications** in the left-hand navigation to drill down to details about your applications.

For each Cross River application you can see how many roles and scopes your users and API clients have.

To drill down further:

1. Hover over a tile to reveal the hamburger menu (three parallel lines).
2. Hover the hamburger menu and click **View**. More details appear on the right of the screen.

## View partners

Click **Partner** in the left-hand navigation to drill down to details about your applications.

For each partner your organization manages, you can see information about that partner.

To see the properties of the partner:

1. Hover over a tile to reveal the hamburger menu (three parallel lines).
2. Hover the hamburger menu and click **View**. More details appear on the right of the screen.

## Find a specific user, client, application or partner

Every screen has a filter button on the right. Each screen filter is unique to the screen, however all screens include a free text filter.




[title] Customer record
[path] /

## What is a customer record

Most of the time, if you want to offer a feature or service your customers through Cross River, you must first create a *customer record*, sometimes called *onboarding&#x20;*&#x74;he customer. A customer record is just that, a record of details of an individual or business. This record includes customer communication details, tax information and other data. The customer record is a primary source of information for creating a bank account, for example. You can associate a customer with more than one bank account.

Cross River also uses the customer record for the Know Your Customer () and Know your Business () activities.&#x20;

Create/onboard a customer either [by API](docId\:Q4-jm-3VHwwmDDeEzxEWg) or using [COS Explorer](docId\:FfHFeajqLBBvqME-M5lwl).

:::hint{type="warning"}
**IMPORTANT**
Some customer endpoints include a `dueDiligence` resource that may or may not be required when onboarding customers. Your assigned compliance liaison communicates requirements for any Due Diligence fields during your onboarding process. Due diligence fields also appear when you create a customer using COS Explorer.
:::

## API Examples

The example below shows how to [onboard a customer ](docId\:isgkj7NIS9jHmyu3UPUBk)for a personal customer.&#x20;

:::CodeblockTabs
Onboard Person Request

```curl
POST /core/v1/cm/customers
{
  "partnerId": "7cc038be-fde9-4455-b27b-1497cf667362",
  "name": {
    "prefix": "Mr.",
    "firstName": "John",
    "middleName": "Robert",
    "lastName": "Smith",
    "suffix": "Jr.",
    "preferredName": "Jim"
  },
  "classification": "Personal",
  "profile": {
    "regO": false,
    "citizenshipCountryCode": "US",
    "politicallyExposedPerson": false,
    "enableBackupWithholding": false,
    "backupWithholdingPercent": 0,
    "taxIdType": "Ssn",
    "taxId": "123456789",
    "birthDate": "1965-09-15",
    "riskRating": "Low",
    "privacyOptOut": true
  }
}
```
:::

Onboard a business customer such as corporation or LLC using the same endpoint with slightly different attributes.

```curl
POST /core/v1/cm/customers
{
  "partnerId": "a24cba49-2bb6-431d-a867-1de81d6e4127",
  "name": {
    "entityName": "ACME CO",
  },
  "classification": "Business",
  "profile": {
    "citizenshipCountryCode": "US",    
    "enableBackupWithholding": false,
    "backupWithholdingPercent": 0,    
    "taxIdType": "Ein",
    "taxId": "123456789",
    "dateFormed": "2019-09-10",
    "entityType": "Corporation",
    "riskRating": "Low",
    "ownershipType": "LegalEntity",
    "primaryOwnerCustomerId": "f9321f7f-3712-46e1-b965-2b79ead64dc9",
  }
}
```

Regardless of whether you are onboarding a personal or business customer, the `primaryOwnerCustomerId` attribute must contain a customer ID referencing a customer record of type Personal. So to onboard a business, you must first create a personal customer record for the primary owner of that business.

:::hint{type="info"}
Every customer has an identifying ID in the system in format.

In COS Explorer find this ID at the end in the URL of the customer details page:
../explorer2/core/cm/customers/details/**c3f1d6e8-3bca-48e5-9249-b30400b3ab47**

When you create a customer using the API, this ID is returned in the response.

Use this ID to find the customer in COS Explorer, or to run API calls about this customer.
:::

### Beneficial owners

A beneficial owner is a person who owns 25% or more of a business. For regulatory reasons, you need to [create a beneficial owner ](docId\:EOH9pzYARQnyhe9mh979u)  resource in a *Business* customer record for each beneficial owner of that business. The `ownerCustomerId` attribute references the Personal customer record for each beneficial owner. You usually add beneficial owner resources to the business customer record immediately after onboarding a business.

```curl
POST /core/v1/cm/customers/{customerId}/beneficial-owners
{
  "ownerCustomerId": "c1210a2d-932e-43ca-be29-f358a4382385",
  "ownerTitle": "President"
}
```

### Address

The physical addresses associated with customer can be [updated](docId\:tWpyIp5zxe-kjEJqEUqfc).

```curl
POST /core/v1/cm/customers/{customerId}/addresses
{
  "isPrimary": true,
  "status": "Active",
  "classification": "Residential",
  "addressType": "Home",
  "street1": "123 Maple Street",
  "street2": "Apt. 12",
  "street3": "",
  "city": "New York",
  "state": "NY",
  "postalCode": "10025",
  "countryCode": "US",
}
```

### Email addresses

[Update email](docId\:ghuoBTAsQ0vfLcEaWXPte) contact information for customer.

```curl
POST /core/v1/cm/customers/{customerId}/emails
{
  "isPrimary": true,
  "emailType": "Personal",
  "emailAddress": "john.smith@crossriver.com"
}
```

### Phones

[Update phone](docId:5bNWSnxsqTB_GtuntlnPW) contact information for customer.

```curl
POST /core/v1/cm/customers/{customerId}/phones
{
  "phoneType": "Home",
  "isPrimary": true,
  "phoneNumber": "2015551234"
}
```

### Identifications

Identifications are used to track metadata for customer-identifying documents such as driver's licenses and passports. [Add ID details](docId\:QjfGSujVfqoxCpJiqzLfF) can be used to add new ID details.

```curl
POST /core/v1/cm/customers/{customerId}/identifications
{
  "isPrimary": true,
  "idNumber": "DL123456789",
  "idType": "DriversLicense",
  "issuedDate": "2018-08-30",
  "expDate": "2018-08-30",
  "verifiedDate": "2018-08-30",
  "issuingAuthority": "NJ DMV",
  "issuingStateOrProvince": "NJ",
  "issuingCountryCode": "US",
}
```

#


[title] COS Explorer access troubleshooting
[path] COS Explorer/

When logging in to COS Explorer, there are some common issues that might crop up.&#x20;

## Site cannot be reached

If you log in to COS Explorer and get following error screen, you are blocked by the firewall.

![](https://archbee-image-uploads.s3.amazonaws.com/Qt8sSSvJnFaDir3Z-GD2j-Kc3YWS0Zb310IMKY0uVt--20250123-122443.png)

To unblock your access:

1.   Contact your internal IT department to see if your organization enforces firewall rules for outbound traffic. If they do, ensure that your access to COS Explorer is not blocked. See [COS Explorer IP whitelist](docId\:YP_CZ44UkO-F5j5wESCav).&#x20;
2.   If there are no firewall rules for outbound traffic, contact your internal IT department to make sure you're connecting to the Cross River COS Explorer Portal from an approved IP address. If you need to register more IP addresses, send an email to [COS support](mailto\:cos.support@crossriver.com).

## Multifactor authentication

### Invalid MFA code

If you enter an invalid MFA code, a red message under the code field asks you to try again. A code could be invalid because:

- **Code timeout**
  If the code timed out before you clicked **Continue** (and is therefore invalid), you need to generate a new code. Some authenticator apps indicate the time remaining for the code to be valid by showing a countdown circle to the right of the account name and MFA code.
- **Wrong code**
  If you have the authenticator app set up for multiple Cross River environments or applications, double check that you entered the correct code for the application you are entering.

:::hint{type="info"}
If you are using the authentication app for more than one environment or application, we recommend that you give a meaningful name to each MFA connection.
:::

### Reset multifactor authentication

If you already have MFA configured:

1. Log in to [https://idptest.crbcos.com/](https://idptest.crbcos.com/)**.&#x20;**
2. Click **Account settings**.
3. Click **Reset your MFA device**.

If your current MFA is SMS, you can enable MFA with your authenticator app.

### Reset MFA if you change phones

If you need to use a new device:

1. Download the authenticator app to your new phone.
2. Log in to the Cross River application and authenticate using your old phone.
3. Create a new user for your new phone. If you can't create a user or if you don't succeed in authenticating with your new phone, ask your organization admin to reset the MFA. You'll go through the initial [access process](docId\:JwSEUG3ELF_gXLhy6T9KI) again.

If you lose your phone you'll need to [authenticate with a recovery code](docId\:WJspnXy9wpWu5rlxVOHyp) and then reset your MFA for your new phone.

### Create new recovery codes

You can also create new multifactor authentication recovery codes from the reset screen. Note that you are only allowed to create new recovery codes 10 times.

1. Click **create new multi-factor authentication recovery codes**.
2. The Recovery Codes page opens and you can copy or download your 10 new recovery codes.

### Use a recovery code

If you do not have access to your multifactor (2-factor) authenticator, you can log in using one of your recovery codes.

1. Log in as usual.
2. On the multifactor authentication page, select the option to use a recovery code as your authentication option.
3. Enter one of your recovery codes in the text box. Once you've used it, the recovery code cannot be reused. To avoid future confusion, we recommend that you mark the recovery code as used.

## Forgot password

1. In the login screen, click **Forgot password?** and enter your email.
2. Generate a 6-digit authentication code from your authenticator app and enter it in the field.
3. We send you a *Forgot Password* email. Click **Reset Password** in the body of the email.
4. In the Password Reset page that opens, enter a new password, click **Reset Password**, and **Continue to the application**.

## Account lockout

If you enter the wrong password for your username 5 times, the system locks your account for approximately 5 minutes. If after 5 minutes, you are still unable to access your account, contact [COS support](mailto\:cos.support@crossriver.com).


[title] COS terms
[path] /

## What is COS

  is a proprietary core banking platform comprising several different modules which work together to power our fintech platform. At the head of COS sits the banking Core API that manages fundamental banking functions such as customer onboarding, account management, and transaction activity.   

## Resource

A resource refers to constructs such as &#x61;*&#x20;partner*, *customer*, *product*, *account*, or a *payment*. The unique identifier (id) for a resource can help locate specific information within COS, such as an ACH debit payment or an inbound wire transfer.

## Account

This is a bank account which has a routing number and account number. The type of account will vary based on your funds flow. Refer to [Accounts](docId\:ZQyAf4oeI1rEzpBOI78MJ) for more details.

## Unique identifiers

COS uses s to identify different resource types throughout the system. The unique identifier for a resource can help locate specific information within COS, such as an ACH debit payment or an inbound wire transfer.

## Payment ID

All rail payments have their own  referred to as a *Payment ID*. This can be found in the response payload of a new payment request. It can also be used in the endpoint URL to view payment details.

## Transaction ID

When a core posting event occurs, a *Transaction ID* will generate. This can be found on the transaction details page as well as at the end of the page URL.

## Request ID

The *Request ID* is within the response header. *Request IDs* are more relevant to API users and will not be visible to COS Explorer users who lack admin permissions which allow them to view API logs. A successful `POST` request will provide a *Request.I&#x64;**&#x20;&#x20;***&#x69;n the response header.&#x20;

## Partner ID

This identifies the Partner within COS. External users only have access to a single Partner.  Partners are provided with their *Partner ID* during onboarding. Many API operations provide the *Partner ID* value within the response body.&#x20;

The *Partner ID* is not visible to COS Explorer users that lack admin permissions which allow them to view API logs or Partner page within the Admin module.

Data in the Core is segmented by Partner. This prevents any information belonging to one Partner, such as a Customer or Transaction record, from being visible to another Partner.

## Product ID

Products are unique resources that define how an account functions. All accounts, such as DDA and time deposit account products, belong to a product which can be configured as needed. A Partner may have more than one product within their partner resource. For example, a BaaS Partner may have both a checking and savings product as part of their program offering. Most operations will trigger a response which contains the *Product ID*. For additional information, see [COS product types and IDs](docId\:A4xk-yBQUtIA6tNQ5oJKf).&#x20;

## Customer ID

Customers are uniquely identified either by their *Customer ID* or their  number. CIF is used internally by Cross River for compliance purposes. Customer refers to the end customer, the Partner’s (who has a Cross River account) customer. There is a customer record in COS that goes through  and . For more information about customer records, see  [Customer record](docId\:EDJywbh2OgbvTQleF_QZZ).

## Event ID

This ID refers to webhook events. When a Partner is registered for a particular webhook event and that event is triggered, it will include the *Event ID* as well as additional resources tied to that event. Partners can then query those specific resources for additional details related to the event.&#x20;




[title] COS reports setup
[path] Reports/Accounts and payments/

## What you will learn

- What COS reports are, and when they are delivered
- How to get set up to to receive standard Cross River Operating System (COS) reports
- The report generation process, including the generation schedule, SFTP file path conventions and report file naming conventions

## COS reports

Daily COS reports are a standard part of what you receive as a Cross River partner.  Reports usually describe account or payment activity based on different parameters. The reports you receive depend on your operational model and your agreement with us. If you need more than the standard reports, discuss that with your  .

We deliver reports in either .csv or  .xlsx formats. You can receive reports in formats such as MT940 and PDF. Contact your  for assistance with receiving reports in alternative formats.

This table presents the standard COS reports you might receive, and an explanation of the file naming convention used.

| Report (linked to description page)                      | File naming convention                                                                                                                                  |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Daily account activity](docId\:jISaStzNJA3nRpW6VFbRw)   | \[PartnerName]\_Daily\_Account\_Activity\_\[timestamp].csv                                                                                              |
| [Daily account balance](docId\:iP_VT9ImwcK4gQryLpGC1)    | \[PartnerName]\_Daily\_Account\_Balance\_\[timestamp].csv                                                                                               |
| [Daily overdrawn account](docId\:y9iaggJzXJGX_fMOAf4pH)  | Overdrawn Account Report\_\[PartnerName]\_\[date].xlsx                                                                                                  |
| [Daily ACH activity](docId\:t1BKGkyHRa_hGYMyGLrrE)       | \[PartnerName]\_Daily\_Ach\_Activity\_\[timestamp].csv<br />Check with your Relationship Manager if you see variations in the filename for this report. |
| [Daily RTP activity](docId\:udR6dnNOjtC_Vo6p6sWGm)       | \[PartnerName] RTP Activity Report\_\[timestamp].csv                                                                                                    |
| [Daily wires activity](docId:9QOajqRf_TeRt1GW-gE2o)      | \[PartnerName]\_Daily\_Wire\_Payment\_\[timestamp].csv                                                                                                  |
| [Daily webhooks activity](docId:4wbKTU-L7WI3JixaWkCib)   | \[PartnerName]\_Webhook\_Events\_\[timestamp].csv                                                                                                       |

## Report delivery

We deliver daily reports to an SFTP folder set up for your organization. These reports are PGP-encrypted, so be sure Cross River has your PGP public key.

Report files in the SFTP folders are not deleted automatically.

Learn about [SFTP folder setup](docId\:vS2CkU9_W5BQQlbjsBq25).

## Generation process

We generate reports daily at 3AM EST, and upload them immediately following that.

We upload the report files to the following paths:

- \\\sftp01\PTPs\\\<Partner Name>\PROD\COS\DailyReports\AccountActivity
- \\\sftp01\PTPs\\\<Partner Name>\PROD\COS\DailyReports\AccountBalance
- \\\sftp01\PTPs\\\<Partner Name>\PROD\COS\DailyReports\Overdrawn Account Report
- \\\sftp01\PTPs\\\<Partner Name>\PROD\COS\DailyReports\AchActivity
- \\\sftp01\PTPs\\\<Partner Name>\PROD\COS\DailyReports\RTP Daily Activity By Partner
- \\\sftp01\PTPs\\\<Partner Name>\PROD\COS\DailyReports\WireActivity
- \\\sftp01\PTPs\\\<Partner Name>\PROD\COS\DailyReports\Webhooks


[title] Daily account balance
[path] Reports/Accounts and payments/

## Daily account balance report

The Daily Account Balance by Partner report provides a daily snapshot of account balances for all master accounts in your organization.

Use this report to reconcile between what you requested from the Cross River Operating System (COS) and what COS actually processed and settled.

## Report in detail

The table below shows the different columns included in the report together with descriptions and explanations of the information they represent.

| Column                | Description                                                               |
| --------------------- | ------------------------------------------------------------------------- |
| Account\_Number       | The master account number                                                 |
| Account\_Title        | Descriptive title or name of the account                                  |
| Account\_Type         | Type of account:<br />* Deposit
* Wallet
* General Ledger
* Credit Card   |
| Date\_Account\_Opened | The date the account was originally opened in COS                         |
| Available\_Balance    | The current balance minus any holds or pending transactions               |
| Current\_Balance      | The actual settled balance of the account after all posted transactions}} |

## Understand current and available balance

The report includes two different balance values for each account. They are slightly different.

### Current balance

The current balance (also called ledger balance) represents the actual settled balance of the account after all posted transactions. This is the authoritative balance that includes all hard posted transactions that have completed the settlement process.

### Available balance

The available balance represents funds that are immediately accessible for transactions. It is calculated as:

Current Balance - Holds - Pending Authorizations +/- Memo Posts

The difference between current balance and available balance represents:

- Funds on hold (reducing available balance)
- Temporary memo post adjustments
- Pending transactions not yet settled

## Sample report

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/4hvUOg5mU1sCngl0n0Has/aMTXdOrEfFKxdXg3ik3Wn-20260517-065946.csv" label="[YourCompanyName]_Daily_Account_Balance_[YYYY]_[MM]_[DD]_[HHMMSS].csv"}


[title] Glossary
[path] /

This following table provides clear definitions of terms and concepts used across Cross River.

| **Term**             | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1099 form            | [IRS tax form](https://en.wikipedia.org/wiki/Form_1099) that reports on income earned from sources other than wages, salary, or tips (for which the W-2 is used). Institutions issue 1099’s for money paid as interest, dividends, etc.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ABA Routing Number   | Every financial institution has a [nine-digit code](https://en.wikipedia.org/wiki/ABA_routing_transit_number) to identify itself for financial transactions (can be found printed on the bottom of checks) The **A**merican **B**ankers **A**ssociation (ABA) developed the system in 1910 to facilitate the sorting, bundling, and delivery of paper checks to the drawer's (check writer's) bank for debit to the drawer's account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ACH                  | **A**utomated **C**learing **H**ouse. In the US, the ACH Network is the national automated clearing house (ACH) for electronic funds transfers. The ACH payment rail manages ACH inbound and outbound payments sent through the FedACH payment system.<br />In Cross River, ACH refers to our payment product that uses [ACH](docId:3tt7a4nY2fyVMzEEmFwUt).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Account              | Use to describe a demand deposit, savings, other asset accounts, or an extension of open -ended credit from which a customer is able to transact.<br />**Example**<br />Examples of account types include: savings, CDs, credit card                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| AFT                  | **A**ccount **F**unding **T**ransaction.<br />**General function**:<br />Pulls funds from an account and uses them to fund a non-merchant account, such as that of an end-consumer. For example, load a credit, debit, or prepaid card, top up a digital wallet, or fund a P2P money transfer.<br />**Cross River benefits**:<br />Through our Card Rails and Merchant Acquiring product, Cross River enables partners to originate pull payments from debit cards. This provides a convenient and cost-effective method to deliver and receive card payments. This automated payment solution saves time, improves cash flow, and minimizes risk exposure, while ensuring security and privacy of financial information.                                                                                                                                                                                                                       |
| Allowlist            | An allowlist is always a list of entities who are allowed to do something. In Cross River this could be a list of:<br />1) Customers who have been approved to open accounts
2) Low-risk customers
3) Domains allowed access to Cross River systems&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| AML                  | **A**nti-**M**oney **L**aundering. (See Money Laundering below).**History:**- In the 1980s, the war on drugs led governments again to turn to money laundering rules in an attempt to track and seize the proceeds of drug crimes in order to catch the organizers and individuals running drug empires. <br />The September 11 attacks in 2001, which led to the [Patriot Act](https://en.wikipedia.org/wiki/Patriot_Act) in the U.S. and similar legislation worldwide, led to a new emphasis on money laundering laws to combat terrorism financing.                                                                                                                                                                                                                                                                                                                                                                                         |
| API                  | **A**pplicatio&#x6E;**&#x20;P**rogramming **I**nterface. A software intermediary that allows two applications to talk to each other. An API is a tool that allow developers to access data and interact with external software components in response to a request.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ARN                  | An **a**cquirer **r**eference **n**umber, or ARN, is a unique number created in credit or debit card transactions when it transfers from the merchant’s bank through the payment processor, and to the cardholder’s bank.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| BaaS                 | **B**anking **a**s **a** **S**ervice. Offering banking services to customers.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| BAI                  | **B**usiness **A**pplicatio&#x6E;**&#x20;I**dentifier. This is a two-character code that identifies the intended use of a push payment. It determines the data carried in the message, the limits and economics that may apply to the transaction, and the sending and/or receiving issuer may use it to make an authorization decision.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Bank rail            | A bank rail is how funds are transferred from one account to another. Examples of rails include ACH, Instant Payments, and Wires.<br />Also called a *payment rail.*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Beneficiary          | A natural person or other legal entity who derives money or other benefits from something.  Usually used to indicate a person who receives distributions from a trust, will or life insurance policy. <br />It can also refer to a recipient of a payment.<br />**Example**<br />Jane is the beneficiary of her husband’s life insurance policy.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Beneficial owner     | Person who has a certain level of ownership in a business (an entity customer). Common use case would be creating accounts for small businesses, each beneficial owner (someone with 20% or more ownership in the company) must have their identity verified for the account to be opened.<br />**Example**<br />The beneficial owner of the land will have a right to the income from the property.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| BID                  | Pertaining to payment cards. **Business identifier**. a unique number assigned by Visa to a financial institution.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Blocklist            | Customers flagged by the system and prohibited from opening accounts. These customers are reported to the appropriate regulatory authority.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Book Transfer        | Use book transfer not *internal transfer* to describe the transfer of funds between two accounts that exist in COS (clients need permission to initiate a book transfer).<br />**Example**<br />We will assume any fees, costs or charges incurred in carrying out the book transfer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Borrower             | Use to describe a loan customer. Can be a consumer or entity (In the days before we sell the loan on, the borrower is our customer). <br />**Example**<br />Once approved for the loan via the MPL, the funds are transferred directly via Arix, to the borrower.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Client               | A client is a business who has a direct contractual relationship with <br />CRB to whom we provide financial products and services.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Configuration ID     | Specific to card management in COS, the Configuration ID refers to a specific configuration of a card product.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Consumer             | A consumer is a customer who uses the client’s services for personal use (non-business). The term can have regulatory significance. <br />**Example**<br />If the consumer is not automatically approved, their account is sent to the AML team for further due diligence and decisioning.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| COS                  | **C**ross River Bank **O**perating **S**ystem                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Credit               | Debt that is incurred or allowed to be incurred. i.e. a loan or the amount a customer is permitted to spend on a credit card                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Credit an account    | The act of adding/transferring funds to an account, opposite of *debit an account*.<br />**Example**<br />Interest will be compounded daily and will be credited to the account monthly.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Customer             | A customer is the ultimate benefactor of the products/services CRB offers. Use customer when referring to CRB customers and our partners’ customers. Do not use *client* or *consumer&#x20;*&#x69;n this context.<br />**Example**<br />Each customer will receive an email with the URL to access the account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Customer ID          | A unique GUID/UUID for a customer record. A customer record is the basic record needed in COS to perform certain actions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Debit an account     | The act of removing/transferring funds from an account, opposite of *credit an account*.<br />**Example**<br />This is used to push funds to one COS account and debit from another account                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Disburse             | To pay out funds (on behalf of a client to a third party).<br />**Example**<br />Once approved for the loan via the MPL, the funds are disbursed directly via Arix, to the beneficiary.medical service provider                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Endpoint (EP)        | The location in a communication channel through which an API accesses the resources required to perform its function.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Entity               | A non individual that can enter into contracts with CRB. <br />**Example**<br />A legal entity includes trusts, estates, LLCs, corporations, non-profits, and all organizational structures that engage in business with CRB.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Enums                | Enums, short for enumerations, are a special data type that represents a group of named constants. They are used to define a set of possible values for a variable, making the code more readable and maintainable.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| FDIC                 | [Federal Deposit Insurance Corporation](https://www.fdic.gov/) (FDIC) is one of two agencies that provide deposit insurance to depositors in U.S. depository institutions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Fees (COS)           | In COS, CRB charges our banking partners fees, our banking partners also charge fees to their customers. <br />**Examples of some of these fees&#xA0;**<br />**COS → partners:&#x20;**&#x6D;onthly platform access fees<br />**Partners →customers:&#x20;**&#x6D;onthly account maintenance fees, returned ACH fees                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Fees (Arix)          | In Arix, there are several different fees, accounting fees, origination fees, merchant fees. <br />**Example**<br />To offset the costs involved with originating loans, the bank charges its MPL partners an origination fee.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Feature              | A distinct functionality that adds value to a product but is not sold independently.<br />**Example**<br />Remote deposit capture (RDC) would not be sold without a DDA bank account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Fedwire              | [Fedwire ](https://www.frbservices.org/financial-services/wires)(formerly known as the Federal Reserve Wire Network) is a real-time gross settlement funds transfer system operated by the United States Federal Reserve Banks that allows financial institutions to electronically transfer funds between its more than 9,289 participants (as of March 19, 2009).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| FI                   | **F**inancial **I**nstitution. A company/organization that provides various financial services, acting as intermediaries between savers and borrowers. They are essential for the functioning of the economy, as they help manage the flow of money, enabling individuals and businesses to save, invest, and access credit. Financial institutions facilitate transactions and provide essential services                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| fiserv               | Global provider of financial services technology: [https://www.fiserv.com/](https://www.fiserv.com)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Funds                | Use for *money* that has been set aside for a specific purpose.<br />**Example**<br />Funds are typically made available within minutes to hours.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Funds flow (FoF)     | The path the funds take to get from one account to another                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| General ledger       | A **GL** (general ledger) account is a parent account belonging to an institution or organization. A GL account at CRB records all transactions for that account. The transactions are related to accounting elements, including assets, liabilities, equity, revenues, expenses, gains, and losses. See also *Subledger*.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| GUID                 | **G**loball&#x79;**&#x20;U**niqu&#x65;**&#x20;Id**entifier used to identify information such as transactions, customers, rails, and others.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| HFI and HFS          | After a loan is made, the funds are either **H**eld **F**or **I**nvestment or **H**eld **F**or **S**ale.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Holdback             | The clause in a commercial loan that puts aside a portion of the loan until a milestone is reached.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| IAM                  | **I**dentity and **A**ccess **M**anagement. IAM gives secure access to company resources like emails, databases, data, and applications to verified entities, ideally with a bare minimum of interference. The goal is to manage access so that the right people can do their jobs and the wrong people, like hackers, are denied entry.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| IAT                  | **I**nternation **A**CH **T**ransactions:  IAT was established by Nacha as an extension of ACH. IAT is designed for US banks (which payers must supply adequate IAT information) to monitor and report international transactions for OFAC compliance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Image cash letters   | Check processing for COS checks deposited at other banks.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| IRR                  | **I**nternal **R**ate o&#x66;**&#x20;R**etur&#x6E;**.&#x20;**&#x41; measure of an investment’s expected future rate of return and should not be confused with the actual investment return achieved, of an historical investment. The term internal refers to the fact that the calculation excludes external factors, such as the risk-free rate, inflation, the cost of capital, or various financial risks.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ISO 20022            | The [ISO standard](https://www.iso20022.org/) for electronic data interchange between financial institutions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| KYB                  | **K**now **Y**our **B**usiness (KYB) is a regulatory and legal requirement for banks and other related institutions to identify and verify the identity of their clients.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| KYC                  | **K**now **Y**our **C**ustomer (KYC) is the mandatory process of identifying and verifying the identity of your client when opening an account and periodically over time. Banks must make sure that their clients are genuinely who they claim to be.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Loan documents       | Use *loan documents* when describing Arix documentation. Don't use *loan paperwork&#x20;*&#x6F;&#x72;*&#x20;loan documentation.*<br />**Example**<br />Our partner then sends the loan documents directly to CRB.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Loan tape            | Loan Tape denotes an electronic file or set of files that captures lending product data from a financial firm's systems. (Also: Loan Data Tape, Loan Exposures Tape, Servicing Tape, "Loan-by-Loan File"). It is typically a database extract that needs to be specified in detail (the "scope" of the extract) or spreadsheet.<br />The term likely originates in magnetic data tapes used in earlier generations of computer storage. A loan tape can be considered as a one-time snapshot of a subset of an organization's Credit Portfolio Information.                                                                                                                                                                                                                                                                                                                                                                                     |
| Merchant             | Use to describe the entity who initiates payments to a recipient. Do not use *vendor* or *seller* in this context. (P2C)<br />**Example**<br />The merchant sends a request to transfer funds to a registered card.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Memo post            | *Memo post,* or *memo posting*, is a term used in traditional computerized banking environments where batch processing is employed. A memo post represents a temporary credit or debit transaction/entry made to an account for which the complete posting to update the balance will be done as part of EOD (end-of-day) batch processing.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Money laundering     | Money laundering is the illegal process of concealing the origins of money obtained illegally by passing it through a complex sequence of banking transfers or commercial transactions. The overall scheme of this process returns the "clean" money to the launderer in an obscure and indirect way. One problem of criminal activities is accounting for the proceeds without raising the suspicion of law enforcement agencies. **Interesting fact:** The [United Nations Office on Drugs and Crime](https://en.wikipedia.org/wiki/United_Nations_Office_on_Drugs_and_Crime) (UNODC) estimates that the amount of money laundered globally in one year is "2–5% of global GDP, or $800bn – $2tn in current US dollars.                                                                                                                                                                                                                       |
| Money Transactions   | The movement of money from one account to another or an account to a fund.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| MPL                  | **M**arket**p**lace **L**ender. An MPL offers loans to higher risk individuals who would otherwise be turned down for a loan. They approach Cross River with the relevant documentation and information to facilitate the loan of the money. The MPL itself does not lend the money. Only a bank can do the lending, and Cross River is a bank.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Nacha                | The [National Automated Clearing House Association](https://www.nacha.org/) manages the development, administration, and governance of the ACH Network, the backbone for the electronic movement of money and data in the United States.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| NARR                 | Short for narrative. Part of the ISO 200022 standard.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| NOC                  | **N**otification **o**f **C**hange (NOC) is a notification from the ACH network that something about a bank account has changed. For example, if you as a PayPal user submit a payment for which the name on the bank account has changed, then PayPal receives a NOC that lists the corrected name.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| OCT                  | **O**riginal **c**redit **t**ransaction.<br />**General function**:<br />A real-time payment method that enables the direct transfer of funds to cardholders around the globe. Using the push payment capabilities of Visa OCT and MasterCard MoneySend services, cardholders receive funds directly on the account linked to their card. In the Visa network, OCT sends payments via a ‘push' mechanism specifically over the VisaNet electronic payments network to specific card-based account holders. In turn, payments are credited into those cardholder’s accounts.<br />**Cross River benefits**:<br />Through our Card Rails and Merchant Acquiring product, Cross River enables partners to originate push payments to debit cards, resulting in a dramatic reduction in processing time. The wait for transaction approval drops from days to literally minutes, providing cardholders with access to their funds almost instantly. |
| ODFI                 | [Originating Depository Financial Institution](https://en.wikipedia.org/wiki/Originating_Depository_Financial_Institution#:~\:text=Originating%20Depository%20Financial%20Institution%20or,the%20originator%20of%20the%20transaction)<br />This term is used in connection with ACH Network (ACH). In the ACH flow, the ODFI acts as the interface between the Federal Reserve or ACH network and the originator of the transaction.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| OFAC                 | The [US Office of Foreign Assets Control](https://ofac.treasury.gov/) is responsible for administration and enforcement of economic and trade sanctions for the US Treasury Department.<br />OFAC maintains several lists of persons who are blocked under OFAC sanctions. US banks are required to check the OFAC lists every time a customer comes to open an account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Originator           | Use to describe the person who is initiating a transaction.<br />**Example**<br />Each originator can have many profiles from which they originate transactions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| PAN                  | **P**rimary **A**ccount **N**umber.  A primary account number refers to a 14-, 15-, 16-, or even up to 19-digit number that serves as a unique identifier on credit cards, debit cards, and other types of payment cards. The first set of numbers in a PAN identify the industry, processing network, and specific financial institution that issued it. The remaining numbers (except for the very last one) identify the individual cardholder. The last number is a check digit, which is used to verify the card number's accuracy. The PAN is usually embossed or laser-printed on the front of the card.                                                                                                                                                                                                                                                                                                                                 |
| Partner              | Use to describe the entity that contracts with CRB for services. A client is not necessarily a partner (they are only a partner if we service their customers as well).<br />**Example**<br />The partner must then send all the required loan documents to Arix.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Partner ID           | A unique GUID or UUID that Cross RIver assigns to the partner for use in COS. Partners cannot generate their own partnerId.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Payment              | The digital payment environment has made the terms payments and funds more popular as cash and money becomes increasingly dated.<br />**Example**<br />When we send money from a COS account to another bank, this is called a Push payment. If we were to take money from an account held at another bank, that would be a Pull payment.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Payment rail         | A payment rail is the method by which funds are transferred from one account to another. Examples of rails include ACH, RTP, and wires.<br />**Example**<br />Depending on the rail type, funding results might be immediate or take up to a few days.<br />Also called a *bank rail*.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| PCI                  | **P**ayment **c**ar&#x64;**&#x20;i**ndustry [data security standard](https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| PCC                  | **P**rocurement **C**redit **C**ard. Corporate credit cards designed to simplify the purchasing process for businesses, enhancing efficiency and control over spending.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| POS                  | **P**oint **o**f **S**ales system. A POS system, or point-of-sale system, is a combination of hardware and software that enables businesses to accept payments, track sales, manage inventory, and more from a single platform.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Product              | A distinct offering of features, that can be sold independently or as part of a solution. <br />**Example**<br />ACH, Wires, Bank Account, RTP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Product ID           | Indicates the banking product being applied when creating a card or account. The product ID is specific to a partner. No two partners use the same Product ID even if they are using the identical configurations for, for example, a card.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Pull Payment         | A pull is initiated by the receiver of the funds, drawn from the sender paying the funds. <br />**Example**<br />Using this card, you can pull payment from your account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Push Payment         | Used to describe the act of sending funds to a recipient.<br />**Example**<br />This service will allow funds to be pushed into a 3rd party account via their debit card.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Rail                 | A rail is the method by which payments are pushed to the payment network. <br />Some examples of the rails at CRB:<br />* ACH - electronic fund transfer (wires)
* Instant Payments
* International Payments
* RTP<br />**Example**<br />Depending on the rail type, funding results might be immediate or take up to a few days.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| RDFI                 | **R**eceiving **D**epository **F**inancial **I**nstitution (RDFI) is a financial institution qualified to receive ACH (Automated Clearing House) entries. These institutions should abide by the NACHA (National Automated Clearing House Association) Rules. The RDFI interlinks the Receiver's account with the Cards Association network.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Recipient            | Use to describe the consumer or entity who receives the funds.<br />**Example**<br />The recipient receives funds immediately in their account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Reference ID         | In the context of payments, this is a unique <br />Cross River  identifier. The first character of the ID represents the payment rail. For example, a Checks reference ID begins with “**C**”, a Wires reference ID begins with “**W**”.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| RPPS                 | **R**emote **P**ayment and **P**resentment **S**ervice (RPPS) is an electronic payment processing and presentment hub used by Mastercard. It includes routing and settlement within 24 hours, risk management procedures, and automatic editing of customer accounts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| RTP                  | [Real Time Payments.](https://www.theclearinghouse.org/payment-systems/rtp) The RTP domain integrates payments between banks through “The Clearing House”. An RTP payment is near instant. Within a matter of seconds, the money will be in the receiver account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| SBA                  | [US Small Business Association](https://www.sba.gov/)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Sender               | Use to describe the person or entity who sends the funds<br />**Example**<br />The sender's bank will charge the sender a fee for the payment order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Servicing partner    | Refers to the partnership between a borrower and the partner who is servicing their loan.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| SDN                  | **S**peciall&#x79;**&#x20;D**esignate&#x64;**&#x20;N**ationals And Blocked Persons List. <br />The OFAC  list was developed as a result of the September 11th attacks, and records the names of known criminals and terrorists. In addition to those criminals, the list may also contain the names of diplomats. US banks are required to check the OFAC  list every time a customer comes to open an account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Subledger            | CRB opens a master account for a partner (top-level client), if the partner then opens an account for his customers, this account is called a subledger. Outside of CRB, this subledger is often referred to as a virtual account.<br />**Example**<br />Credit transfers can be sent from deposit accounts and their associated subledgers.<br />In API endpoints for subledgers, “subaccount” is used instead of “subledger”. For instance, GET /v1/dda/subaccounts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| TCH                  | [The Clearing House](https://www.theclearinghouse.org/) (TCH) is a private banking association and payments company owned by 24 of the largest banks.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Transaction          | The movement of funds from one account to another or an account to a fund                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| W2 form              | Wage and tax statement form                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| X9 industry standard | A specialized electronic format that allows the Federal Reserve Bank and commercial banks to safely exchange digital check images. Instead of physically mailing paper checks across the country, banks package the check details and front-and-back photos into a secure digital file called an [Image Cash Letter](https://www.frbservices.org/binaries/content/assets/crsocms/financial-services/check/setup/frb-x937-standards-reference.pdf). This technology dramatically speeds up the clearing process, making your deposited funds available in your bank account much faster.                                                                                                                                                                                                                                                                                                                                                         |

Further information: [US Treasury Dept. Glossary](https://www.helpwithmybank.gov/glossary/index-glossary.html)

[title] Ops and admin intro
[path] /

:::Iframe{iframeHeight="0" code="<div class=&#x22;section-banner banner-opsandadmin&#x22;>&#xA;  <div class=&#x22;banner-text&#x22;>&#xA;    <!--<div class=&#x22;chip chip-info&#x22;>Tutorials</div>-->&#xA;    <h1 class=&#x22;banner-title h1&#x22;>Operate with confidence</h1>&#xA;    <div class=&#x22;banner-desc&#x22;>Operational resources, administrative guidance, and reports.</div>  </div>&#xA;</div>&#xA;<div class=&#x22;v-spacing-fix&#x22;>"}

:::

Whether you're&#x20;onboarding your operations team or managing day-to-day administrative tasks, this space&#x20;contains information to keep you running smoothly. Learn how to set up and use COS Explorer and Org Management. Access guidance for available&#x20;partner reports and configure secure SFTP connections for file transfers.&#x20;

:::Iframe{iframeHeight="0" code="<div class=&#x22;v-spacing-fix&#x22;>&#xA;<div class=&#x22;products-grid mt-3&#x22;>&#xA;    <a href=&#x22;https://docs.crossriver.com/ops-and-admin/cos-explorer&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-_o_Bkd0oifF7sIa9NS_d9-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>COS Explorer</h4><p>Manage your bank activiies</p></div>&#xA;        </div></a>&#xA;        <a href=&#x22;https://docs.crossriver.com/ops-and-admin/org-management-portal&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-_o_Bkd0oifF7sIa9NS_d9-20240910-163105.png&#x22;/></div>&#xA;          	<div><h4>Org Management</h4><p>Manage your users and clients</p></div>&#xA;        </div></a>&#xA;    <a href=&#x22;https://docs.crossriver.com/ops-and-admin/reports&#x22;><div class=&#x22;category flex items-center&#x22;>&#xA;          <div class=&#x22;product-logo&#x22;><img src=&#x22;https://archbee-image-uploads.s3.amazonaws.com/jFSTOPEggK3MxFb9qn5GS-jASfc4SD0XsZ3y2DUzWfg-20240910-163106.png&#x22;/></div>&#xA;          	<div><h4>Reports</h4><p>Cross River reports</p></div>&#xA;        </div></a>&#xA;   </div>&#xA;    </div>"}

:::


[title] Accounts and payments
[path] Reports/

## Cross River daily reports for partners

When you maintain funds in Cross River Bank, regardless of your [account product](docId\:ZQyAf4oeI1rEzpBOI78MJ), we provide you with a set of daily reports. The specific reports you receive depend on your operational model. Each report describes the previous day's activity.

- [COS reports setup](docId\:F2eBMpMlzI75Zi3w__qtW): Background and instructions for receiving COS daily reports
- [Overdrawn account](docId\:y9iaggJzXJGX_fMOAf4pH): A list of your customer accounts that are overdrawn, if your account product allows this
- [Daily account activity](docId\:jISaStzNJA3nRpW6VFbRw): All money movement for a single given master account
- [Daily account balance](docId\:iP_VT9ImwcK4gQryLpGC1): A snapshot of account balances for all of your master accounts
- [Daily ACH payments](docId\:t1BKGkyHRa_hGYMyGLrrE): All your ACH payment file drops, if you are enabled for ACH
- [Daily Instant Payments activity](docId\:udR6dnNOjtC_Vo6p6sWGm): All your Instant Payments (RTP, FedNow, CRNow), if you are enabled for Instant Payments
- [Daily Wire payments](docId:9QOajqRf_TeRt1GW-gE2o): All your wire payment file drops, if you are enabled for Wires
- [Webhooks report](docId:4wbKTU-L7WI3JixaWkCib):  All webhook events you are registered for that launched
- [Card payment reports](docId\:bvd4wcnis6ZULo9cP6S5K): Payment transaction and chargeback activity


[title] Org management portal
[path] /

## What is the org management portal

The Cross River Organization Management portal lets you manage your users of Cross River interfaces ("users") and API machine-to-machine clients ("clients") independently.

Using the org management portal increases your organization's security, as no one outside your organization needs to or is able to access secrets.

## Your org management admin

Your organization needs at least 2 IT admins in the org management portal to manage your users and clients. As part of your becoming a partner, you provide names and emails of 2 individuals you want to fulfill this role. Cross River sets them up as admins in org management. These admins set up and maintain any other users and clients your organization needs.

[Learn about basic admin actions](docId:6au9hHoZi9zOPRZmpVPUo)&#x20;

## Marketplace lending (MPL) partners

If you are an MPL partner, open a support ticket with [lending.support@crossriver.com](mailto\:lending.support@crossriver.com). to get access to the org management portal. Be sure to cc your , because they will need to approve your request.&#x20;

## COS Explorer users

While COS Explorer users appear in Org Management, their roles are managed within COS Explorer itself. This is a separate process. See [COS Explorer](docId\:tmGNa7cLKpnBTh7gSkEFA).&#x20;

##


[title] Initial access registration
[path] Org management portal/

:::hint{type="info"}
If you are trying to access COS Explorer, go to [COS Explorer first-time access](docId\:JwSEUG3ELF_gXLhy6T9KI).&#x20;
:::

## Register in the authentication server

Once you are onboarded into the Cross River system you need to register in our authentication server,*&#x20;Identity Server*, to access Cross River applications.

You fill in an enrollment form from your  where you specify at least 2 admin users for your organization, including their names, phone numbers, and email addresses. These organization admins can then [create and manage](docId:6au9hHoZi9zOPRZmpVPUo) the rest of your organization's users.

:::hint{type="info"}
If you are using the Sandbox environment, you'll need to repeat this process if you need to access the Production environment. Your users can use the same email/username for both environments. We recommend using a different password for each.
:::

The Identity Server endpoints are:

- **Sandbox: &#x20;**[https://idptest.crbcos.com/Account/Login](https://idptest.crbcos.com/Account/Login)
- **Production:&#x20;**[https://idp.crbcos.com/Account/Login](https://idp.crbcos.com/Account/Login)

:::hint{type="warning"}
**IMPORTANT**
**IP allowlisting**

Identity Server IP addresses are:

- 172.67.26.222
- 104.22.40.134
- 104.22.41.134

Organization management portal address:

- 66.206.202.116

The server is proxied via Cloudflare.

You can allow these FQDNs:

- `idptest.crbcos.com`
- `idp.crbcos.com`
:::

## Before you begin

Verify that you received a welcome email from *CrossRiver\_DO\_NOT\_REPLY\@crossriver.com* with a link to create your Cross River account.

:::hint{type="info"}
If you don't see the welcome email in your inbox, check your spam or blocked mail folders.
:::

## Prepare multifactor authentication (MFA)

To protect your identity, your account and information, you must sign in with multifactor authentication. Set up your authenticator app to be able to complete the registration process and to be able to login in the future.

:::hint{type="info"}
If you don't already have an authenticator app on your device, you need to install one.

For both Android and iOS, we recommend using one of these apps:

- Google Authenticator
- Microsoft Authenticator
:::

## Initiate registration

When you click the **Create your Cross River Account** link in the welcome email, the login wizard opens in a browser.&#x20;

If you leave the wizard at any time, click the link in the email to go back to where you left off.

- Navigate through the wizard, following the instructions there.
- In Step 2 of 5, note that if you are using a US-domestic phone number for SMS messages you need to confirm your phone number and give consent to receive an SMS message.
- In Step 4 of 5, if you prefer to manually enter a key instead of using the displayed QR code:
  1. Click **Show key** under the QR code. An alphanumeric string appears below the code. This is the key.
  2. In your authenticator app, enter the key as the *Secret&#x20;*&#x66;or this connection.
  3. Be sure the connection has a meaningful name. If you plan on using more than one environment, check that the name mentions the environment of that connection. For example, *Cross River Sandbox*.
  4. Open the connection to generate a 6-digit code to enter in the wizard.
- Note that Step 5 of 5, Recovery codes, times out after 10 minutes.
  You can only download the recovery codes once.

## Log in to a Cross River application

When you complete your initial login, you'll be redirected to the app you started with.

To access the application after that, navigate to the application URL and log in with your email address and password.

## Support

Email [customer.support@crossriver.com](mailto\:customer.support@crossriver.com).

[title] COS Explorer IP whitelist
[path] COS Explorer/

## Static IP

You must access COS Explorer from a static IP address. As part of onboarding your organization supplied Cross River with your static IPs. Reach out to your IT Support if you need help.

Learn more about [Static IPs](docId\:z3wbkvnCkkie3kEJtxLI9).&#x20;

## Identity Server IPs

Cross River uses its Identity Server to control access to its applications, including COS Explorer.&#x20;

If your organization enforces firewall rules for outbound traffic, ensure these Identity Server IP addresses are allowed (allowlisted):

- 172.67.26.222
- 104.22.40.134
- 104.22.41.134

The server is proxied via Cloudflare.

## Fully qualified domain name

You can allow these FQDNs for Identity Server:

- idptest.crbcos.com
- idp.crbcos.com


[title] COS Explorer first-time access
[path] COS Explorer/

## Initial user access registration procedure

Every first-time user of COS Explorer, including organizational admins, must register with the Cross River identity server system.

### Before you begin

Verify that you received a welcome email from *CrossRiver\_DO\_NOT\_REPLY\@crossriver.com* with a link to create your Cross River account in COS Explorer.

:::hint{type="info"}
If you don't see the welcome email in your inbox, check your spam or blocked mail folders.
:::

### Prepare multifactor authentication (MFA)

To protect your identity, your account and information, you must sign in with multifactor authentication. Set up your authenticator app to complete the registration process and to be able to login in the future.

:::hint{type="info"}
If you don't already have an authenticator app on your device, you need to install one.

For both Android and iOS, we recommend using one of these apps:

- Google Authenticator
- Microsoft Authenticator
:::

### Initiate registration

When you click the **Create your Cross River Account** link in the welcome email, the login wizard opens in a browser.&#x20;

If you leave the wizard at any time, click the link in the email to go back to where you left off.

- Navigate through the wizard, following the instructions there.
- In Step 2 of 5, note that if you are using a US-domestic phone number for SMS messages you need to confirm your phone number and give consent to receive an SMS message.
- In Step 4 of 5, if you prefer to manually enter a key instead of using the displayed QR code:
  1. Click **Show key** under the QR code. An alphanumeric string appears below the code. This is the key.
  2. In your authenticator app, enter the key as the *Secret&#x20;*&#x66;or this connection.
  3. Be sure the connection has a meaningful name. If you plan on using more than one environment, check that the name mentions the environment of that connection. For example, *Cross River Sandbox*.
  4. Open the connection to generate a 6-digit code to enter in the wizard.
- Note that Step 5 of 5, Recovery codes, times out after 10 minutes.
  You can only download the recovery codes once.

Now that you can access COS Explorer and depending on your [role](docId\:HchTD9gV45yckWkjLatDx) in the system, you can:

- Create users
- Create customers
- Send payments
- View and manage users, customer, and payments

## Access COS Explorer

Access COS Explorer from these links:

- Sandbox: [https://sandbox.crbcos.com/explorer2/](https://sandbox.crbcos.com/explorer2/)
- Production: [https://api.crbcos.com/explorer2/](https://api.crbcos.com/explorer2/)

## Learn more

See our [troubleshooting page](docId\:BoVOPz7Pdg2zUCg19UaMc) if you have issues logging in.

See our [tutorials](docId:0P2HLQo9f6k6Fz52NuHYv) for how-tos in both COS Explorer and via API.

[title] COS Explorer user roles
[path] COS Explorer/User management/

Use *roles* to manage what your users can do in COS Explorer.

Cross River creates roles based on input from your team. Each role gives access to specific products and actions.

You assign (at least) 2 members of your organization to be COS Explorer Admins. Cross River sets up these Admin users, who [create](docId\:Ky3rxaooJJDsyQmVmfD6P) and manage other users. When they add a user, they apply one or more roles to match that person’s job.

This role-based system makes it easy to manage access without customizing permissions for each person.

Cross River provides basic roles your admins can use right away:

| Role                           | What this role lets you do                                                                                                                                                                             |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Partner Core Read Only         | View all areas like Core, ACH, and Wires. *Every user needs this role.*                                                                                                                                |
| Partner Core Admin             | Add or change users. Another admin must approve each action.                                                                                                                                           |
| Partner Core Onboarding        | Handle customer onboarding:<br />\* Create and edit customer info<br />\* Manage accounts<br />\* Make book transfers<br />\* Add or remove restrictions<br />\* Stop payments and download statements |
| Partner Sub Ledger             | Manage subledgers:<br />\* Open, edit, or close subledgers<br />\* Update beneficiary info<br />\* Change account tiles<br />\* Add or remove restrictions                                             |
| Partner Book Transfers         | Move money between any two Cross River accounts                                                                                                                                                        |
| Partner ACH Origination        | Send ACH payments:<br />\* Cancel payments<br />\* Cancel in bulk (API only)<br />\* View payment info<br />\* Send client batches (API only)                                                          |
| Partner Wire Origination       | Send wire payments:<br />\* Cancel payments<br />\* View payment info<br />\* Reverse inbound wires<br />\* View ABA routing info<br />You must also set a **Wire Origination Limit** for this role.   |
| Partner Wire Callback Approver | Approve wire payments up to the limit you set with Cross River                                                                                                                                         |
| Partner Wire Origination Limit | Set the highest amount a user can send per wire payment                                                                                                                                                |


[title] COS product types and IDs
[path] /

## Product type

In Cross River, a *product type&#x20;*&#x69;s a uniquely configured financial product you offer your customers. For example, a product type could be a debit card or a savings account, configured according to your needs and specifications. You open accounts for your customers under any product type you define and configure together with us. Speak to your  for more details, including how to set up product types for your customers.

For example, you might want to configure a product type to be a savings account product that uses Wires and ACH payments. You can then offer your customers savings accounts with these services and configurations.

## Product ID

Cross River provides you with a product ID for each product type that you want to offer your customers. To open any kind of deposit account you must have a valid product ID and a customer ID (onboarded customer record ID) for the account holder. Note that the account holder must have at least one address and phone number in their customer record, and their OFAC status must be *Clear*. In addition, the classification of the customer must match the configured classification for the product. For example, only business customers can be added to a business product.

[title] Reports
[path] /

- [Accounts and payments](docId:_Y-8nEbvhN9E43-PV3YWj): Explains what you need to do to receive daily payment and account reports, and describes the reports.
- [Card payment reports](docId\:bvd4wcnis6ZULo9cP6S5K): To assist you with financial settlement and reconciliation, Cross River provides consolidated daily reports of payment transaction and chargeback activity.
- [Credit risk data reports](docId\:jKTOt5UGr29dnMBqS4fQm): You as a Cross River credit BIN sponsorship partner must supply Cross River on a monthly basis with a summary of specific credit risk metrics that are not visible to us.
- [Lending reports](docId\:Ary2An4hZY3uRKj7KFDFC): Arix servicing and transaction reports.


[title] Daily settlement (detailed)
[path] Reports/Card payment reports/

## Report description

Daily pre-settlement reports help you match payments with the batches of transactions they relate to.

The *detailed* daily settlement report provides a breakdown of all the individual transactions occurring during a date range that you specify.

You receive this report using the Secure File Transfer Protocol (SFTP). [SFTP](docId\:vS2CkU9_W5BQQlbjsBq25) lets you receive and send information securely.

This report is generated automatically, and pushed to your assigned subfolder on the secure server, where you access it.

:::hint{type="warning"}
**IMPORTANT**
SFTP must be [set up](docId\:vS2CkU9_W5BQQlbjsBq25)*&#x20;before* you create a report request with Cross River’s Data Team. This allows the reporting team to automate the delivery of Settlement and Reconciliation reports to the appropriate folders.
:::

Contact [ptpe.support@crossriver.com](mailto\:ptpe.support@crossriver.com) if you have any issues accessing your reports.

## Report distribution

Recipients include user-partners only.

## Report structure

Detailed daily settlement reports have 2 structures: *basic* and *expanded*.

The basic report filename uses this convention: **PartnerName\_CRB\_Settlement\_Details\_YYYY\_MM\_DD**

The expanded report filename uses this convention: **PartnerName\_CRB\_Settlement\_ExpandedDetails\_YYYY\_MM\_DD**

### Basic report structure

This table presents the basic report structure.

| No. | Field                         | Default | Description                                                                                                                                                                                                                                                                                                                                                       |
| --- | ----------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1   | TransactionRequestId          | ✓       | ID of the automatically created transaction associated with this settlement day                                                                                                                                                                                                                                                                                   |
| 2   | Network                       | ✓       | Card network the transaction was processed through                                                                                                                                                                                                                                                                                                                |
| 3   | ResponseCode                  | ✓       | Card networks return response codes to approve or decline a transaction. They follow the standards set by the [International Organization for Standardization (ISO) 8583:1987](https://en.wikipedia.org/wiki/ISO_8583), which defines a specific message format so that different systems can communicate. Every network can adapt the standard for their own use |
| 4   | ResponseDescription           | ✓       | Card networks return response codes to approve or decline a transaction. They follow the standards set by the [International Organization for Standardization (ISO) 8583:1987](https://en.wikipedia.org/wiki/ISO_8583), which defines a specific message format so that different systems can communicate. Every network can adapt the standard for their own use |
| 5   | TransactionRequestedAt        | ✓       | Time at which the transaction was requested by the partner. Dates in UTC.                                                                                                                                                                                                                                                                                         |
| 6   | ActualTransactionAt           | ✓       | Time at which the transaction was processed by the network. Dates in UTC.                                                                                                                                                                                                                                                                                         |
| 7   | CreditCardId                  | ✓       | Token for the signed-up card. The partner gets this upon the first card sign-up, per each cardholder.                                                                                                                                                                                                                                                             |
| 8   | Retrieval Reference Number    | ✓       | The transaction identifier vs. all parties, including the card networks. With the RRN, the partner can reach out directly to the network to get more info about the transaction.                                                                                                                                                                                  |
| 9   | TraceNumber                   | ✓       | CRB reference number: it is a unique number created in card transactions.                                                                                                                                                                                                                                                                                         |
| 10  | StatementDescriptor           | ✓       | An arbitrary string attached to the transaction. Often useful for displaying to users.                                                                                                                                                                                                                                                                            |
| 11  | Destination                   | ✓       | For Purchases:<br />* AFT: Settlement For Disbursements
* OCT: Network                                                                                                                                                                                                                                                                                            |
| 12  | Transaction Amount            | ✓       | Transaction Amount. Passed in to Create Transactions APIs:<br />* Push transactions (-) debit the account
* Pull transactions (+) credit the account                                                                                                                                                                                                              |
| 13  | InterchangeFee                | ✓       | The fee paid to the issuer for each payment made with the card network.<br />Every time a transaction is made via a card network (for example, Visa or Mastercard), the acquirer pays the cardholder’s bank an interchange fee. The merchants then pays the interchange fee back to the acquirer.                                                                 |
| 14  | InterchangeFeeIndicator       | ✓       | **D** - Debit<br />**C** - Credit                                                                                                                                                                                                                                                                                                                                 |
| 15  | InterchangeCategoryDescriptor | ✓       | Interchange fee rate description (defined by the card networks)                                                                                                                                                                                                                                                                                                   |
| 16  | EstimatedNetworkFee           | ✓       | The fee paid to the card scheme for using their network. The fee is an accumulation of a set of charges based on the specific ac                                                                                                                                                                                                                                  |
| 17  | NetworkFeeCode                | ✓       | Visa network fees                                                                                                                                                                                                                                                                                                                                                 |
| 18  | IntegrityNetworkFee           |         | The Transaction Integrity Fee (TIF) is assessed on debit and prepaid card transactions that do not qualify for Custom Payment Service (CPS).<br />The most common transaction to incur the transaction integrity fee will be keyed in debit card transactions that are processed without address verification information (AVS).                                  |
| 19  | SettlementDate                | ✓       | Cross River settlement date                                                                                                                                                                                                                                                                                                                                       |
| 20  | CutoffDate                    | ✓       | The network cutoff date, according to each network                                                                                                                                                                                                                                                                                                                |
| 21  | TransactionType               | ✓       | - Pull - transfers funds from a funding account
- Push - transfers funds to a receiving account
- Reversal
- Dispute                                                                                                                                                                                                                                              |

### Expanded report structure

This table presents the expanded report structure.

| No. | Field                         | Default | Description                                                                                                                                                                                                                                                                                                                                                       |
| --- | ----------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1   | TransactionRequestId          | ✓       | ID of the automatically created transaction associated with this settlement day                                                                                                                                                                                                                                                                                   |
| 2   | Network                       | ✓       | Card network the transaction was processed through                                                                                                                                                                                                                                                                                                                |
| 3   | ResponseCode                  | ✓       | Card networks return response codes to approve or decline a transaction. They follow the standards set by the [International Organization for Standardization (ISO) 8583:1987](https://en.wikipedia.org/wiki/ISO_8583), which defines a specific message format so that different systems can communicate. Every network can adapt the standard for their own use |
| 4   | ResponseDescription           | ✓       | Card networks return response codes to approve or decline a transaction. They follow the standards set by the [International Organization for Standardization (ISO) 8583:1987](https://en.wikipedia.org/wiki/ISO_8583), which defines a specific message format so that different systems can communicate. Every network can adapt the standard for their own use |
| 5   | TransactionRequestedAt        | ✓       | Time at which the transaction was requested by the partner. Dates in UTC.                                                                                                                                                                                                                                                                                         |
| 6   | ActualTransactionAt           | ✓       | Time at which the transaction was processed by the network. Dates in UTC.                                                                                                                                                                                                                                                                                         |
| 7   | CreditCardId                  | ✓       | Token for the signed-up card. The partner gets this upon the first card sign-up, per each cardholder.                                                                                                                                                                                                                                                             |
| 8   | RetrievalReferenceNumber      | ✓       | The transaction identifier vs. all parties, including the card networks. With the RRN, the partner can reach out directly to the network to get more info about the transaction.                                                           