Skip to main content
POST
Report what you paid the farmer (DETERMINATION tier only)

Authorizations

x-api-key
string
header
required

Path Parameters

determinationId
string<uuid>
required

Body

application/json
partnerReference
string
required

YOUR settlement reference — M-Pesa code, bank reference, receipt number. With the determination id this is the idempotency key, so it must be stable per payment: a fresh value per attempt posts two attestations that the same money moved once.

Required string length: 3 - 128
Example:

"QK73HG9XYZ"

outcome
enum<string>
required
Available options:
SETTLED_FULL,
SETTLED_PARTIAL,
DECLINED
method
enum<string>
required
Available options:
MOBILE_MONEY,
BANK_TRANSFER,
CASH,
ACCOUNT_CREDIT,
IN_KIND,
OTHER
settledAmountMinor
string
required

Minor units of settlementCurrency as a canonical decimal STRING — no sign, no decimal point, no exponent, no leading zeros. Never a JSON number: this is an exact integer and a double loses precision at scale.

Pattern: ^(0|[1-9]\d*)$
Example:

"1650000"

settlementCurrency
string
required

ISO 4217. Must equal the policy's own currency; a mismatch is a 400, never an FX conversion.

Required string length: 3
Example:

"KES"

settledAt
string<date-time>
required

Cannot be in the future, and cannot precede the determination itself.

attestingOfficerName
string
required
Required string length: 2 - 200
attestingOfficerTitle
string
required
Required string length: 2 - 200
attestingOfficerEmail
string<email>
Maximum string length: 320
shortfallReason
string

Required when and only when outcome is SETTLED_PARTIAL.

Maximum string length: 2000
declineReason
string

Required when and only when outcome is DECLINED, which must also record settledAmountMinor "0".

Maximum string length: 2000
evidenceRef
string

A pointer to your own receipt. MicroCrop never fetches, resolves or validates it.

Maximum string length: 512
evidenceHash
string
Maximum string length: 128
notes
string
Maximum string length: 2000
supersedesReportId
string<uuid>

The live report this one corrects. Reports are append-only: the superseded row is stamped, never rewritten.

Response

Replayed — the stored report, returned unchanged

success
boolean
Example:

true

data
object