5. Company Customer Transaction
Step by step of how to create an company 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 make a quote. The quote id will be used when completing the transaction.
Functionalities
Through the company 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.
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.
Upload Invoice
After creating the transaction,If the outbound transaction is for the purpose of services payment or comex, the customer must send the document that proves the transaction.
📍 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 | Valid Brazilian company tax id number (CNPJ). |
classification | Yes | Valid identification for specific purposes from the Central Bank of Brazil. |
quoteId | Yes | Quotation ID. |
externalId | No | External transaction ID created by the partner. |
Classification
The classification is a subcategory of the transaction, this information is required by the central bank of Brazil for legal entity transactions.
The classifications accepted by the API are:
- Copyright, assignment, or use of computer programs (SOFTWARE_COPYRIGHT);
- Computer Professionals (SOFTWARE_PROFESSIONALS);
- Legal Professions (LEGAL_PROFESSIONAL);
- Copyright, copying license, distribution (COPYRIGHT);
- Air transport, import freight (AIR_TRANSPORT_FREIGHT);
- Advertising, market research, and opinion polls (ADVERTISING_MARKET_RESEARCH);
- Business consulting and public relations (BUSINESS_CONSULTING);
- Other Services (OTHER_SERVICES).
Below you can see an example of a full request for creating an outbound 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": "33456204000190",
"quoteId": "333208aa-2cf1-43c9-96f4-d96bc2679a57",
"externalId": "ext-33456204000190-1",
"classification": "SOFTWARE_COPYRIGHT"
}
📍 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). |
AWAITING_DOCUMENT_UPLOAD | Uploading the document is required to proceed to the next steps. |
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 company. |
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. |
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. |
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 also are 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 | Valid Brazilian company tax id number (CNPJ). |
classification | Yes | Valid identification for specific purposes from the Central Bank of Brazil. |
bankAccountId | Yes | Bank Account ID. |
quoteId | Yes | Quotation ID. |
externalId | No | External transaction ID created by the partner. |
paymentOrderId | Yes | 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. |
expectedNumberOfDocuments | No | This parameter can be included in the operation to indicate how many documents will be sent for the respective operation. The maximum allowed is 4 documents. For INBOUND transactions, the document is only required if the operation is of the comex purpose. |
Upload Invoice
After creating the transaction,If the inbound transaction is for the purpose of comex, the customer must send the document that proves the transaction.
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": "00905849000295",
"quoteId": "ffb31597-61b3-4cac-8eba-5e5d39709bed",
"bankAccountId": "42dc0b71-876d-4be7-840f-241a967a4ae2",
"classification": "SOFTWARE_COPYRIGHT",
"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. |
Addition of Multi-Document Sending for Business Operations
In order to facilitate the sending or receiving of business operations, it is possible to include multiple documents to validate the nature of the operation. These documents can be an invoice or a group of documents.
To enable the sending of multiple documents for these operations, we have implemented this functionality in the FXaaS API.
expectedNumberOfDocuments
: This parameter can be included in the operation to indicate how many documents will be sent for the respective operation. The maximum allowed is 4 documents.
When passing this number, a request should be made to the document upload endpoint for each document. For example, if expectedNumberOfDocuments
is set to 2, two requests should be made to the transaction document upload endpoint.
The transactions that need documents to be completed are:
- Inbound: COMEX;
- Outbound: COMEX, SERVICE;
After the documents are uploaded, the transaction will undergo analysis and proceed through the completion process.
Updated 16 days ago