> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# Capture check (RDC)

POST https://api-sandbox.payabli.com/api/CheckCapture/CheckProcessing
Content-Type: application/json

Captures a check for Remote Deposit Capture (RDC) using the provided check images and details. This endpoint handles the OCR extraction of check data including MICR, routing number, account number, and amount. See the [RDC guide](/developers/developer-guides/pay-in-rdc) for more details.

Reference: https://docs.payabli.com/developers/api-reference/moneyin/check-capture

## Authentication

- `Authorization` header (bearer token, required)
- `requestToken` header (required) — Long-lived API token sent in the `requestToken` header. See [API token authentication](/developers/api-tokens).

## Servers

- `https://api-sandbox.payabli.com/api` (Sandbox, default)
- `https://api.payabli.com/api` (Production)

## Request

### Body (application/json)

- `entryPoint` (string, required) — The entity's entrypoint identifier. [Learn more](/developers/api-reference/api-overview#entrypoint-vs-entry).
- `frontImage` (string, required) — Base64-encoded front check image. Must be JPEG or PNG format and less than 1MB. Image must show the entire check with no partial, blurry, or illegible portions.
- `rearImage` (string, required) — Base64-encoded rear check image. Must be JPEG or PNG format and less than 1MB. Image must show the entire check with no partial, blurry, or illegible portions.
- `checkAmount` (integer, required) — Check amount in cents (maximum 32-bit integer value).

## Response

### 200

Success response with check processing results.

- `success` (boolean, required) — Indicates whether the check processing was successful.
- `processDate` (string, required) — The date and time when the check was processed (ISO 8601 format).
- `amountDiscrepancyDetected` (boolean, required) — Flag indicating whether there's a discrepancy between the provided amount and the OCR-detected amount.
- `endorsementDetected` (boolean, required) — Flag indicating whether an endorsement was detected on the check.
- `checkType` (double, required) — Identifier for the type of check. Personal = 1 Business = 2 Only personal checks are supported for check capture.
- `id` (string, optional) — Unique ID for the check capture, to be used with the /api/MoneyIn/getpaid endpoint.
- `ocrMicr` (string, optional) — The OCR-extracted MICR (Magnetic Ink Character Recognition) line from the check.
- `ocrMicrStatus` (string, optional) — Status of the MICR extraction process.
- `ocrMicrConfidence` (string, optional) — Confidence score for the MICR extraction (0 to 100).
- `ocrAccountNumber` (string, optional) — The bank account number extracted from the check.
- `ocrRoutingNumber` (string, optional) — The bank routing number extracted from the check.
- `ocrCheckNumber` (string, optional) — The check number extracted from the check.
- `ocrCheckTranCode` (string, optional) — The transaction code extracted from the check.
- `ocrAmount` (string, optional) — The amount extracted via OCR from the check.
- `ocrAmountStatus` (string, optional) — Status of the amount extraction process.
- `ocrAmountConfidence` (string, optional) — Confidence score for the amount extraction (0 to 100).
- `errors` (list of string, optional) — List of error messages that occurred during processing.
- `messages` (list of string, optional) — List of informational messages about the processing.
- `carLarMatchConfidence` (string, optional) — Confidence score for the match between Courtesy Amount Recognition (CAR) and Legal Amount Recognition (LAR).
- `carLarMatchStatus` (string, optional) — Status of the CAR/LAR match.
- `frontImage` (string, optional) — Processed front image of the check (Base64-encoded).
- `rearImage` (string, optional) — Processed rear image of the check (Base64-encoded).
- `referenceNumber` (string, optional) — Reference number for the transaction.
- `pageIdentifier` (string, optional) — Auxiliary validation used internally by payment pages and components.

## Examples

**Request**

```json
{
  "entryPoint": "8cfec329267",
  "frontImage": "/9j/4AAQSkZJRgABAQEASABIAAD...",
  "rearImage": "/9j/4AAQSkZJRgABAQEASABIAAD...",
  "checkAmount": 12550
}
```

**Response**

