> ## Documentation Index
> Fetch the complete documentation index at: https://docs.leapfinancial.com/llms.txt
> Use this file to discover all available pages before exploring further.

# General Details

> General Details for VNA Integration

## Leap Financial

## External Account Object Integration

VNA

## API Definition

### Version 2.0 July 2026

## Proprietary Notice

All pages of this document contain information proprietary to Leap Financial Inc. Neither this document nor any information in it shall be duplicated, transmitted, used, or otherwise disclosed to anyone other than the organization or specific individuals to whom this document is delivered. This restriction applies to all sheets of this document. Leap Financial Inc. reserves the right to have the recipient return all copies of this document at any time. Leap Financial Inc. is a technology company that provides financial services by acting as a program manager for a bank through a bank sponsorship. It is also a registered agent for other regulated financial institutions. In this document, we refer to the Program Manager as the "Program" and as "LEAP" and to the Program Sponsor as the "Bank".

## Abstract

This document purpose is to define how a partner should integrate with Leap Financial's External Account Object feature by providing the APIs that Leap Financial will use to Authorize the transactions with the partner and Confirm that the funds of such transactions need to be credited

## Audience

This document is provided for the technical teams in charge of developing the APIs for the integration, it is assumed that the audience of this document is familiar with the concepts of API, and technical terms such as request, response and payload.

## Glossary

**Partner** = the company implementing the endpoints with the definition provided in this document, that is the owner of the External Account Object.

**External Account Object** = element in Partner's system that is associated with the transaction executed by Leap Financial

**Remittance** = transaction that is executed to move funds cross border

## External Account Object Integration Overall Details

In order to be able to execute remittances transactions, Leapfinancial requires the Partner the ability to process an authorization request prior to the execution of the transaction.

The Authorization request will be triggered by LeapFinancial system when a user selects that he wants to send funds to another user, and the destination Payment Method is the Partner's External Account Object.

Leap Financial provides the payload structure for the **Authorization request** as well as the method to be implemented, and the Partner will provide the API endpoints aligned with the definition.

When the partner **processes the Authorization request,** the response needs to be sent to Leap Financial containing the data elements required in the API definition.

Upon approval of the Authorization request, Leap Financial will execute the remittance transaction. If the transaction is successful, Leap Financial will inform the Partner that the funds can be credited to the External Account Object in the partner's systems.

Leap Financial provides the payload structure for the **Credit Funds request**, as well as the method to be implemented, and the Partner will provide the API endpoints aligned with the definition.

Leap Financial requires that the Partner **provides a confirmation** that the funds have been credited to the External Account Object in their system.

When the partner **confirms the credit funds request,** the response needs to be sent to Leap Financial containing the data elements required in the API definition.

## Authentication for APIs

All requests to the Partner's endpoints are authenticated. For details on the authentication mechanism and credentials, please request the corresponding document.

## API Definition: Authorization for Transaction

### **Purpose:**

Leap Financial will use this endpoint to request authorization for a Transaction

### **Name of the Endpoint:**

TxAuthorization

**Method:**
POST

### **Request**

**Body Format:**
JSON

**Fields Definition:**

| Field name           | Type           | Required | Details                                                                                                                                                                                                                                                                                   |
| -------------------- | -------------- | :------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| TransactionId        | String         |    Yes   | Unique identifier of the request.                                                                                                                                                                                                                                                         |
| SenderPersonalData   | Object         |    Yes   | Personal Data of the sender of the transaction *(See PersonalData Object field definition below)*                                                                                                                                                                                         |
| ReceiverPersonalData | Object         |    Yes   | Personal Data of the Person associated with the External Account Object where the funds of the transaction are destined *(See PersonalData Object field definition below)*                                                                                                                |
| AccountIdentifier    | String         |    No    | An Id representing the External Account Object for the Partner. This field will be Null if Leap Financial does not have an External Account Object already associated. *This field details (such as format restrictions, amount of characters) need to be agreed before the integration.* |
| Amount               | Float          |    Yes   | Amount of the transaction with TWO decimal                                                                                                                                                                                                                                                |
| Currency             | String 3 chars |    Yes   | Currency of the transaction                                                                                                                                                                                                                                                               |
| ExchangeRate         | Float          |    Yes   | Exchange rate applied to the transaction                                                                                                                                                                                                                                                  |
| TrackingNumber       | String         |    No    | Optional tracking number for the transaction, sent only when configured for the Partner.                                                                                                                                                                                                  |

