Single ledger entries and book transfers
The Post payment feature records financial movements in the ledger by applying debits and credits to accounts. It supports single ledger entries and book transfers, providing a consistent way to represent the flow of funds into and out of your system.
You use Post payment to perform the following types of operations:
Single ledger entry
A single ledger entry is a permanent record of a debit or credit applied to a specific account, representing one side of a financial transaction within the Pismo platform. You use a single ledger entry to apply a one-sided credit or debit to one account. The request must include either a credit object or a debit object.
Use a credit to add funds to the account and a debit to remove funds from the account. This pattern is typically used for one-sided adjustments, such as fees, corrections, or external funding events that do not require a paired posting within the same request.
Single ledger entries and book transfers let you update account balances using the Post payment API.
Debit (cash out)
Applies a debit to an account to reduce its balance. Use this operation for payments, fees, or any outgoing movement of funds.
Credit (cash in)
Applies a credit to an account to increase its balance. Use this operation for deposits, adjustments, or any incoming movement of funds.
Book transfer
Moves funds between two accounts by applying a debit to the source account and a credit to the destination account within a single request. This ensures both postings are processed together as one balanced transaction.
Post payment also supports confirmation and cancellation flows. Cancellation reverses a transaction by applying opposite postings, preserving a complete history of all ledger activity.
This guide explains when to use each operation and how the available endpoints support these workflows.
How it works
This diagram illustrates the unified flow for single ledger entries, book transfers, and cancellation.
The diagram shows how Post payment operations affect account balances based on the transaction type. A request can result in a single credit, a single debit, or a book transfer.
Single credit
Applies a credit to one account, increasing its balance. Use this operation to represent incoming funds.
Single debit
Applies a debit to one account, decreasing its balance. Use this operation to represent outgoing funds.
Book transfer
Moves funds between two accounts by applying both a debit and a credit in the same request:
- Debits the source account (balance decreases)
- Credits the destination account (balance increases)
This operation redistributes funds between accounts without changing the total balance across the system.
The flow also supports cancellation. When you cancel a transaction, the Pismo platform applies opposite postings to reverse the original debit and credit, preserving a complete record of the transaction history.
Operation selection patterns
| Objective | Recommended pattern |
|---|---|
| Add funds to an account | Single ledger entry with credit |
| Remove funds from an account | Single ledger entry with debit (optionally include debit.earmark_id) |
| Move funds between accounts | Book transfer with debit and credit |
| Move funds with override behavior (when permitted) | Book transfer with debit and credit, using force_post: true (do not include earmark_id on the debit) |
Required fields
Each post payment request requires a processing_code, which defines the financial operation and determines how the Pismo platform processes the posting. Refer to Post payment and Create transaction type for more information.
Each posting requires an account ID. Depending on the endpoint, use external_account_id or account_id to identify the target account. Refer to Post payment and Post payment (Pismo account ID) for more information.
The tracking_id uniquely identifies the transaction and is used for balance reconciliation and cancellation.
Post payment validation checklist
Before sending a Post payment request:
-
Confirm that each leg uses the correct
external_account_id(debit and credit). -
Confirm that the
processing_codeis valid and mapped to the intended operation type. -
If you use
debit.earmark_id, confirm that the earmark exists and is the intended balance source. -
If you set
force_post: true, do the following:-
Confirm that the account status allows force operations.
-
Don’t use force with earmark debit (not supported per reference).
-
Post a credit
Submit a request that contains only a credit object.
POST /payments
{
"tracking_id": "txn-001",
"credit": {
"external_account_id": "acct-123",
"processing_code": "CREDIT_CODE",
"amount": 100.00,
"currency": "USD",
"description": "Cash-in"
}
}The Pismo platform posts a credit and increases the account balance.
Post a debit
Submit a request that contains only a debit object.
POST /payments
{
"tracking_id": "txn-002",
"debit": {
"external_account_id": "acct-123",
"processing_code": "DEBIT_CODE",
"amount": 50.00,
"currency": "USD",
"description": "ATM withdrawal"
}
}The Pismo platform posts a debit and decreases the account balance.
Debit from an earmark
Include earmark_id to debit from a reserved balance.
{
"tracking_id": "txn-003",
"debit": {
"external_account_id": "acct-123",
"processing_code": "DEBIT_CODE",
"amount": 25.00,
"currency": "USD",
"earmark_id": "earmark-001"
}
}The Pismo platform deducts the amount from the earmarked balance instead of the available balance.
Execute a book transfer
Submit a request that contains both debit and credit objects.
POST /payments
{
"tracking_id": "txn-004",
"debit": {
"external_account_id": "acct-source",
"processing_code": "TRANSFER_DEBIT",
"amount": 100.00,
"currency": "USD"
},
"credit": {
"external_account_id": "acct-destination",
"processing_code": "TRANSFER_CREDIT",
"amount": 100.00,
"currency": "USD"
}
}The Pismo platform debits the source account and credits the destination account in a single operation.
Force a book transfer
Set force_post to true to override validation rules.
{
"tracking_id": "txn-006",
"force_post": true,
"debit": {
"external_account_id": "acct-source",
"processing_code": "TRANSFER_DEBIT",
"amount": 200.00
},
"credit": {
"external_account_id": "acct-destination",
"processing_code": "TRANSFER_CREDIT",
"amount": 200.00
}
}The Pismo platform attempts the transfer even if standard constraints would prevent it.
Cancel a payment
Use the Cancel payment endpoint to reverse a transaction.
POST /payments/cancel
{
"original_tracking_id": "txn-004",
"tracking_id": "txn-004-cancel",
"cancellation_method": "INSTANT"
}The Pismo platform creates a reversal transaction by applying opposite postings.
Cancellation methods
INSTANTapplies the reversal at the current business date.ORIGINAL_DATESapplies the reversal using the original transaction date.
If you do not provide a value, the Pismo platform defaults to INSTANT.
Updated 3 days ago