4. Individual Customer Transaction
Step by step of how to create an individual customer transaction in FXaaS.
📑 Summary
- Objective
- Functionalities
- Requirements
- Outbound Transaction Flow
- Creating Outbound Transaction
- Data for Creating an Outbound Transaction
- Remessa Online's Partner Bank Account Details
- Outbound Transaction Statuses
- Inbound Transaction Flow
- Creating Inbound Transaction
- Payment Order
- Data for Creating an Inbound Transaction
- Inbound Transaction Statuses
Objective
Allow the partner to generate an inbound or outbound transaction by passing some specific parameters. In order to create a transaction, the partner must first generate a quote. The quote id will be used for completing the transaction.
Functionalities
Through the individual customer transaction module, it is possible to:
Requirements
- The partner must first create a quote that cannot have expired (all quotes expire after 5 minutes of creation);
- The parameters corresponding to each type of transaction must be passed (we will go through each one);
- The customer requesting the transaction must have an "approved" status in the back office;
- A single customer can only have 1 open OUTBOUND transaction;
- A single customer can have n open INBOUND transactions.
- Individual Customers have a transaction limit of BRL 180k/operation or BRL 360k/year. The customer may request to increase this limit by contacting the CX team at Remessa Online through the email: [email protected]
Outbound Transaction Flow
📍 1. Creating Outbound Transaction
Creating an outbound transaction takes place after the quote has been created and validated by the API. Once the outbound transaction is created, the payment should be made to Remessa Online's partner bank account. If the partner does not have custody of the value, the partner can display the account details so the customer can transfer the value. After Remessa Online's partner bank receives the payment, we will start the transaction flow on our end.
The available purposes for outbound transactions are:
The outbound transaction flow is described below:
Some steps of this process are asynchronous, so the partner can register webhooks which will automate the delivery of notifications with the updated transaction status.
📍 2. Data for Creating an Outbound Transaction
To request an outbound transaction, you need to provide the required parameters:
Field Name | Is required | Description |
---|---|---|
taxId | Yes | The customer identifies who wants to do the transaction. |
quoteId | Yes | Quotation identification. |
recipientId | Yes | Recipient identification. |
ffc | No | Individual code provided by the brokerage company. It ensures the correct credit to your investment account. It can be found together with your bank details. How to find it: under "for further credit (FFC)" or "message to the recipient. |
externalId | No | External transaction ID created by the partner. |
FFC
In the outbound transaction scenario, the FFC must only be sent in the Investment purpose
Below you can see an example of a full request for creating an outbound transaction for the "Investment" purpose, with FFC.
curl --request POST \
--url https://fx-sandbox.remessaonline.com.br/v1/api/transactions \
--header 'Authorization: Bearer {{token}}' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-token: {{x-token}}' \
--data '
{
"taxId": "17820105041",
"quoteId": "1f8c4511-9d17-4b45-a0f6-d27277867c2d",
"externalId": "ext-13820109041",
"counterpartyId": "8d523376-96ed-4e0e-9b7a-fe0a55ba9644",
"ffc": "fxaas-d228a0f9-381f-4841-a0c3-d60417043c32"
}
📍 3. Remessa Online's Partner Bank Account Details
Field Name | Description |
---|---|
Bank | Banco Topázio SA (082) |
Agency | 0001 |
Checking Account Number | 6685193-2 |
Favored | Banco Topázio SA |
CNPJ | 07.679.404/0001-00 |
Account Type | Checking Account (Conta Corrente) |
Transaction Type | TED (Credit in Checking Account) |
PIX Key |
---|
c027f762-36df-4301-addd-c3d8995c43f7 |
Payment Methods & Transfer Validation
The customer must submit the TED or PIX from an account in their name. If the transaction is made by a third party, the transaction will be canceled and the amount will be returned by the partner bank.
📍 4. Outbound Transaction Statuses
The process of creating and confirming an outbound transaction will return some statuses that highlight what stage the transaction is at. These statuses can be:
Status | Description |
---|---|
PENDING | Transaction in process of creation. Wait for confirmation. |
AWAITING_PAYMENT | Awaiting confirmation of payment. The identification takes approximately 2 working hours (within Brazilian business hours). |
PAYMENT_UNDER_CONFIRMATION | We are waiting for the payment order of the amount in foreign currency to be sent to our partner bank's account. |
PAYMENT_CONFIRMED | We received the payment made by the customer. |
TRANSACTION_SETTLED | The transaction is being registered with the Central Bank in Brazil. |
TRANSACTION_CONFIRMED | Transaction confirmed at the partner bank. |
UNDER_ANALYSIS | We identified a pending payment with the customer. Customers are required to contact our customer service for more information. |
PAYMENT_RETURNED | The transaction was returned by the beneficiary's bank. This happens when there is an error in the data or by bank policy. The customer is required to contact our customer service for more information. |
CANCELED | The transaction was canceled in our system. The customer is required to contact our customer service for more information. |
FINISHED | Transaction sent to the beneficiary. |
REFUNDED | The transaction was refunded. |
AWAITING_PAYMENT
This status means that we are waiting for the payment of the amount in BRL to be made to our partner bank's account. Only at this point the partner should display the bank account details so that the customer can pay the transfer.
Inbound Transaction Flow
📍 1. Creating Inbound Transaction
Creating an inbound transaction takes place after the quote has been generated and validated by the API. In addition, the partner must also have created a bank account linked to the customer who is making the inbound transaction. You can create a customer bank account through this endpoint.
The available purposes for inbound transactions are:
The inbound transaction flow is described below:
The withdrawal amount becomes available as soon as our partner bank identifies that the remittance has been paid by the remitter. This amount is then held by the bank until the customer creates the transaction and redeems the money into their bank account registered with FXaaS.
There are also some asynchronous steps in this process. For these steps, the partner can register webhooks which will automate the delivery of notifications with the updated transaction status.
📍 2. Payment Order
The payment order is a financial instrument to enable the partner to receive money from abroad, whereby the customer can withdraw the amount to his or her bank account. In order to receive a payment order, the customer must receive a deposit into his or her account in FXaaS. The remitter pays the amount into the customer's account and Remessa Online makes it available for withdrawal in Brazil.
- A payment order can only be used by the user who received it;
- When the customer decides to withdraw the money received through the order, the amount of the transaction must be equal to the amount received in the order;
- The payment order should only be used for the purposes of FOREIGN_AVAILABILITY and RESIDENT_MAINTENANCE for individual customers and SERVICE for companies;
- For the purposes of INVESTMENT_RETURN, a payment order will not be required.
Webhook subscription
Don't forget to register on the webhook for the event PAYMENT_ORDER_RECEIVED.
These are the Payment Order statuses:
Status | Description |
---|---|
OPEN | The payment order is open and can be used in an inbound transaction. |
WITHDRAW | The payment order was used in an inbound transaction and is in the process of being withdrawn. |
📍 3. Data for Creating an Inbound Transaction
To request an inbound transaction, you need to provide the required parameters:
Field Name | Is required | Description |
---|---|---|
taxId | Yes | The customer who wants to do the transaction. |
quoteId | Yes | Quotation ID. |
bankAccountId | Yes | Brazilian Bank Account ID. |
externalId | No | External transaction ID created by the partner. |
paymentOrderId | Only for the purposes of FOREIGN_AVAILABILITY and RESIDENT_MAINTENANCE | This is the Id of the payment order made by the remitter abroad. This Id will be returned to the partner via webhook as soon as the payment is identified by Remessa Online Partner Bank. |
Below you can see an example of a full request for creating an inbound transaction.
curl --request POST \
--url https://fx-sandbox.remessaonline.com.br/v1/api/transactions \
--header 'Authorization: Bearer {{token}}' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-token: {{x-token}}' \
--data '
{
"taxId": "80711812772",
"quoteId": "97684bd0-8819-40ce-847b-b1a1a9074b9b",
"bankAccountId": "639f5f98-6c5b-4cff-bc12-4b8414f8ade7",
"paymentOrderId": "2aa9eba9-b51c-44ab-aa9b-377dae3f4c39"
}
📍 4. Inbound Transaction Statuses
The process of creating and confirming an inbound transaction will return some statuses that highlight what stage the transaction is at. These statuses can be:
Status | Description |
---|---|
PENDING | Transaction in process of creation. Wait for confirmation. |
PAYMENT_UNDER_CONFIRMATION | We are waiting for the payment order of the amount in foreign currency to be sent to our partner bank's account. |
WITHDRAW_IN_PROGRESS | We received the payment order sent by the partner. |
PAYMENT_RETURNED | The transaction was returned by the bank This happens when there is an error in the data or by bank policy. The customer is required to contact our customer service for more information. |
CANCELED | The transaction was canceled in our system. The customer is required to contact our customer service for more information. |
FINISHED | Money has been sent to the destination account. |
Updated over 1 year ago