Skip to main content
POST
Reject expense

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

x-finops-version
string<date>
required
x-organization-id
string<uuid>
required

The ID of the entity that owns the requested resource.

Example:

"9d2b4c8f-2087-4738-ba91-7359683c49a4"

Path Parameters

expense_id
string<uuid>
required

Body

application/json
reject_reason
string | null

Optional reason explaining why the transaction was rejected. Whitespace is stripped. Pass null to clear.

Required string length: 1 - 1024

Response

Successful Response

id
string<uuid>
required

A unique system-generated ID assigned to this transaction.

amount
integer
required

The transaction amount in minor units. Positive values for in-flow, negative values for out-flow.

currency
enum<string>
required

ISO currency code.

Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLP,
CNY,
COP,
CRC,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SEK,
SGD,
SHP,
SLE,
SOS,
SRD,
SSP,
SVC,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VND,
VUV,
WST,
XAF,
XCD,
XOF,
XPF,
YER,
ZAR,
ZMW
Example:

"USD"

entity_id
string<uuid>
required

ID of the entity that owns this resource.

expense_status
enum<string>
required

The current expense approval status of the transaction.

Available options:
new,
approve_in_progress,
approved,
rejected,
canceled,
deleted
has_validation_errors
boolean
required

Whether the transaction has missing required fields per the entity's TransactionValidation config. Always false when no config is set.

merchant_amount
integer
required

Original merchant transaction amount in minor units.

merchant_currency
enum<string>
required

ISO currency code for the merchant_amount.

Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLP,
CNY,
COP,
CRC,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SEK,
SGD,
SHP,
SLE,
SOS,
SRD,
SSP,
SVC,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VND,
VUV,
WST,
XAF,
XCD,
XOF,
XPF,
YER,
ZAR,
ZMW
merchant_name
string
required

The merchant name.

Maximum string length: 128
Example:

"Acme Inc."

started_at
string
required

Date and time when the transaction was initiated.

subtype
enum<string>
required

The kind of charge, such as a capture or a refund.

Available options:
capture,
refund,
cash_withdrawal,
fee,
adjustment,
reversal,
out_of_pocket
type
enum<string>
required

The kind of expense.

Available options:
card,
reimbursement
applied_policy_id
string<uuid> | null

ID of the approval policy applied to this transaction, if any.

department_id
string<uuid> | null

ID of the department associated with this transaction.

description
string | null

A human-readable description of the transaction.

Maximum string length: 255
entity_user_id
string<uuid> | null

ID of the entity user who owns the transaction. Must be an active or invited user of the organization. When omitted and the request is made as an entity user, the caller becomes the owner; an explicit null leaves the transaction unowned. A caller limited to their own transactions may only name themselves or one of their direct reportees, and becomes the owner when the field is null.

external_id
string | null

External identifier for idempotency, if provided by the source system.

Maximum string length: 128
ledger_account_id
string<uuid> | null

ID of the ledger account from the Accounting service.

location_id
string<uuid> | null

ID of the location associated with this transaction.

merchant_location
string | null

The merchant location. Always set on cards, optional on reimbursements.

Maximum string length: 128
Example:

"New York, US"

no_receipt_reason
string | null

Reason provided by the employee when submitting without a receipt (e.g. receipt was lost or unavailable). Set via the submit endpoint; bypasses the receipt_id required-field check.

paid_at
string | null

When a reimbursement was paid out. Null until paid.

paid_by_entity_user_id
string<uuid> | null

ID of the entity user who marked a reimbursement paid. Null until paid.

partner_metadata
object | null

Extensible key-value pairs for storing additional custom information for partner needs.

payment_method
object

How a card expense was paid. Always set on cards, null on reimbursements.

payment_processing_status
enum<string>
default:created

The current processing status of the transaction.

Available options:
created,
processing,
succeeded,
declined,
refunded,
failed
payout_method
enum<string> | null

How a reimbursement was paid out. Null until paid.

Available options:
outside_platform
payout_status
enum<string> | null

Whether a reimbursement has been paid out to the employee. Null on cards.

Available options:
unpaid,
paid
receipt_file_url
string | null

URL of the attached receipt's file. Present when receipt_id is set and the receipt is reachable; null otherwise.

receipt_id
string | null

ID of the related receipt from payables service, if any.

reject_reason
string | null

Optional reason explaining why the transaction was rejected.

source_of_data
object | null

Per-field source tracking. Each field indicates how its value was set: user, generated, or automatched.