Transaction Reporting
Report Off-Yuno Transactions
Report transactions processed directly with your providers so they appear in Yuno as payments — dashboard, listings and analytics included.
POST
This endpoint gives Yuno visibility over the traffic you process directly with your providers, outside Yuno’s transaction path. Each accepted event is persisted as a regular Yuno payment, differentiated by the
Per-event rejections:
Causes: invalid enum value, wrong field type, unknown field, a
origin field:
origin: YUNO— payments processed by Yuno (every existing payment).origin: REPORTED— payments that entered through this API.
GET /v1/payments, and in analytics — filtered by origin — but Yuno never processes them: no routing, no provider calls, no retries, and no money movement. The money already moved at your provider; Yuno records the fact.
Enabled per organizationThis API requires activation for your organization. Contact your Key Account Manager (KAM) to enable it.
How it works
- You process a transaction directly with your provider (for example a purchase on your own Adyen account).
- You report it here: one event or a batch of up to 500. For latency-sensitive integrations, batches of up to 100 events are recommended. The full 500-event batch is processed synchronously and can take several seconds.
- Each accepted event creates one payment with one transaction, with the status derived from
resultand the event type:- A
PURCHASEwith resultSUCCEEDEDlands the paymentSUCCEEDED. - An
AUTHORIZEwith resultSUCCEEDEDlandsPENDINGwith sub-statusAUTHORIZED. An approved authorization is not captured money; it mirrors how Yuno-processed authorizations behave. - A
VERIFYwith resultSUCCEEDEDlandsSUCCEEDEDwith sub-statusVERIFIED. The verification completed and no money moves; it mirrors how Yuno-processed verifications persist. DECLINEDlandsDECLINED, andERRORlandsERROR.
- A
PURCHASE (default), AUTHORIZE, and VERIFY. A VERIFY reports a card verification (zero-dollar authorization), typically reported with amount.value: 0. Lifecycle events (captures, refunds, chargebacks) are on the roadmap.
Retries and deduplication
There is no idempotency header on this endpoint, and none is needed. Thereport_id you generate per event is the deduplication key. An event whose report_id was already ingested is counted in duplicates and never ingested twice, no matter when or in which batch it arrives. Retrying a whole batch after a network failure is always safe.
Because report_id alone decides, an event that reuses an already-ingested report_id with a different payload is also counted as a duplicate and silently discarded — never reuse a report_id across different transactions.
The batch is processed per event: one invalid event lands in rejected[] with its reason, and the rest of the batch is unaffected.
Card BIN for BIN-level routing statistics
OnCARD events you can send the card’s BIN in payment_method_details.card.bin — the first 6 or 8 digits of the card number, exactly. The BIN is not cardholder data: it identifies the issuer and card range, never the card.
When present, Yuno stores it on the reported payment (payment_method.detail.card.card_data.iin on the transaction) and uses it to segment your statistics per BIN in the Routing Recommendations API, so a payment on the same BIN can be ranked on that BIN’s own history instead of the country-wide one.
payment_method_detailsis keyed by the payment method type — today onlycard, and only on events whosepayment_method_typeisCARD. Acard.binon an event of any other type, or a container with any other key, rejects the event.- The BIN must be exactly 6 or 8 digits. A 7-digit value, a longer value, or anything that is not all digits rejects the event with
INVALID_EVENT. - Omitting
payment_method_details, or sending it empty ({}or{"card": {}}), keeps the event exactly as before: no BIN is stored and the event feeds the country and payment-method statistics only.
The raw provider response
If you includeraw_provider_response (the provider’s response payload, verbatim, up to 64 KB), Yuno stores it with defensive card-data redaction applied — primary account numbers and security codes are removed before anything is persisted. It is never returned by any API.
Sending it is recommended: it lets Yuno enrich the reported payment later (network transaction references, decline reasons) without asking you for anything new.
Operations on reported payments
Reported payments cannot be operated through Yuno — a refund or capture request on a payment withorigin: REPORTED returns 403 OPERATION_NOT_ALLOWED_FOR_REPORTED_PAYMENT. Perform the operation at your provider and report it as a new event when lifecycle events become available.
Errors
Errors return acode and a messages array.
Per-event rejections: INVALID_EVENT
INVALID_EVENT is not an HTTP error — the batch itself is accepted (202), and each invalid event is returned individually inside rejected[] with this code and its reason, while the rest of the batch is ingested normally:
payment_method_details.card.bin that is not exactly 6 or 8 digits (or sent on a non-CARD event), or raw_provider_response over 64 KB.Headers
Your public API key.
Your private secret key. Never expose it client-side.
Body
application/json