# /transaction/update

Updates an existing cross-border money transfer transaction.
## Purpose
This endpoint allows you to:
- Submit compliance information (KYC, DOB, SSN, Source of Funds) when required to complete the transaction
- Upload identification document images (Copy1ID) for compliance review
- Provide identification document information (ID) for verification
- Request modifications to beneficiary details and delivery account information

## Use Cases
### 1. Compliance Information (KYC)
When the compliance area requires additional sender information, all fields corresponding to the specific KYC variant must be submitted. The system supports multiple KYC levels:
- **KYC** — Full form: identity, employment, SSN, and document fields
- **KYC-Short** — Basic: identity and document fields only (no employer, no SSN)
- **KYC-Long** — Extended: identity, document, and employment fields (no SSN)

You can determine which KYC variant is required by checking the `required_document_list` field returned in `transaction/create` and `transaction/status` responses.
### 2. Identification Document Information (ID)
When `required_document_list` contains `ID`, you must provide the document type, number, expiration date, and issuing country. This is the **information** about the document, not the image.
### 3. Identification Document Image Upload (Copy1ID)
When `required_document_list` contains `Copy1ID`, you must upload the document image(s):
- **Front image** (`documentFrontImage`) is always required
- **Back image** (`documentBackImage`) is required for double-sided documents (Driver's License, State ID, Green Card)
- Single-sided documents (Passport) only need the front image
- If the back image is required but not provided, a 400 error will indicate this

The uploaded document goes through an external review process. You can check the review status via `transaction/status`:
- `in_review` — Document uploaded, awaiting approval (no action needed)
- `approved` — Document accepted
- `rejected` — Document rejected, must re-upload with a corrected document
- `expired` — Document has expired, must re-upload with a current document

### 4. Other Individual Requirements
- **DOB** — Date of birth only
- **SSN** — Social Security Number only
- **SFunds** — Source of funds declaration only

These can be submitted individually or combined with other fields.
### 5. Beneficiary & Delivery Modification
You can request changes to the beneficiary's personal information and delivery account details. Modification requests are subject to eligibility — the transaction must not have a pending or completed modification.
## How It Works
1. The system validates the transaction exists and is not cancelled/paid
2. Checks which compliance requirements are already satisfied (won't re-request fulfilled items)
3. Validates that all pending required fields are present in the request
4. Processes KYC data if required and not already submitted
5. Processes ID image upload if required and not already approved
6. Submits beneficiary/delivery modification if eligible
7. Returns a response indicating which operations were performed

## Important Notes
- Only fields with values are processed; empty or missing fields retain their current values
- Compliance submissions are always allowed as long as the transaction is not cancelled/paid
- If a requirement was already fulfilled (e.g., DOB was sent at creation), it won't be re-requested
- If a document was rejected or expired, the system will require re-upload and include the reason in the error message
- Modification requests require the transaction to be eligible (not already modified or pending modification)
- All operations can be combined in a single request

## Authentication
Requires `x-client-id` and `x-secret-key` headers.

Endpoint: PUT /transaction/update
Version: 1.0.0

## Header parameters:

  - `x-client-id` (string, required)
    Unique identifier assigned to the integrating client. It determines the validation rules, allowed values, compliance policies, and operational limits applied to the request.

Error codes: required=400001, type=400002, minLength=400003, maxLength=400004

  - `x-secret-key` (string, required)
    Secret authentication key associated with the client. It is used to authorize the request and must be kept strictly confidential.

Error codes: required=400001, type=400002, minLength=400003, maxLength=400004

## Request fields (application/json):

  - `uuid` (string, required)
    Unique identifier (UUID) of the transaction to update. Must match an existing transaction in the system.
Error codes: required=400001, type=400002, minLength=400003, maxLength=400004

  - `transactionContext` (object)
    Operational context for the transaction update, including branch and cashier identification.
Error codes: type=400002

  - `transactionContext.branchId` (string)
    Branch ID associated with the transaction.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `transactionContext.cashierId` (string)
    Cashier or operator ID performing the update.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `sender` (object)
    Sender information for compliance and identity verification.
Fields in this object are conditionally required based on the `required_document_list` from `transaction/create` or `transaction/status`. The system will only request fields that haven't been fulfilled yet.
Error codes: type=400002

  - `sender.dateOfBirth` (string)
    Sender's date of birth, used for identity verification and compliance checks.
Format: YYYY-MM-DD
Error codes: type=400002, minLength=400003, maxLength=400004, format=400005

  - `sender.documentType` (string)
    Type of identification document provided by the sender (e.g., Passport, National ID).
You can check the types of documents available according to your document country in our catalogs API
Catalogs Endpoint Identifications: GET /catalogs/countries/{deliveryCountryISO}/identifications
Document types (documentType) — click to expandCodeDocument TypePAPASSPORTDLDRIVER'S LICENSESISTATE ISSUED IDGCGREEN CARDMCMATRÍCULA CONSULARError codes: type=400002, minLength=400003, maxLength=400004

  - `sender.documentNumber` (string)
    Identification document number.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `sender.documentExpirationDate` (string)
    Expiration date of the identification document.
Format: YYYY-MM-DD
Error codes: type=400002, minLength=400003, maxLength=400004, format=400005

  - `sender.documentCountry` (string)
    Country that issued the identification document (ISO 3). https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
Error codes: type=400002, minLength=400003, maxLength=400004

  - `sender.documentState` (string)
    State that issued the identification document (ISO 2). https://en.wikipedia.org/wiki/ISO_3166-2
Error codes: type=400002, minLength=400003, maxLength=400004

  - `sender.ssnNumber` (string)
    9-digit personal identification number issued by the U.S. government for tax, employment, and Social Security purposes.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `sender.occupation` (string)
    Sender's occupation or professional activity. This refers to the name from the list of available jobs based on the selected industry.
See [Catalogs Endpoint Industry](/apis/outbound/catalogs/paths/~1catalogs~1industry/get)
Error codes: type=400002, minLength=400003, maxLength=400004

  - `sender.employer` (string)
    Name of the sender's employer or business activity.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `sender.employerPhone` (string)
    The phone number of the company or organization where the sender works.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `sender.industry` (number)
    Unique identifier referencing the industry classification. Property or key "id" in our catalogs API.
See [Catalogs Endpoint Industry](/apis/outbound/catalogs/paths/~1catalogs~1industry/get)
Error codes: type=400002, minimum=400006, decimal=400008

  - `sender.job` (number)
    Unique identifier representing the specific job or position. Property or key "jobs" with "id" in our catalogs API.
See [Catalogs Endpoint Industry](/apis/outbound/catalogs/paths/~1catalogs~1industry/get)
Error codes: type=400002, minimum=400006, decimal=400008

  - `sender.documentFrontImage` (string)
    Front image of the identification document encoded in base64 JPEG format.
**Required format:** `data:image/jpeg;base64,/9j/4AAQSkZJRg...`
Only JPEG images with the data URI prefix are accepted. Maximum size: 5 MB.
This field is required when the `required_document_list` from `transaction/create` or `transaction/status` includes `ID`.
Error codes: type=400002, minLength=400003, maxLength=400004, pattern=400009

  - `sender.documentBackImage` (string)
    Back image of the identification document encoded in base64 JPEG format.
**Required format:** `data:image/jpeg;base64,/9j/4AAQSkZJRg...`
Only JPEG images with the data URI prefix are accepted. Maximum size: 5 MB.
**When is it required?**
- Required for document types that have information on both sides (e.g., Driver's License `DL`, State Issued ID `SI`, Green Card `GC`).
- Not required for single-sided documents (e.g., Passport `PA`).
- If required and not provided, the ID upload service will return a 400 error indicating `backImage is required for this document type and country`.

Error codes: type=400002, minLength=400003, maxLength=400004, pattern=400009

  - `beneficiary` (object)
    Represents the final recipient of the funds.
Contains the personal and location information that can be updated for the beneficiary. Only fields with values will be updated; empty or missing fields retain their current values from the original transaction.
Error codes: type=400002

  - `beneficiary.firstName` (string)
    Beneficiary's given name.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.middleName` (string)
    Beneficiary's middle name, if applicable.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.lastName` (string)
    Beneficiary's primary family name.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.secondLastName` (string)
    Beneficiary's second family name.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.phone` (string)
    Beneficiary's phone number without country code.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.phoneCountryCode` (string)
    International dialing code of the beneficiary's phone number.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.addressStreet` (string)
    Beneficiary address. Structure: [Description, city name, State ISO2 zipCode, Country ISO3]. Example:'54545 Salo Rd, Hancock, MI 49930, USA'
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.addressState` (string)
    Beneficiary state (ISO 2). https://en.wikipedia.org/wiki/ISO_3166-2
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.addressCity` (string)
    City name of residence of the beneficiary.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.addressCountry` (string)
    Beneficiary country (ISO 3). https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.addressZipCode` (string)
    Postal or ZIP code of the beneficiary's address.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `beneficiary.relationShip` (string)
    Specifies the relationship between the sender and the beneficiary.
The list of available relationship options can be retrieved from our API Catalogs:
[Catalogs Endpoint RelationShips](/apis/outbound/catalogs/paths/~1catalogs~1recipients~1relationships/get)
The endpoint returns a structured list of supported relationship types, including their corresponding codes and descriptions.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `transactionInformation` (object)
    Contains the transaction processing parameters that can be updated.
Includes delivery mode details, geographic information, and compliance-related fields (source of funds, remittance purpose) that may be required for KYC.
Error codes: type=400002

  - `transactionInformation.deliveryModeDetails` (object)
    Contains the bank account and routing information for the payout.
This object defines the destination financial institution and account where the funds will be deposited.
Error codes: type=400002

  - `transactionInformation.deliveryModeDetails.accountNumber` (string)
    Destination account number.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `transactionInformation.deliveryModeDetails.accountType` (string)
    Specifies the type of bank account associated with the transaction.
You can retrieve the list of available account types from our Catalogs API:
[Catalogs Account Types](/apis/outbound/catalogs/paths/~1catalogs~1account-types/get)
Account typesCodeAccount TypeDescriptionSSavingSavings accountCCheckingChecking accountUUndefinedUndefinedError codes: type=400002, minLength=400003, maxLength=400004, allowedValues=400010
    Enum: "S", "C", "U"

  - `transactionInformation.deliveryModeDetails.routingNumber` (string)
    Bank routing or clearing number.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `transactionInformation.deliveryStateISO` (string)
    Delivery state (ISO 2). https://en.wikipedia.org/wiki/ISO_3166-2
Error codes: type=400002, minLength=400003, maxLength=400004

  - `transactionInformation.deliveryLocationCity` (string)
    City where the funds will be delivered.
Error codes: type=400002, minLength=400003, maxLength=400004

  - `transactionInformation.sourceOfFounds` (number)
    Code that identifies where the funds come from (e.g., salary, savings, investments).
You can retrieve the list of available fund sources from our Catalogs API:
[Catalogs Funds Origin](/apis/outbound/catalogs/paths/~1catalogs~1funds-origin/get)
This information may be required for compliance (KYC/AML) depending on the client configuration, corridor, or transaction amount thresholds.
Error codes: type=400002, minimum=400006, decimal=400008

  - `transactionInformation.remittancePurpose` (string)
    Code for the declared purpose of the remittance, describing why the funds are being sent.
You can retrieve the list of available purposes from our Catalogs API:
[Catalogs Wire Purpose](/apis/outbound/catalogs/paths/~1catalogs~1wire-purpose/get)
This can be used for compliance classification, reporting, and corridor-specific regulatory requirements.
Error codes: type=400002, minLength=400003, maxLength=400004

## Response 200 fields (application/json):

  - `status` (string)
    Result status. `success` indicates the request was processed correctly.

  - `message` (string)
    Confirmation message describing the outcome.

  - `transaction_id` (string)
    Unique transaction identifier.

  - `kyc_updated` (boolean)
    Indicates that compliance (KYC) information was received and saved. Only present when compliance data was submitted.

  - `id_uploaded` (boolean)
    Present only when an ID image upload was attempted in this request.
- `true`: Document was accepted and is now under review
- `false`: Upload failed (e.g., image quality, format issue) — you can retry

**Not present** when:
- Copy1ID was not in the required documents
- The ID was already uploaded and is in review or approved
- Only KYC or modification fields were submitted

  - `modification_sent` (boolean)
    Indicates that a modification request for beneficiary or delivery details was submitted for processing. Only present when modifiable fields were changed.

## Response 400 fields (application/json):

  - `errors` (array)
    List of validation errors with specific field details.Error catalog for 400 (click to expand)CodeDescription400000The request body is required and must be valid JSON.400001A required field is missing. Check the `details` field for the specific field path.400416The provided branchId is not valid for your account.400418No fields were provided to update. Include at least one field in sender, beneficiary, or transactionInformation.

  - `errors.status` (string)

  - `errors.code` (number)

  - `errors.message` (string)

  - `errors.details` (string)

## Response 401 fields (application/json):

  - `errors` (array)
    Error catalog for 401 (click to expand)CodeDescription401000The provided credentials are invalid. Verify your x-client-id and x-secret-key.

  - `errors.status` (string)

  - `errors.code` (number)

  - `errors.message` (string)

## Response 404 fields (application/json):

  - `errors` (array)
    Error catalog for 404 (click to expand)CodeDescription404000The transaction was not found. Verify the UUID is correct.

  - `errors.status` (string)

  - `errors.code` (number)

  - `errors.message` (string)

  - `errors.details` (string)

## Response 422 fields (application/json):

  - `errors` (array)
    Error catalog for 422 (click to expand)CodeDescription422012The transaction is not currently available for modification. Compliance submissions (KYC/ID) may still be allowed.422013A modification request is already in progress or has been completed. Compliance submissions (KYC/ID) may still be allowed.422014The transaction cannot be updated due to its current status (e.g., cancelled or paid). No operations are allowed.

  - `errors.status` (string)

  - `errors.code` (number)

  - `errors.message` (string)

## Response 500 fields (application/json):

  - `errors` (array)
    Error catalog for 500 (click to expand)CodeDescription500000An unexpected error occurred. Please try again later or contact support if the issue persists.

  - `errors.status` (string)

  - `errors.code` (number)

  - `errors.message` (string)