```json
{
  "success": true,
  "processDate": "2025-04-10T04:17:09.875Z",
  "amountDiscrepancyDetected": false,
  "endorsementDetected": true,
  "checkType": 1,
  "id": "txn_abc123def456",
  "ocrMicr": "⑆123456789⑆ ⑈123456⑈ 0123",
  "ocrMicrStatus": "SUCCESS",
  "ocrMicrConfidence": "95",
  "ocrAccountNumber": "123456",
  "ocrRoutingNumber": "123456789",
  "ocrCheckNumber": "0123",
  "ocrCheckTranCode": "",
  "ocrAmount": "125.50",
  "ocrAmountStatus": "SUCCESS",
  "ocrAmountConfidence": "98",
  "errors": [],
  "messages": [
    "Check processed successfully"
  ],
  "carLarMatchConfidence": "97",
  "carLarMatchStatus": "MATCH",
  "referenceNumber": "REF_XYZ789",
  "pageIdentifier": null
}
```

**SDK Code**

```typescript
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        clientId: "YOUR_CLIENT_ID",
        clientSecret: "YOUR_CLIENT_SECRET",
    });
    await client.checkCapture.checkProcessing({
        entryPoint: "8cfec329267",
        frontImage: "/9j/4AAQSkZJRgABAQEASABIAAD...",
        rearImage: "/9j/4AAQSkZJRgABAQEASABIAAD...",
        checkAmount: 12550,
    });
}
main();

```

```python
from payabli import payabli

client = payabli(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
)

client.check_capture.check_processing(
    entry_point="8cfec329267",
    front_image="/9j/4AAQSkZJRgABAQEASABIAAD...",
    rear_image="/9j/4AAQSkZJRgABAQEASABIAAD...",
    check_amount=12550,
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliApiClient;
import io.github.payabli.api.resources.checkcapture.requests.CheckCaptureRequestBody;

public class Example {
    public static void main(String[] args) {
        PayabliApiClient client = PayabliApiClient.withCredentials("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
            .build()
        ;

        client.checkCapture().checkProcessing(
            CheckCaptureRequestBody
                .builder()
                .entryPoint("8cfec329267")
                .frontImage("/9j/4AAQSkZJRgABAQEASABIAAD...")
                .rearImage("/9j/4AAQSkZJRgABAQEASABIAAD...")
                .checkAmount(12550)
                .build()
        );
    }
}
```

```ruby
require "payabli"

client = Payabli::Client.new(api_key: "YOUR_API_KEY_HERE")

client.check_capture.check_processing(
  entry_point: "8cfec329267",
  front_image: "/9j/4AAQSkZJRgABAQEASABIAAD...",
  rear_image: "/9j/4AAQSkZJRgABAQEASABIAAD...",
  check_amount: 12550
)

```

```csharp
using PayabliApi;
using System.Threading.Tasks;

public partial class Examples
{
    public async Task Example() {
        var client = new PayabliApiClient(
            clientId: "YOUR_CLIENT_ID",
            clientSecret: "YOUR_CLIENT_SECRET"
        );

        await client.CheckCapture.CheckProcessingAsync(
            new CheckCaptureRequestBody {
                EntryPoint = "8cfec329267",
                FrontImage = "/9j/4AAQSkZJRgABAQEASABIAAD...",
                RearImage = "/9j/4AAQSkZJRgABAQEASABIAAD...",
                CheckAmount = 12550
            }
        );
    }

}

```

```go
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithClientCredentials(
            "YOUR_CLIENT_ID",
            "YOUR_CLIENT_SECRET",
        ),
    )
    request := &payabli.CheckCaptureRequestBody{
        EntryPoint: "8cfec329267",
        FrontImage: "/9j/4AAQSkZJRgABAQEASABIAAD...",
        RearImage: "/9j/4AAQSkZJRgABAQEASABIAAD...",
        CheckAmount: 12550,
    }
    client.CheckCapture.CheckProcessing(
        context.TODO(),
        request,
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\CheckCapture\Requests\CheckCaptureRequestBody;

$client = new PayabliClient(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
);
$client->checkCapture->checkProcessing(
    new CheckCaptureRequestBody([
        'entryPoint' => '8cfec329267',
        'frontImage' => '/9j/4AAQSkZJRgABAQEASABIAAD...',
        'rearImage' => '/9j/4AAQSkZJRgABAQEASABIAAD...',
        'checkAmount' => 12550,
    ]),
);

```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "entryPoint": "8cfec329267",
  "frontImage": "/9j/4AAQSkZJRgABAQEASABIAAD...",
  "rearImage": "/9j/4AAQSkZJRgABAQEASABIAAD...",
  "checkAmount": 12550
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/CheckCapture/CheckProcessing")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```