**PersonalData Object field definition:**

| Field name  | Type   |   Required  | Details                                                                                                                              |
| ----------- | ------ | :---------: | ------------------------------------------------------------------------------------------------------------------------------------ |
| PhoneNumber | String | Conditional | Phone number of the Person. At least one of PhoneNumber or Email must be provided.                                                   |
| Email       | String | Conditional | Email address of the Person. At least one of PhoneNumber or Email must be provided.                                                  |
| FirstName   | String |     Yes     | First Name of the Person associated with the External Account Object                                                                 |
| MiddleName  | String |      No     | Middle Name of the Person associated with the External Account Object                                                                |
| LastName    | String |     Yes     | Last name of the Person associated with the External Account Object                                                                  |
| LastName2   | String |      No     | Second last name of the Person associated with the External Account Object                                                           |
| Gender      | String |     Yes     | Gender of the Person associated with the External Account Object. The Possible Values Are as follows Male \| Female \| Other \| None |
| BirthDate   | String |     Yes     | The Birth Date of the Person associated with the External Account Object. The format accepted is as follows YYYY-MM-dd               |
| Address     | Object |     Yes     | The Address of the Person associated with the External Account Object. *(See Address Object field definition below)*                 |

**Address Object field definition:**

| Field name  |          Type          | Required | Details                                                                                                                                                                                                    |
| ----------- | :--------------------: | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Address1    |         String         |    Yes   | Address 1 of the Person associated with the External Account Object                                                                                                                                        |
| Address2    |         String         |    No    | Address 2 of the Person associated with the External Account Object                                                                                                                                        |
| ZipCode     |         String         |    No    | Zip code of the Person associated with the External Account Object                                                                                                                                         |
| City        |         String         |    Yes   | City of the Person associated with the External Account Object                                                                                                                                             |
| CountryCode | String 2 char ISO Code |    Yes   | A String with 2 char ISO code of the Country code of the Person associated with the External Account Object.                                                                                               |
| StateCode   |    String ISO 3166-2   |    Yes   | A String with the ISO 3166-2 code of the State code of the Person associated with the External Account Object. See = [https://en.wikipedia.org/wiki/ISO\_3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) |

### **Response**

Status Code 200

**Response Fields Definition:**

| Field name          |   Type  | Required | Details                                                                                                                                                                                                |
| ------------------- | :-----: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| AccountIdentifier   |  String |    No    | The Id representing the External Account Object for the Partner that was referenced in the request. If the Account is not found in the Partner systems this Identifier should be Null                  |
| Authorized          | Boolean |    Yes   | True if it the Transaction is Authorized / False if is not Authorized                                                                                                                                  |
| DisplayName         |  String |    No    | A String with the displayName for the Account, to be presented to the end-user. Cannot be Null. The maximum number of characters is 10. Accepts only letters, numbers and hyphens. Example = "MC-1234" |
| NonAuthorizedReason |  String |    No    | If the Transaction is not Authorized, the reason should be sent, otherwise not sent. The Text should be from the Fixed Possible Values (see definition of values below)                                |
| TrackingIdentifier  |  String |    Yes   | The Unique Id of the Authorization response.                                                                                                                                                           |

### NonAuthorizedReason Field Possible Values

**AccountBlocked** = the transaction has been denied because the external account object is blocked

**AccountBlockedByLaw** = the transaction has been denied because the external account object is blocked by legal reasons (e.g. litigation)

**AccountBlockedByGovernment** = the transaction has been denied because the external account object is blocked due to government mandated reasons (e.g. fiscal)

**ByVelocity** = the transaction has been denied because the external account object has reached the velocity limit defined in the Partner, this is, the amount of transactions in a specific lapse of time allowed by the partner

**ByAmountLimit** = the transaction has been denied because the external account object has reached the transaction amount limit defined in the Partner system

**ByAccumulateAmountLimit** = the transaction has been denied because the external account object has reached the accumulated amount limit defined in the Partner system

**InvalidAccount** = the transaction has been denied because the account referenced is invalid

**InvalidParameter** = the transaction has been denied because a parameter of the request is invalid

**InvalidCurrency** = the transaction has been denied because the currency of the request is invalid

**InvalidSenderData** = the transaction has been denied because the sender's personal data is invalid

**InvalidDestinationData** = the transaction has been denied because the receiver's personal data is invalid

**InvalidExchangeRate** = the transaction has been denied because the exchange rate provided is invalid

**InvalidAmount** = the transaction has been denied because the amount is invalid

**NonMatchingCurrencyAccount** = the transaction has been denied because the currency does not match the account's currency

## API Definition: Confirmation for Credit Funds

### **Purpose:**

Leap Financial will use this endpoint to let the partner know that the credit have been funded so the Partner can make the proper updates in their system in the External Account Object affected by the transaction

### **Name of the Endpoint:**

CreditFunds

**Method:**
POST

### **Request**

**Body Format:**
JSON

**Fields Definition:**

| Field name             | Type           |   Required  | Details                                                                                       |
| ---------------------- | -------------- | :---------: | --------------------------------------------------------------------------------------------- |
| TransactionId          | String         |     Yes     | Unique identifier of the request.                                                             |
| AuthTrackingIdentifier | String         |      No     | Tracking identifier from a previous TxAuthorization response, when available.                 |
| AccountIdentifier      | String         |     Yes     | An Id representing the External Account Object for the Partner.                               |
| Amount                 | Float          | Conditional | Amount of the transaction with TWO decimal. Required only if AuthTrackingIdentifier is empty. |
| Currency               | String 3 chars | Conditional | Currency of the transaction. Required only if AuthTrackingIdentifier is empty.                |
| ExchangeRate           | Float          | Conditional | Exchange rate applied to the transaction. Required only if AuthTrackingIdentifier is empty.   |

### **Response**

Status Code 200

**Fields Definition:**

| Field name         |   Type  | Required | Details                                                                                                                                                            |
| ------------------ | :-----: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Success            | Boolean |    Yes   | True if the CreditFunds is Successful / False if the CreditFunds Failed                                                                                            |
| TrackingIdentifier |  String |    Yes   | The Unique Id of the CreditFunds response.                                                                                                                         |
| NonCreditReason    |  String |    No    | If the credit is not successful, the reason should be sent, otherwise not sent. The Text should be from the Fixed Possible Values (see definition of values below) |

### NonCreditReason Field Possible Values

**AccountBlocked**, **AccountBlockedByLaw**, **AccountBlockedByGovernment**, **ByVelocity**, **ByAmountLimit**, **ByAccumulateAmountLimit**, **InvalidAccount**, **InvalidParameter**, **InvalidCurrency**, **InvalidSenderData**, **InvalidDestinationData**, **InvalidExchangeRate**, **InvalidAmount** — same meaning as their `NonAuthorizedReason` counterparts, applied to the credit confirmation.

**NotPreviouslyValidated** = the credit has been denied because the account was not previously validated through a TxAuthorization request

**InvalidReferenceId** = the credit has been denied because the reference/tracking id provided is invalid

## API Definition: Reversal for Credit Funds

### **Purpose:**

Leap Financial will use this endpoint to request the reversal of a previous credit movement associated with a `CreditTrackingNumber`, in case of cancellations, failures in the operation chain, or financial readjustments.

### **Name of the Endpoint:**

ReverseCreditFunds

**Method:**
POST

### **Request**

**Body Format:**
JSON

**Fields Definition:**

| Field name           | Type   | Required | Details                                                         |
| -------------------- | ------ | :------: | --------------------------------------------------------------- |
| TransactionId        | String |    Yes   | Unique identifier of the request.                               |
| AccountIdentifier    | String |    Yes   | An Id representing the External Account Object for the Partner. |
| CreditTrackingNumber | String |    Yes   | The tracking number of the credit movement to be reversed.      |

### **Response**

Status Code 200

**Fields Definition:**

| Field name          |   Type  | Required | Details                                                                               |
| ------------------- | :-----: | :------: | ------------------------------------------------------------------------------------- |
| Success             | Boolean |    Yes   | True if the reversal is Successful / False if the reversal is not supported or Failed |
| TrackingIdentifier  |  String |    Yes   | The Unique Id of the ReverseCreditFunds response.                                     |
| ResponseDescription |  String |    No    | If the reversal is not successful, the reason should be indicated in this field.      |

## API Definition: Get Credit Status

### **Purpose:**

Leap Financial will use this endpoint to query the status of a previous funds credit order, when the credit is processed asynchronously by the Partner.

### **Name of the Endpoint:**

GetCreditStatus

**Method:**
POST

### **Request**

**Body Format:**
JSON

**Fields Definition:**

| Field name           | Type   | Required | Details                                                                         |
| -------------------- | ------ | :------: | ------------------------------------------------------------------------------- |
| TransactionId        | String |    Yes   | Unique identifier of the request. A new value is sent on every polling attempt. |
| AccountIdentifier    | String |    Yes   | An Id representing the External Account Object for the Partner.                 |
| CreditTrackingNumber | String |    Yes   | The tracking number of the credit order being queried.                          |

### **Response**

Status Code 200

**Fields Definition:**

| Field name          |  Type  | Required | Details                                                                              |
| ------------------- | :----: | :------: | ------------------------------------------------------------------------------------ |
| CreditStatus        | String |    Yes   | The status of the credit order. Possible values: `InProgress`, `Approved`, `Failed`. |
| ResponseDescription | String |    No    | Additional details about the status, mainly used when `CreditStatus` is `Failed`.    |

## API Definition: Create Account

### **Purpose:**

Leap Financial will use this endpoint to request the creation of an External Account Object for a Person in the Partner's system.

### **Name of the Endpoint:**

CreateAccount

**Method:**
POST

### **Request**

**Body Format:**
JSON

**Fields Definition:**

| Field name        | Type            | Required | Details                                                                                                              |
| ----------------- | --------------- | :------: | -------------------------------------------------------------------------------------------------------------------- |
| TransactionId     | String          |    Yes   | Unique identifier of the request.                                                                                    |
| PersonalData      | Object          |    Yes   | Personal Data of the Person for whom the account will be created. *(See PersonalData Object field definition above)* |
| PersonalDocuments | Array of Object |    No    | List of identity documents for the Person. *(See PersonalDocument Object field definition below)*                    |
| Amount            | Float           |    Yes   | Initial amount associated with the account creation, with TWO decimal                                                |
| Currency          | String 3 chars  |    Yes   | Currency of the amount                                                                                               |
| ExchangeRate      | Float           |    Yes   | Exchange rate applied                                                                                                |

**PersonalDocument Object field definition:**

| Field name   | Type   | Required | Details                                                                                                                                                 |
| ------------ | ------ | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Number       | String |    Yes   | The document number                                                                                                                                     |
| DocumentType | String |    Yes   | The type of document. Possible values: `Passport`, `StateId`, `ResidentCard`, `DriverLicense`, `SocialSecurityNumber`, `INE_IFE`, `ConsularId`, `ITIN`. |

### **Response**

Status Code 200

**Fields Definition:**

| Field name          |   Type  | Required | Details                                                                                                                                                                                |
| ------------------- | :-----: | :------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AccountIdentifier   |  String |    Yes   | The Id representing the newly created External Account Object for the Partner.                                                                                                         |
| DisplayName         |  String |    No    | A String with the displayName for the Account, to be presented to the end-user. The maximum number of characters is 10. Accepts only letters, numbers and hyphens. Example = "MC-1234" |
| Success             | Boolean |    Yes   | True if the account creation is Successful / False if it Failed                                                                                                                        |
| ResponseDescription |  String |    Yes   | If the account creation is not successful, the reason of the Failure will be provided in this field                                                                                    |

## API Definition: Get Create Account Url

### **Purpose:**

Leap Financial will use this endpoint to request a registration URL for a Person, when the Partner's account creation flow requires the Person to complete the registration directly with the Partner.

### **Name of the Endpoint:**

GetCreateAccountUrl

**Method:**
POST

### **Request**

**Body Format:**
JSON

**Fields Definition:**

| Field name        | Type            | Required | Details                                                                                                                         |
| ----------------- | --------------- | :------: | ------------------------------------------------------------------------------------------------------------------------------- |
| TransactionId     | String          |    Yes   | Unique identifier of the request.                                                                                               |
| PersonalData      | Object          |    Yes   | Personal Data of the Person for whom the registration URL will be generated. *(See PersonalData Object field definition above)* |
| PersonalDocuments | Array of Object |    No    | List of identity documents for the Person. *(See PersonalDocument Object field definition above)*                               |

### **Response**

Status Code 200

**Fields Definition:**

| Field name          |   Type  | Required | Details                                                                                           |
| ------------------- | :-----: | :------: | ------------------------------------------------------------------------------------------------- |
| RegistrationUrl     |  String |    Yes   | The URL where the Person must complete the registration.                                          |
| Success             | Boolean |    Yes   | True if the URL was generated Successfully / False if it Failed                                   |
| ResponseDescription |  String |    Yes   | If the URL generation is not successful, the reason of the Failure will be provided in this field |
