curl --request GET \
--url https://api.platform.dakota.xyz/auto-transactions/{auto_transaction_id} \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.platform.dakota.xyz/auto-transactions/{auto_transaction_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/auto-transactions/{auto_transaction_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/auto-transactions/{auto_transaction_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"client_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"auto_account_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"destination_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"type": "onramp",
"status": "timed_out",
"failure_reason": "string",
"created_at": 1234567890,
"updated_at": 1234567890,
"completed_at": 1234567890,
"receipt": {
"imad": "string",
"omad": "string",
"input": {
"amount": "string",
"asset": "string",
"network": "string"
},
"subtotal": {
"amount": "string",
"asset": "string",
"network": "string"
},
"converted": {
"amount": "string",
"asset": "string",
"network": "string"
},
"output": {
"amount": "string",
"asset": "string",
"network": "string"
},
"exchange_rate": "string",
"external_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"dakota_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"client_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"developer_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"gas_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"payment_reference": "Invoice payment for services"
},
"crypto_details": {
"source_crypto_address": "string",
"source_network_id": "ethereum-mainnet",
"destination_crypto_address": "string",
"destination_network_id": "ethereum-mainnet",
"deposit_transaction_hash": "string",
"transaction_hash": "string"
},
"provider_id": "dakota",
"provider_external_id": "txn_123456789",
"provider_status": "processing"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "Invalid request",
"instance": "https://api.platform.dakota.xyz/auto-transactions/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#authentication-error",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "https://api.platform.dakota.xyz/auto-transactions/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Forbidden",
"instance": "https://api.platform.dakota.xyz/auto-transactions/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Not found",
"status": 404,
"detail": "Not found",
"instance": "https://api.platform.dakota.xyz/auto-transactions/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}Get details of a specific auto account transaction
Retrieves a single auto-transaction record by auto_transaction_id with execution details and status.
curl --request GET \
--url https://api.platform.dakota.xyz/auto-transactions/{auto_transaction_id} \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.platform.dakota.xyz/auto-transactions/{auto_transaction_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/auto-transactions/{auto_transaction_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/auto-transactions/{auto_transaction_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"client_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"auto_account_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"destination_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"type": "onramp",
"status": "timed_out",
"failure_reason": "string",
"created_at": 1234567890,
"updated_at": 1234567890,
"completed_at": 1234567890,
"receipt": {
"imad": "string",
"omad": "string",
"input": {
"amount": "string",
"asset": "string",
"network": "string"
},
"subtotal": {
"amount": "string",
"asset": "string",
"network": "string"
},
"converted": {
"amount": "string",
"asset": "string",
"network": "string"
},
"output": {
"amount": "string",
"asset": "string",
"network": "string"
},
"exchange_rate": "string",
"external_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"dakota_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"client_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"developer_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"gas_fee": {
"amount": "string",
"asset": "string",
"network": "string"
},
"payment_reference": "Invoice payment for services"
},
"crypto_details": {
"source_crypto_address": "string",
"source_network_id": "ethereum-mainnet",
"destination_crypto_address": "string",
"destination_network_id": "ethereum-mainnet",
"deposit_transaction_hash": "string",
"transaction_hash": "string"
},
"provider_id": "dakota",
"provider_external_id": "txn_123456789",
"provider_status": "processing"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "Invalid request",
"instance": "https://api.platform.dakota.xyz/auto-transactions/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#authentication-error",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "https://api.platform.dakota.xyz/auto-transactions/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Forbidden",
"instance": "https://api.platform.dakota.xyz/auto-transactions/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Not found",
"status": 404,
"detail": "Not found",
"instance": "https://api.platform.dakota.xyz/auto-transactions/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}Authorizations
Path Parameters
Unique identifier of the auto account transaction KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
Response
Auto account transaction details
A transaction relating to an auto account
KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
Type of transaction.
onramp, offramp, swap "onramp"
Current status of a transaction.
Auto-account transactions (GET /auto-transactions and the transaction.auto.* events) return the snake_case values.
Wallet transactions, the wallet.transaction.* events and the auto-account transactions listed by GET /transactions (the WalletTransaction, Transaction, NestedTransaction, FXPageKnownTransaction and FXTransaction objects) return a display label such as Waiting For Signature or Success, meant for showing to people. Branch on their status_code instead.
canceled is a legacy spelling and is never returned.
timed_out, not_started, in_progress, awaiting_confirmation, pending, processing, completed, invalid, failed, cancelled, canceled, reversed, rejected, broadcasted, pending_return, returned, pending_reversal, paused_credits, Timed Out, Not Started, In Progress, Awaiting Confirmation, Success, Invalid, Failed, Cancelled, Reversed, Rejected, Needs Manual Input, Waiting For Signature, Broadcasted, Pending Return, Returned, Pending Reversal, Unknown Unix timestamp when the transaction was created.
1234567890
Unix timestamp when the transaction was last updated.
1234567890
Provider identifier
"dakota"
Provider external transaction identifier
"txn_123456789"
Status reported by provider
"processing"
How the FX rate and fee on this transaction were priced. Absent when the transaction has no FX pricing, including every transaction created before it was introduced. Transaction and receipt endpoints omit it when there is none. In events (webhooks, GET /events and webhook history) a transaction.auto.updated or transaction.one_off.updated event carries fx_pricing set to null when the provider withdrew a previously quoted price and nothing replaced it; discard any quoted pricing you hold. The null may also appear when the provider repeats a withdrawal. A final pricing is never withdrawn.
Show child attributes
Show child attributes
Version 1 foreign outgoing amount_state unknown, with exact known source amount/currency and destination currency. Not a quote.
Version 1 verified outgoing native settlement and bank payout evidence. Absent is unknown.
Versioned incoming FX evidence: the foreign amount that arrived (source_asset, source_amount) and the net token output. In v2, source_amount_state is unknown while the original foreign amount is not yet known. The settled USD amount is not part of this object; see the receipt's converted amount.
Dakota's explanation of why the transaction failed, present if status is 'failed'. Descriptive text for display; use failure_code for logic.
Stable, machine-readable reason a transaction failed, was returned, or
was reversed. Pair it with the human-readable failure_reason,
return_reason or reversal_reason, which carry Dakota's message for
this code. Switch on failure_code, not on the message text, which may
be reworded.
failure_code is not a status: read status for the outcome. A
returned payout keeps its code on returned and on the later
reversed (the refund to the source wallet); payouts returned before
this behaviour shipped may carry none. payment_returned is the
code for a return whose bank reason does not map to a more specific
value, including a return that carried no bank code at all. A payout
that completes after a return (for example a resent wire) or after a
rejected ACH reversal has no failure_code.
The set of values is open: Dakota may add codes without a new API
version, so treat any value you do not recognize like processing_error.
processing_error is the general code for anything not listed; contact
support with the transaction ID.
recipient_account_not_found, recipient_account_number_invalid, recipient_account_blocked, recipient_account_type_unsupported, recipient_refused, recipient_name_mismatch, recipient_details_missing, recipient_address_invalid, recipient_bank_routing_invalid, recipient_bank_bic_invalid, limit_exceeded, payment_reversed_duplicate, payment_reversed_wrong_recipient, payment_reversed_wrong_amount, payment_returned, processing_error "recipient_account_not_found"
Why this transaction is held, when it is held for a reason you can act on. status
stays processing while it is held. null when the transaction is not held, or is held
for a reason that is not shared.
proof_of_address_required: the customer is an individual without an approved proof of address who went over the rolling 7-day volume limit. It is set on the deposit that went over the limit and on every later deposit until a valid proof of address is approved. When one is approved,hold_reasonreturns tonull.
An open set: ignore values you do not recognise. The value is sent in
transaction.auto.created and every change in transaction.auto.updated.
"proof_of_address_required"
Unix timestamp when the transaction was completed.
1234567890
Detailed receipt information for a transaction
Show child attributes
Show child attributes
Blockchain-specific details for crypto transactions
Show child attributes
Show child attributes
Originating sender details for onramp/offramp/swap transactions. Populated when source-side metadata is available (e.g., from inbound wire/ACH source data).
Show child attributes
Show child attributes
Return code (e.g., R01) when the transaction was returned by the receiving bank. NACHA/Fedwire codes for US bank rails; international (SWIFT) wire returns carry no NACHA code and may return a reduced amount after intermediary fees. A return can arrive with no code; failure_code is still set (to payment_returned). Cleared if the transaction later completes.
"R01"
Dakota's explanation of why the payment was returned. Descriptive text for display; use failure_code for logic.
"The recipient account could not be found."
Unix timestamp when the return was initiated.
1234567890
Unix timestamp deadline for return processing.
1234567890
Decimal amount recovered when a returned payout came back short and the customer bore the deduction, denominated in the transaction's own currency (the same basis as its face amount), so face amount minus this value is what the customer went without. Present only in that case; it never means zero. It is set once the refund to the source wallet has been sized. It is absent on pending_return and returned whatever came back, can first appear on pending_reversal, and stays on reversed. After the refund is sized, absence means the customer was refunded the face amount in full, because the whole amount came back, Dakota absorbed the bank's deduction (a refund made before the bank reported what it returned), or the rail reports no net figure (ACH never does). Cleared, like the other return fields, if the payout later completes (for example a returned wire that was resent and delivered).
"24955"
ACH reversal reason when the originator reverses the transaction (e.g., duplicate, receiver_incorrect). Cleared if the transaction later completes (the bank rejected the reversal).
"duplicate"
Unix timestamp when the reversal was initiated. Cleared if the transaction later completes (the bank rejected the reversal).
1234567890
Was this page helpful?

