A domestic wire sends funds from a pocket to a US bank account your customer has registered and verified with Jiko. Wires are credit-push only and settle within a bank business day; there is no return window and no equivalent of an ACH return.
Required end-user disclosure. When you build wire entry screens in your own UI, you must show your end users the following: "By using this service, you hereby acknowledge that sending wires to third parties presents an increased risk of fraud, and that as per the terms of your Commercial Bank Account Agreement (the "Agreement"), you agree that our security measures are commercially reasonable methods of providing security against unauthorized Funds Transfers, and that you shall be bound by any request for a Funds Transfer received by the Bank, whether or not authorized, issued in your name and accepted by the Bank in compliance with the security measures."
Feature flags are set by Jiko per partner and evaluated against the API user making the request. A call that needs a flag you do not have fails with 403. Ask your Jiko point of contact for the ones you need.
| Flag | Needed for | Without it |
|---|---|---|
enable_counterparty_ownership | Sending ownership_type on a wire counterparty at all — FIRST_PARTY and THIRD_PARTY both go through it | 403. Omitting the field is accepted, but the counterparty is then not marked third party, which changes the unverified rule below |
unverified_wire_counterparty | unverified verification on a counterparty that is not explicitly THIRD_PARTY | 403 at counterparty creation |
pre_verified_wire_counterparty | pre_verified verification | 403 at counterparty creation |
None of these gates the wire itself. POST /api/v1/jiko-accounts/{account_id}/wires/ carries no feature flag — the flags gate the counterparty you must have before you can send.
- Outbound wires enabled on your partnership. They are not on by default, and this is commercial rather than a flag.
- An approved customer and a pocket in
OPENstatus. - A wire counterparty in
LINKEDstatus. Jiko never wires to a raw account number.PENDINGis not enough, andFAILED,UNLINKEDandCLOSEDare terminal. Wait forcounterparty.status.linked. - A verification method your
ownership_typepermits.unverifiedis not a way to skip verification on your customer's own account; see the table below.supporting_documentsneeds at least one already-uploaded document ID, and review takes days, so budget for it. - Balance that can actually move. Read
liquidation_value_t0andliquidation_value_t1on the pocket's portfolio rather thantotal_value. created_byon every wire. It is required, and it is what Jiko records as the instructing party.- A
wire_idyou generate. The create call returns201with an empty body, so without your own ID you have no handle on the wire. - The end-user disclosure above, shown in your own UI. It is a contractual condition of the product, not a recommendation.
- A wire-enabled portal, to receive. The portal must be
OPENand carryWIREin itspayment_rails, and the payer must be given the values from the portal's funding instructions rather than assembled details. - A webhook subscription for
transfers.wire.out.processing,transfers.wire.out.success,transfers.wire.out.rejectedand, for inbound,transfers.wire.in.successandtransfers.wire.in.rejected. Subscriptions are recorded against the API user that creates them.
POST /api/v2/customers/{customer_id}/counterparties/A wire counterparty carries:
| Field | Notes |
|---|---|
counterparty_name | Discriminated on type: individual (first_name, last_name) or business (business_name) |
address | Beneficiary address, state required |
institution_name | Receiving bank |
routing_number | Beneficiary bank ABA |
identifier / identifier_code | The beneficiary account identifier and what kind it is — DIRECT_DEPOSIT_ACCOUNT, SWIFT_BIC, FED_ROUTING_NUMBER, CHIPS_PARTICIPANT and others |
wire_instructions | Up to 140 characters, carried on the message |
ownership_type | FIRST_PARTY or THIRD_PARTY |
display_name | Up to 200 characters, your own label, no effect on routing |
FIRST_PARTY means the destination account belongs to your customer. THIRD_PARTY means it belongs to someone else — a supplier, a landlord, a contractor.
| Verification method | Allowed on | Notes |
|---|---|---|
incoming_wire | First party | A wire was received from that account, proving control. Reference the receiving wire_id |
supporting_documents | First or third party | Documents submitted and reviewed. Reviewed by Jiko, takes days |
pre_verified | First party | You verified by Plaid or micro-deposit on your side and assert it. Enabled per partner |
unverified | Third party only | Ownership verification is not the right check when the account is not the customer's. Enabled per partner |
unverified is not a shortcut for skipping verification on a customer's own account. A first-party destination must be verified by one of the other methods.
Wait for the counterparty.status.linked webhook before originating. It carries counterparty_id and customer_id.
Partner systems:
- Decide
ownership_type. It constrains which verification you may use, and it is the field that decides whetherunverifiedneeds a feature flag. - Register the counterparty with
type: "wire"and a verification block. Forsupporting_documents, upload the documents first — the request takes their IDs, at least one. - Wait for
counterparty.status.linked.FAILED,UNLINKEDandCLOSEDare terminal; recovering means registering a new counterparty. - Create the wire with your own
wire_idand acreated_by. - Track it by
wire_id— through the webhooks, the wire resource, andfilter[wire]on the transaction feed.
| Step | Purpose | Endpoint |
|---|---|---|
| 1 | Register the beneficiary as a counterparty | POST /api/v2/customers/{customer_id}/counterparties/ |
| 2 | Check its status without waiting on the webhook | GET /api/v2/customers/{customer_id}/counterparties/{counterparty_id}/ |
| 3 | Send the wire | POST /api/v1/jiko-accounts/{account_id}/wires/ |
| 4 | Read it back, including wire_tracking_info | GET /api/v1/wires/{wire_id}/ |
| 5 | Resolve it to its transaction | GET /api/v2/transactions/?filter[wire]={wire_id} |
POST /api/v1/jiko-accounts/{account_id}/wires/| Field | Notes |
|---|---|
counterparty_id | The linked wire counterparty |
amount_usdc | Amount in USD cents |
created_by | Identifier of the person or system instructing the wire. Required |
description | Up to 100 characters, carried to the beneficiary as originator-to-beneficiary information |
wire_id | Client-generated UUID. Optional, but always supply one |
The endpoint returns 201 with an empty body. If you do not supply an ID, Jiko generates one and you have no direct way to learn it — you would have to list wires and match on amount and time. Supplying your own makes the call idempotent and gives you the handle for every subsequent lookup and every webhook.
created_by is recorded on the wire. Where a wire requires approval, Jiko also records the approvers and returns them as client_verifiers.
| Status | Meaning |
|---|---|
PENDING | Accepted and progressing |
SUCCESS | Sent to the network |
REJECTED | Rejected or cancelled |
SUCCESS means the wire has been sent, not that the beneficiary bank has credited it.
| Event | Meaning |
|---|---|
transfers.wire.out.processing | Wire accepted and in progress |
transfers.wire.out.success | Wire sent |
transfers.wire.out.rejected | Wire rejected or cancelled |
Payload: jiko_account_id and wire_id.
transfers.wire.out.processing can fire more than once as a wire moves between internal stages, all of which collapse to the same event. Treat it as "still in progress" and rely on success or rejected for terminal outcomes.
| Operation | Endpoint |
|---|---|
| Create a wire | POST /api/v1/jiko-accounts/{account_id}/wires/ |
| List wires | GET /api/v1/wires/ |
| Get a wire | GET /api/v1/wires/{wire_id}/ |
GET /api/v1/wires/ is cursor-paginated and accepts direction=OUTGOING, customer_id and pocket_id. An outgoing wire returns status, amount, pocket_id, counterparty_id, client_verifiers and wire_tracking_info.
Once the wire is exported, Jiko assigns the network identifiers and exposes them in wire_tracking_info:
uetr— the end-to-end reference that follows the payment through every institution in the chain. This is what a beneficiary's bank asks for when tracing a payment, and what you should surface to a customer chasing one.imad— the clearing network's input reference.instruction_identificationandend_to_end_identification— party-assigned references on the ISO 20022 message, up to 35 characters each.
These are populated when the wire is sent, so they are absent while the wire is PENDING.
An outgoing wire appears in the transaction feed as type: "WIRE" with direction: "DEBIT", carrying wire_id, counterparty_name and reference_number.
Resolve a wire to its transaction with filter[wire], which accepts one or more wire IDs. filter[type]=WIRE narrows to the rail, and the usual amount_from / amount_to / time_booked_from / time_booked_to / time_settled_from / time_settled_to filters are available.
The wire resource and the transaction serve different purposes: the wire resource is the payment as the network sees it, the transaction is the money as the pocket sees it.
Inbound domestic wires address a portal directly. The beneficiary account number on the wire is the portal's account number and the receiving bank is Jiko's domestic bank. Jiko resolves the portal from the account number and checks that the routing number on the wire matches the portal's; a mismatch stops the wire from being attributed automatically.
Get the details to hand a payer from:
GET /api/v2/pockets/{pocket_id}/portals/{portal_id}/funding-instructions/The DOMESTIC_WIRE instruction returns the receiver bank (routing number, name, address) and the beneficiary (account number, the customer's legal name, address), already populated. Do not assemble them yourself from the portal's raw fields.
A wire-enabled portal returns both a domestic and an international instruction, and they are not interchangeable — the beneficiary account differs between them.
Inbound events are transfers.wire.in.success and transfers.wire.in.rejected, with a payload of jiko_account_id and wire_id. Where Jiko cannot resolve the beneficiary to a pocket, no event fires and no transaction exists.
Wires post within a bank business day. A wire arriving outside banking hours, at a weekend, or on a bank holiday posts on the next business day, not on receipt.
- International wires
- Create wire — full request schema
- Counterparties
- Webhooks