Corgi BankDocumentation
OpenAPI

Issuing checks

The bank issues cashier's checks, pays the checks customers write on their accounts, and gives the account holder two controls over them: positive pay and stop payments. The check operator is a simulator today.

Cashier's checks

POST /transfers/checks/issue takes account_id, amount, currency_code, payee and requested_by, with optional remitter, memo and payee_address. Sending gl_code in place of account_id draws on the bank's own funds.

The payee and any remitter are screened first. Anything short of clear refuses the check: payments.screening_hit, payments.screening_review_required, or dependency_failed when screening cannot answer. The account's approval policy, payment limits and debit restrictions apply as they do to a book transfer. The check posts at once, a debit to the account and a credit to GL 2120, official checks outstanding, and the answer is an official check (ofck_) with a serial and status issued.

An operator (bank staff, or a service holding payments:write) can void a check that was never negotiated, which reverses the issuing journal, or stop a lost one, so that its presentment is returned. The states issued, paid, voided and stopped are published as payments.official_check.<status>.

Bill pay by mailed check

A counterparty saved with an address and no bank details gets pay_by check. A scheduled transfer to it issues a cashier's check on each run, with the counterparty's address as payee_address. The schedule's last_transfer_id is the official check's id.

Positive pay

PUT /positive-pay/accounts/{id} enrolls an account. payee_match adds the payee to the comparison. default_decision is return unless pay is sent. decide_by_hour is an Eastern hour, 12 by default, on the banking day after presentment.

The customer's issue file goes to POST /positive-pay/accounts/{id}/issues as issues, each with a check_number and amount and optionally payee, issued_on and void. A presented check that matches an issue on number and amount is paid, and the issue becomes paid. One that does not match becomes an exception with a reason: no_issue, void_issue, duplicate_issue, amount_mismatch or payee_mismatch.

GET /positive-pay/exceptions lists them with their decide_by time. Decide one with POST /transfers/checks/{id}/pay or /return. The account is not debited while an exception waits. Past the deadline a scheduled run applies the default decision. A returned exception goes back with reason Q, not authorized.

Stop payments

POST /stop-payments takes account_id, check_number and requested_by. check_number_high makes it a range, and amount narrows it to that amount. A written order lasts six months. An order sent with oral lasts fourteen days unless it is confirmed in writing. The account is charged the stop payment fee (fee_journal_id). If it cannot cover the fee, the order still stands. States are active, released and expired.

Presentment

Checks drawn on the bank arrive from the operator as an image cash letter, an X9.100-187 file, at POST /rails/check/inbound. Only the check connector's identity may call it, and the file must match the operator's settled receipt. In the sandbox, POST /simulate/transfers/checks/presentment builds one from a list of items. Each item becomes a presented check (incl_) that is paid, returned or an exception.

Finding, in the order checkedOutcome
No account has the number on the checkreturned E
The account is closedreturned D
The account is frozen or dormantreturned F
A restriction forbids debitsexception debit_restricted, no deadline
An active stop payment covers the checkreturned C
The same check number and amount was paid beforereturned Y
The payee is not clear of sanctions screeningexception sanctions_screening, no deadline
Positive pay is on and the check does not matchexception with a decide_by
The funds are short and overdraft terms do not cover itreturned A
Otherwisepaid: debit the account, credit 1010

A cashier's check is presented against the bank's official check account and its serial, and is paid out of 2120. An unknown serial, a different amount or a voided check is returned N, a paid one Y and a stopped one C.

Returned items go back to the operator in a return cash letter. Each item publishes payments.inclearing_item.paid, .returned or .exception. The account reconciliation file reports them by month.

The objects are in Check Transfer, Positive Pay and Stop Payment.

to move to open esc to close