Creates a new money transfer and registers it in the ViaBlocks platform. Supports both cross-border (international) and domestic (USA to USA) corridors.
Initiates a new remittance transaction with sender, beneficiary, and financial details.
Use this endpoint when you are ready to submit:
- Sender onboarding details (KYC/AML fields)
- Beneficiary details and payout configuration
- Origination and delivery amounts/currencies
- Funding configuration (cash or remote payment)
Next steps depend on the funding method:
- Cash funding: Transaction may proceed directly into processing.
- Remote payment funding: Transaction is created in a pending funding state. The sender must complete payment remotely.
This endpoint also supports domestic transfers within the United States. For domestic transfers, both originationCountryISO and deliveryCountryISO are set to USA, both currencies are USD, and the exchange rate is 1.0.
| Code | Delivery Mode | Description |
|---|---|---|
A | ATM Network | Beneficiary withdraws cash at an ATM using a reference code. |
P | Cash Pickup (Viamericas agencies) | Beneficiary picks up cash at an authorized Viamericas agent location. |
C | Bank Deposit (any U.S. bank) | Direct deposit to any U.S. bank account. Requires accountNumber, routingNumber, and accountType in deliveryModeDetails. |
O | Mobile Wallet | Deposit to a mobile wallet. |
- Exchange rate is always
1.0(USD → USD) - Both origin and delivery country are
USA deliveryModeDetails.routingNumberis required for bank deposits (modeC)- The system validates routing numbers via ABA checksum and provider verification
For outbound transactions originating from the United States, the system validates that the financial parameters match the most recent quote. This ensures pricing integrity between the quote and the actual transaction.
| Field | Validation Rule |
|---|---|
exchangeRate | Required. Must match the current rate from the pricing engine, or fall within the allowed rate range if ViaTasa is active for the partner. |
fee | Required. Must exactly match the fee returned by the quote (feeBreakdown.fee). |
fundingFee | Required when > 0 in quote. Must match feeBreakdown.fundingFee. If the quote returned a non-zero funding fee, this field is mandatory. |
taxes | Required when > 0 in quote. Must match feeBreakdown.taxes. If the quote returned a non-zero tax, this field is mandatory. |
originationAmount | Must be within the minimumAmount and maximumAmount returned by the quote. |
deliveryAmount | Must be coherent with originationAmount × exchangeRate. If a payer delivery limit exists, the delivery amount must not exceed it. |
- Request a quote via
POST /transaction/quotewith the desired parameters. - Use the values from the quote response (
exchangeRate,feeBreakdown.fee,feeBreakdown.fundingFee,feeBreakdown.taxes) in your create request. - If the partner has ViaTasa active, the
exchangeRatecan be modified within therateRangebounds returned by the quote. - Submit the create request with all validated fields populated.
- The
promoCodefield, if provided, is validated before pricing checks. An invalid promo code will reject the transaction.
When the transaction includes a routing number for a USA-based bank account (either in funding or deliveryModeDetails), the system performs additional validations:
- ABA Checksum: The routing number must pass ABA checksum validation.
- Provider Verification: The routing number is verified against external banking providers to confirm it is valid and active.
- Account Risk Assessment: If an account number is provided alongside a valid routing, the system verifies the account. If the verification returns
HIGHrisk orDeclinedstatus, the transaction is rejected.
These validations apply exclusively to USA routing numbers. For other countries, routing numbers are not validated against external providers.
Requires x-client-id and x-secret-key headers.
- Request validation is enforced for formats, allowed values, corridor rules, and compliance requirements.
400Validation errors (missing/invalid fields, quote coherence mismatch)401Invalid credentials404Sender/beneficiary linkage issues422Business-rule rejection (e.g., credit limit, amount limits, compliance block)500Internal error
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
Contains the personal and identification information of the transaction sender.
All fields are subject to AML, KYC, and compliance validation rules.
This information is used to verify the identity of the person initiating the transaction and to evaluate regulatory and risk requirements.
Error codes: required=400001, type=400002
Represents the final recipient of the funds in a cross-border transaction.
Contains the personal, identification, and location information required to validate the recipient against AML, sanctions, and regulatory screening rules.
This object is used to ensure the payout can be legally and operationally executed in the destination country.
Error codes: required=400001, type=400002
Represents the financial, operational, and processing configuration of the transaction.
Contains all parameters required to calculate, validate, route, and execute the transfer, including amounts, currencies, delivery method, funding source, fees, and payout instructions.
All fields are validated against business rules, compliance policies, and operational constraints before the transaction is accepted for processing.
Error codes: required=400001, type=400002
Identifies the integration channel used to create the transaction (API, Web, Messaging, etc.).
Error codes: type=400002, minLength=400003, maxLength=400004, allowedValues=400010
Dynamic / Data considered relevant by the client for informational purposes for internal tracking
Error codes: type=400002
- Required fields only
- All fields (including KYC and optional)
- Outbound USA with custom exchange rate (ViaTasa)
- Outbound USA → COL — Cash Pickup with cash funding
- Outbound USA → COL — Bank Deposit with ACH funding
- Outbound USA → COL — Remote Payment funding (type H)
- Outbound USA → MEX — Debit Card funding (type D)
- Outbound USA → COL — Mobile Wallet delivery
- Outbound USA → BRA — PIX instant payment
- Outbound USA → IND — UPI payment
- Outbound USA → MEX — Home Delivery (DELIVERY ++ESPEC)
- Outbound USA → MEX — ATM withdrawal (CAJERO ELEC.)
- Domestic USA → USA — ATM Network
- Domestic USA → USA — Cash Pickup at Viamericas Agency
- Domestic USA → USA — Bank Deposit (any U.S. bank)
curl -i -X POST \
https://sandbox-viablocks.viamericas.io/transaction/create \
-H 'Content-Type: application/json' \
-H 'x-client-id: string' \
-H 'x-secret-key: string' \
-d '{
"sender": {
"firstName": "MARIO",
"lastName": "LESTER",
"phone": "3117852691",
"phoneCountryCode": "+1",
"email": "sender@example.com",
"dateOfBirth": "1983-08-25",
"addressStreet": "1517 W 12 PL, LOS ANGELES, CA, USA",
"addressState": "US-CA",
"addressCity": "LOS ANGELES",
"addressCountry": "USA",
"addressZipCode": "90015"
},
"beneficiary": {
"firstName": "ANGEL",
"lastName": "RESTADO",
"phone": "3057118816",
"phoneCountryCode": "+57",
"addressStreet": "Cra 40t N. 13-34, Medellin, Colombia",
"addressState": "CO-ANT",
"addressCity": "MEDELLIN",
"addressCountry": "COL",
"addressZipCode": "05001"
},
"transactionInformation": {
"originationCountryISO": "USA",
"originationStateISO": "US-CA",
"originationLocationCity": "LOS ANGELES",
"originationAmount": 100,
"originationCurrencyISO": "USD",
"deliveryCountryISO": "COL",
"deliveryStateISO": "CO-ANT",
"deliveryAmountCurrencyISO": "COP",
"deliveryLocationCode": "T060",
"deliveryLocationNetwork": "BC0001",
"deliveryLocationName": "BANCOLOMBIA",
"deliveryLocationCity": "MEDELLIN",
"deliveryMode": "C",
"deliveryModeDetails": {
"accountNumber": "24578183503",
"accountType": "S"
},
"funding": {
"type": "A",
"accountNumber": "530000000",
"routingNumber": 80
}
}
}'Response success
List of compliance document types required for this transaction to be fully processed. Each item is a code from the compliance engine.
Possible values:
KYCΓÇö Full Know Your Customer form (identity, employment, document info)KYC-ShortΓÇö Reduced KYC (document info only, no employer/SSN)KYC-LongΓÇö Extended KYC (document + employer, no SSN)KYC-GtoΓÇö GTO-specific KYC formIDΓÇö Identification document information (type, number, expiration, country)Copy1IDΓÇö Front image of the identification documentDOBΓÇö Date of birthSSNΓÇö Social Security NumberSFundsΓÇö Source of funds declarationDPAΓÇö Beneficiary address proof
If this array is empty, no additional documentation is required.
To fulfill these requirements, use the PUT /transaction/update endpoint with the corresponding fields.
Detailed fulfillment status for each compliance requirement. Shows whether each item from required_document_list was already satisfied with the data provided in this create request.
Each object contains:
type: The compliance document code (matchesrequired_document_list)fulfilled: Boolean indicating if all required fields for this type were providedstatus: Human-readable status (completedorpending)missing: (Only when pending) Array of field paths that were not provided
Use this to determine which fields need to be submitted via PUT /transaction/update.
- Successful transaction with pending compliance
- Successful transaction ΓÇö no compliance requirements
- Successful transaction ΓÇö all compliance fulfilled at creation
- Successful transaction with remote payment link
{ "status": "success", "message": "Transaction created successfully", "transaction_uuid": "xxxxxx-xxxxx-xxx-xxxx-xxxxx", "transaction_id": "xxxxxx-8", "folio": "123456789", "total_receiver": "46.6200", "total_pay_receiver": "46.6200", "source_currency_amount": "840.0000", "rate": "0.0555", "status_track_url": "https://status-track.viamericas.io/?token=xxxxxx-xxxxx-xxx-xxxx-xxxxx", "required_document_list": [ "Copy1ID", "DOB", "ID" ], "document_requirements": [ { … }, { … }, { … } ] }