Get transaction
curl --request GET \
--url https://api.getlemma.com/v0/transactions/{transaction_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getlemma.com/v0/transactions/{transaction_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getlemma.com/v0/transactions/{transaction_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getlemma.com/v0/transactions/{transaction_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getlemma.com/v0/transactions/{transaction_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getlemma.com/v0/transactions/{transaction_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getlemma.com/v0/transactions/{transaction_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "transaction_Wp5mRx3nKv8bTh2d",
"account_id": "account_Rv4nBt8xKw2pMh6s",
"amount": -325000,
"card_id": null,
"occurred_at": "2026-03-12T16:45:00Z",
"source": {
"category": "ach_transfer_intention"
},
"counterparty": {
"type": "external_account",
"external_account": {
"id": "external_account_Bx5nTm8hKw3pVd7c"
}
}
}
{
"statusCode": 404,
"error": "Not found",
"message": "Transaction not found"
}
Transactions
Get transaction
Retrieve a single transaction by its ID.
GET
/
v0
/
transactions
/
{transaction_id}
Get transaction
curl --request GET \
--url https://api.getlemma.com/v0/transactions/{transaction_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getlemma.com/v0/transactions/{transaction_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getlemma.com/v0/transactions/{transaction_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getlemma.com/v0/transactions/{transaction_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getlemma.com/v0/transactions/{transaction_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getlemma.com/v0/transactions/{transaction_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getlemma.com/v0/transactions/{transaction_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "transaction_Wp5mRx3nKv8bTh2d",
"account_id": "account_Rv4nBt8xKw2pMh6s",
"amount": -325000,
"card_id": null,
"occurred_at": "2026-03-12T16:45:00Z",
"source": {
"category": "ach_transfer_intention"
},
"counterparty": {
"type": "external_account",
"external_account": {
"id": "external_account_Bx5nTm8hKw3pVd7c"
}
}
}
{
"statusCode": 404,
"error": "Not found",
"message": "Transaction not found"
}
Returns a single transaction object.
Path parameters
string
required
The unique identifier of the transaction to retrieve.
Response
string
Unique identifier for the transaction.
string
The ID of the bank account this transaction belongs to.
integer
The transaction amount in cents. Positive for credits (money in), negative for
debits (money out).
string | null
The ID of the Lemma card that produced this transaction.
null for
transactions that did not originate from a card.object
Information about the origin of the transaction.
Show Source object
Show Source object
string
The type of transaction source. We will add additional values for this
enum over time; your application should be able to handle such additions
gracefully. Not every transaction source will have additional details.
object
Show Account Transfer Intention object
Show Account Transfer Intention object
string
The description given to this internal transfer between accounts.
object
Show ACH Transfer Return object
Show ACH Transfer Return object
string
The ACH trace number.
string
The three-character ACH return reason code.
Show ACH return reason codes
Show ACH return reason codes
| Code | Description |
|---|---|
R01 | Insufficient Funds |
R02 | Account Closed |
R03 | No Account on File |
R04 | Invalid Account Number Structure |
R05 | Unauthorized Debit to Consumer Account Using Corporate SEC Code |
R06 | Returned per ODFI’s Request |
R07 | Authorization Revoked by Customer |
R08 | Payment Stopped |
R09 | Uncollected Funds |
R10 | Customer Advises Unauthorized, Improper, Ineligible, or Incomplete |
R11 | Customer Advises Entry Not in Accordance with Terms of Authorization |
R12 | Account Sold to Another DFI |
R13 | Invalid ACH Routing Number |
R14 | Representative Payee Deceased or Unable to Continue in That Capacity |
R15 | Beneficiary or Account Holder Deceased |
R16 | Account Frozen or Entry Returned per OFAC Instruction |
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 Identification Number |
R23 | Credit Entry Refused by Receiver |
R24 | Duplicate Entry |
R25 | Addenda Error |
R26 | Mandatory Field Error |
R27 | Trace Number Error |
R28 | Routing Number Check Digit Error |
R29 | Corporate Customer Advises Not Authorized |
R30 | RDFI Not Participant in Check Truncation Program |
R31 | Permissible Return Entry |
R32 | RDFI Non-Settlement |
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 or Source Document Presented |
R40 | Return of ENR Entry |
R41 | Invalid Transaction Code |
R42 | Routing Number / Account Number Mismatch |
R43 | Invalid DFI Account Number |
R44 | Invalid Individual Identifier |
R45 | Invalid Individual Name |
R46 | Invalid Representative Payee Indicator |
R47 | Duplicate Enrollment |
R50 | State Law Affecting RCK Acceptance |
R51 | Item is Ineligible, Notice Not Provided |
R52 | Stop Payment on Item |
R53 | Item and ACH Entry Presented for Payment |
R61 | Misrouted Return |
R62 | Incorrect Trace Number |
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 / Notice Not Provided |
R71 | Misrouted Dishonored Return |
R72 | Untimely Dishonored Return |
R73 | Timely Original Return |
R74 | Corrected Return |
R75 | Return Not a Duplicate |
R76 | No Errors Found |
R77 | Non-Acceptance of R62 Dishonored Return |
R78 | Non-Acceptance of R68 Dishonored Return |
R79 | Incorrect Data in Return Entry |
R80 | IAT Entry |
R81 | Non-Participant in IAT Program |
R82 | Invalid Foreign Receiving DFI Identification |
R83 | Foreign Receiving DFI Unable to Settle |
R84 | Entry Not Processed by Gateway |
R85 | Incorrectly Coded Outbound International Payment |
object
A payment received from a patient or payer via credit card.
object
A fee charged for processing a card payment.
object
A chargeback dispute initiated by the cardholder.
object
A fee charged by the card processor for handling a chargeback dispute.
object
A reversal of a chargeback that was previously filed by the cardholder.
object
A refund issued to a patient or payer who paid via credit card.
object
A fee charged by the card processor for handling a refund.
object
object
object
object
object
object
Show Inbound ACH Transfer object
Show Inbound ACH Transfer object
string
The ACH network trace number, assigned by the ACH network. To
reconcile a healthcare claim payment, match on the TRN carried in
addenda instead — the network trace is not known until after the
payment is sent.string
The name of the originating company.
string
The ID of the originating company.
string
The entry description set by the originator.
string | null
The descriptive date set by the originator.
string | null
Discretionary data set by the originator.
string[]
The raw freeform addenda lines carried by the transfer (for example
the 835/837
TRN and REF claim-payment segments), in the order the
payer sent them. To reconcile a healthcare claim payment, match the
TRN carried here against the TRN in your 835 ERA. Present only when
the transfer includes addenda.object
object
object
Show Inbound Wire Transfer object
Show Inbound Wire Transfer object
string | null
The Fedwire input message accountability data (IMAD).
string | null
The name of the sender.
string | null
The sender’s address.
string | null
The name of the creditor.
string | null
Free-form remittance information.
string | null
The end-to-end ID.
string | null
The unique end-to-end transaction reference (UETR).
object
A payment of an invoice between Lemma accounts.
object
A manually initiated adjustment, including a fee charged or funds credited
by Lemma.
object
A deposit bonus credited by Lemma.
object
A fee charged by Lemma.
object
A one-off bonus credited by Lemma.
object
A recurring subscription fee charged by Lemma.
object
A loan draw from or a payment toward a Lemma loan.
object
Show Real-Time Payments Transfer Acknowledgement object
Show Real-Time Payments Transfer Acknowledgement object
string | null
Free-form remittance information.
object | null
The other party in the transaction, if known.
Show Counterparty object
Show Counterparty object
string
The kind of account the counterparty is. One of
bank_account,
external_account, or fixed_fee_loan.object | null
Show Bank account object
Show Bank account object
string
The Lemma bank account ID of the other account in the transfer.
object | null
Show External account object
Show External account object
string
The saved recipient ID the money
was sent to.
{
"id": "transaction_Wp5mRx3nKv8bTh2d",
"account_id": "account_Rv4nBt8xKw2pMh6s",
"amount": -325000,
"card_id": null,
"occurred_at": "2026-03-12T16:45:00Z",
"source": {
"category": "ach_transfer_intention"
},
"counterparty": {
"type": "external_account",
"external_account": {
"id": "external_account_Bx5nTm8hKw3pVd7c"
}
}
}
{
"statusCode": 404,
"error": "Not found",
"message": "Transaction not found"
}