TED
执行 TED 转账
在巴西国家金融系统中,TED 交易的接收并非即时完成。在 QI 系统中执行 TED 交易时,系统将立即返回响应,说明转账的错误、拒绝或接受情况。即使转账已被置于 sent 状态,接收金融机构也可能拒绝资金转入并将金额退回。在此情况下,将发送一个新的状态为 rejected 的 webhook,拒绝原因将在 refusal_reason 字段中返回。
对来源账户的扣款将立即执行。这并不意味着金额已被贷记至目标账户,因为上述 TED 交易原则仍然适用。若发出的交易被拒绝,交易金额将重新贷记至来源账户。
Request
ENDPOINT
/account/ACCOUNT_KEY/tedMÉTODO
POSTRequest Body
{
"target_account": {
"account_branch": "0001",
"account_number": "92796",
"account_digit": "1",
"owner_document_number": "23599885000192",
"owner_name": "Titular da Conta",
"ispb": "12345678",
"account_type": "checking_account"
},
"transaction_amount": 8.86,
"request_control_key": "048c8ee5-1c91-46a6-952e-7e5c27c21f20"
}
Body Params
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
request_control_key * | string | 客户使用的请求唯一标识密钥,格式为 uuid v4。 | 36 |
target_account * | object | 目标账户 | target_account 对象 |
transaction_amount * | float | 转账金额 | 10 |
target_account 对象
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
account_branch * | string | 支行。 | 4 |
account_digit * | string | 账户数字 | 1 |
account_number * | string | 账户号码。 | 20 |
owner_document_number * | string | 账户持有人的 CPF 或 CNPJ(仅数字)。 | 14 |
owner_name * | string | 账户持有人姓名。 | 50 |
account_type* | string | 账户类型。 | account_type 枚举 |
ispb * | string | 以金融机构 CNPJ 为基础(8位数字)。 | 8 |
account_type 枚举
| 枚举值 | 描述 |
|---|---|
| checking_account | 活期账户 |
| deposit_account | 存款账户 |
| guaranteed_account | 担保账户 |
| investment_account | 投资账户 |
| payment_account | 支付账户 |
| saving_account | 储蓄账户 |
Response
STATUS
201Response Body
{
"request_control_key": "6e290347-330d-4b3a-8ebb-2ac217ad6eb3",
"ted_key": "8cb70dea-9fb0-4a68-9572-99a72849c8d6",
"created_at": "2021-10-22T20:30:23.459Z",
"ted_status": "sent",
"transaction_amount": 126.97,
"fee_amount": 0.0,
"transaction_key": "8ea90347-330d-4b3a-8ebb-2ac217ad6eb3"
}
STATUS
4xxResponse Body: 错误
{
"title": "titulo",
"description": "description in English",
"translation": "descrição em portugues",
"code": "codigo",
"extra_fields": {}
}
HTTP 状态码status | QI 代码code | 标题title | 描述(英文)description | 描述(葡文)translation |
|---|---|---|---|---|
| 400 | QIT000001 | Bad Request | Schema Error | Erro de Schema |
| 400 | TED000XXX | request_control_key must be a valid uuid v4 string | request_control_key was not accepted for not being a valid uuid v4 string | request_control_key não foi aceito por não ser uma palavra uuid v4 válida |
| 400 | TED000XXX | Invalid Transaction Amount | Transaction amount of {transaction_amount} is not valid. It must be a positive value with at maximum 2 decimal places | O valor de transação {transaction_amount} não é válido. Deve ser um valor positivo com no máximo duas casas decimais |
| 404 | TED000XXX | Account not found | Account not found for: {account_datum} | Conta não encontrada para: {account_datum} |
| 400 | TED000XXX | Account is Closed | Account {account_key} is closed. | Conta {account_key} está fechada. |
| 400 | TED000XXX | Account is Blocked | Account {account_key} is blocked. | Conta {account_key} está bloqueada. |
| 403 | TED000XXX | User is not allowed to do this transaction | Usuário não tem autorização para fazer essa transação | |
| 400 | TED000XXX | Target Account may not receive resources | Target account is currently unavailable o receive resorses | Conta destino está impedida de receber recursos |
| 400 | TED000XXX | Bad Request | Insufficient account balance for transfer and fee amount. | Saldo de conta insuficiente para a transferência e a taxa. |
| 400 | TED000XXX | Bad Request | Billing account closed or blocked | Conta de cobrança encerrada ou bloqueada |
| 400 | TED000XXX | Bad Request | Insufficient billing account balance for fee. | Saldo de conta de cobrança insuficiente para a taxa. |
| 400 | TED000XXX | Bad Request | Transaction amount is over limit. | O total da transferência é superior ao limite. |
| 400 | TED000XXX | Bad Request | Insufficient account balance for transfer and fee amount. | Saldo de conta insuficiente para a transferência e a taxa |
| 400 | TED000XXX | Bad Request | request_control_key {request_control_key} already in use | request_control_key {request_control_key} já utilizada |
| 400 | TED000XXX | Invalid Target Account Number | Target account number is invalid | Número da conta de destino é inexistente ou inválido |
| 400 | TED000XXX | Invalid Target Account Document Number | Target account document is invalid | Número de documento enviado é inválido |
| 400 | TED000XXX | Unrelated Beneficiary Document Number | Target account document is not the same as sent | Número de documento da conta de destino diferente do enviado |
| 400 | TED000XXX | Blocked Target Account | Target account is blocked. | A conta de destino encontra-se bloqueada. |
| 400 | TED000XXX | Closed Target Account | Target account is closed. | A conta de destino encontra-se encerrada. |
| 400 | TED000XXX | Rejected Payment Order | Transaction refused by target | Transação rejeitada por recebedor. |
查询 TED 交易
Request
ENDPOINT
/account/ACCOUNT_KEY/ted/TED_KEY/TED_DIRECTIONMÉTODO
GETRequest Path Params
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
ted_direction * | string | 用于指示交易是入账还是出账的过滤器。 | ted_direction 枚举 |
account_key * | uuidv4 | QI 账户的唯一标识密钥 | 36 |
ted_key * | uuidv4 | TED 转账的唯一标识密钥 | 36 |
ted_direction 枚举
| 枚举值 | 描述 |
|---|---|
| incoming | 入账 |
| outgoing | 出账 |
注意
仅在以下情况下允许查看转账:对于 outgoing 类型的 ted_direction,请求方需对交易来源账户有权限;对于 incoming 类型的 ted_direction,请求方需对交易接收账户有权限。否则将返回未找到错误。
Response
STATUS
200Response Body: 被拒绝转账(outgoing)
{
"request_control_key": "6e290347-330d-4b3a-8ebb-2ac217ad6eb3",
"ted_key": "8cb70dea-9fb0-4a68-9572-99a72849c8d6",
"account_key": "fc6862c4-2b20-4057-8063-b8809866e494",
"created_at": "2021-10-22T20:30:23.459Z",
"ted_status": "rejected",
"transaction_amount": 126.97,
"fee_amount": 0.0,
"target_account": {
"account_branch": "0001",
"account_digit": "6",
"account_number": "78340",
"ispb": "12345678",
"owner_document_number": "32402502000135",
"owner_name": "QI Tech"
},
"refusal_reason": {
"refusal_code": 1,
"enumerator": "conta_destinatario_encerrada",
"description": "Conta Destinatária do Crédito Encerrada"
}
}
Response Body: 已发送转账(outgoing)
{
"request_control_key": "6e290347-330d-4b3a-8ebb-2ac217ad6eb3",
"ted_key": "8cb70dea-9fb0-4a68-9572-99a72849c8d6",
"account_key": "fc6862c4-2b20-4057-8063-b8809866e494",
"created_at": "2021-10-22T20:30:23.459Z",
"ted_status": "sent",
"transaction_amount": 126.97,
"fee_amount": 0.0,
"target_account": {
"account_branch": "0001",
"account_digit": "6",
"account_number": "78340",
"ispb": "12345678",
"owner_document_number": "32402502000135",
"owner_name": "QI Tech"
},
"refusal_reason": {}
}
Response Body: 已接收转账(incoming)
{
"request_control_key": "6e290347-330d-4b3a-8ebb-2ac217ad6eb3",
"ted_key": "8cb70dea-9fb0-4a68-9572-99a72849c8d6",
"account_key": "fc6862c4-2b20-4057-8063-b8809866e494",
"created_at": "2021-10-22T20:30:23.459Z",
"ted_status": "received",
"transaction_amount": 126.97,
"fee_amount": 0.0,
"source_account": {
"account_branch": "0001",
"account_digit": "6",
"account_number": "78340",
"ispb": "12345678",
"owner_document_number": "32402502000135",
"owner_name": "QI Tech"
},
"refusal_reason": {}
}
STATUS
4xxResponse Body: 错误
{
"title": "titulo",
"description": "description in English",
"translation": "descrição em portugues",
"code": "codigo",
"extra_fields": {}
}
HTTP 状态码status | QI 代码code | 标题title | 描述(英文)description | 描述(葡文)translation |
|---|---|---|---|---|
| 404 | TED000XXX | Outgoing TED Not Found | Ted key {ted_key} was not found | Transferência Ted de saída com chave {ted_key} não foi encontrada. |
| 404 | TED000XXX | Incoming TED Not Found | Ted key {ted_key} was not found | Transferência Ted de entrada com chave {ted_key} não foi encontrada. |
查询 TED 交易列表
Request
ENDPOINT
/account/ACCOUNT_KEY/tedsMÉTODO
GETPath Params
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
account_key * | uuidv4 | QI 账户的唯一标识密钥 | 36 |
Query Params
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
ted_direction | enumerator | 交易方向指示器(入账或出账)。若未发送,默认为 outgoing | ted_transfer_direction 枚举 |
request_control_key | uuidv4 | 客户使用的请求唯一标识密钥。 | 36 |
date_from | string | 起始日期。格式为 "YYYY-MM-DD" | |
date_to | string | 结束日期。格式为 "YYYY-MM-DD" | |
page | integer | 请求的页码,默认为 1 | |
page_size | integer | 查询请求的页面大小,默认值和最大值均为 30 | 最大值为 30 |
ted_transfer_direction 枚举
| 枚举值 | 描述 |
|---|---|
| incoming | 入账 TED 转账 |
| outgoing | 出账 TED 转账 |
Response
STATUS
201Response Body
{
"data": [
{
"request_control_key": "6e290347-330d-4b3a-8ebb-2ac217ad6eb3",
"ted_key": "8cb70dea-9fb0-4a68-9572-99a72849c8d6",
"account_key": "fc6862c4-2b20-4057-8063-b8809866e494",
"created_at": "2021-10-22T20:30:23.459Z",
"ted_status": "sent",
"transaction_amount": 126.97,
"fee_amount": 0.0,
"target_account": {
"account_branch": "0001",
"account_digit": "6",
"account_number": "78340",
"ispb": "12345678",
"owner_document_number": "32402502000135",
"owner_name": "QI Tech"
},
"refusal_reason": {}
}
],
"pagination": {
"current_page": 1,
"rows_per_page": 30
}
}
TED 发送完成后的 Webhook
Webhook 将通知 TED 交易是否被退回。
Webhook Request Body
Webhook Body: TED 被拒绝
{
"webhook_type": "baas.ted.outgoing_ted",
"webhook_datetime": "2021-10-22T20:30:23.459Z",
"data": {
"request_control_key": "6e290347-330d-4b3a-8ebb-2ac217ad6eb3",
"ted_key": "8cb70dea-9fb0-4a68-9572-99a72849c8d6",
"account_key": "fc6862c4-2b20-4057-8063-b8809866e494",
"created_at": "2021-10-22T20:30:23.459Z",
"ted_status": "sent",
"transaction_amount": 126.97,
"fee_amount": 0.0,
"target_account": {
"account_branch": "0001",
"account_digit": "6",
"account_number": "78340",
"ispb": "12345678",
"owner_document_number": "32402502000135",
"owner_name": "QI Tech"
},
"refusal_reason": {
"refusal_code": 1,
"enumerator": "conta_destinatario_encerrada",
"description": "Conta Destinatária do Crédito Encerrada"
}
}
}
Webhook Body Param
| 字段 | 类型 | 描述 | 最大字符数 |
|---|---|---|---|
webhook_type | string | 定义所报告事件类型的枚举值 | 23 |
webhook_datetime | string | Webhook 发送的日期和时间 | 20 |
request_control_key | string | 客户使用的请求唯一标识密钥,格式为 uuid v4 | 36 |
ted_key | string | TED 转账的唯一标识密钥 | 36 |
created_at | string | 交易创建的日期和时间 | 24 |
ted_status | string | TED 交易状态 | ted_status 枚举 |
transaction_amount | number | 转账金额 | 10 |
fee_amount | number | 转账收取的费用 | 35 |
target_account | Object | 目标账户 - 仅在 "manual" 类型交易中发送 | target_account 对象 |
refusal_reason | Object | 根据巴西中央银行标准的拒绝原因 | refusal_reason 对象 |
ted_status 枚举
| 枚举值 | 描述 |
|---|---|
| sent | TED 转账成功执行。 |
| pending | TED 转账待处理。 |
| rejected | TED 转账被拒绝。 |
| returned | TED 转账被退回。 |
target_account 对象
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
account_branch * | string | 支行。 | 4 |
account_digit * | string | 账户数字 | 1 |
account_number * | string | 账户号码。 | 20 |
owner_document_number * | string | 账户持有人的 CPF 或 CNPJ(仅数字)。 | 14 |
owner_name * | string | 账户持有人姓名。 | 50 |
account_type* | string | 账户类型。 | account_type 枚举 |
ispb * | string | 以金融机构 CNPJ 为基础(8位数字)。 | 8 |
refusal_reason 对象
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
bacen_code * | string | 巴西中央银行拒绝代码 | 3 |
enumerator * | string | 巴西中央银行拒绝枚举值 | 100 |
description * | string | 巴西中央银行拒绝描述 | 100 |
account_type 枚举
| 枚举值 | 描述 |
|---|---|
| checking_account | 活期账户 |
| deposit_account | 存款账户 |
| guaranteed_account | 担保账户 |
| investment_account | 投资账户 |
| payment_account | 支付账户 |
| saving_account | 储蓄账户 |
接收 TED 后的 Webhook
Webhook 将通知 TED 交易的最终状态。
Webhook Request Body
Request Body: TED 已接收
{
"webhook_type": "baas.ted.incoming_ted",
"webhook_datetime": "2021-10-22T20:30:23.459Z",
"data": {
"request_control_key": "6e290347-330d-4b3a-8ebb-2ac217ad6eb3",
"ted_key": "8cb70dea-9fb0-4a68-9572-99a72849c8d6",
"account_key": "fc6862c4-2b20-4057-8063-b8809866e494",
"created_at": "2021-10-22T20:30:23.459Z",
"ted_status": "received",
"transaction_amount": 126.97,
"fee_amount": 0.0,
"source_account": {
"account_branch": "0001",
"account_digit": "6",
"account_number": "78340",
"ispb": "12345678",
"owner_document_number": "32402502000135",
"owner_name": "QI Tech"
},
"refusal_reason": {}
}
}
Webhook Body Param
| 字段 | 类型 | 描述 | 最大字符数 |
|---|---|---|---|
webhook_type | string | 定义所报告事件类型的枚举值 | 23 |
webhook_datetime | string | Webhook 发送的日期和时间 | 20 |
ted_key | string | TED 转账的唯一标识密钥 | 36 |
created_at | string | 交易创建的日期和时间 | 100 |
ted_status | string | TED 交易状态 | ted_status 枚举 |
transaction_amount | number | 转账金额 | 10 |
fee_amount | number | 转账收取的费用 | 35 |
target_account | Object | 目标账户 - 仅在 "manual" 类型交易中发送 | target_account 对象 |
refusal_reason | Object | 根据巴西中央银行标准的拒绝原因 | refusal_reason 对象 |
ted_status 枚举
| 枚举值 | 描述 |
|---|---|
| received | TED 转账成功执行。 |
| pending | TED 转账待处理。 |
| rejected | TED 转账被拒绝。 |
target_account 对象
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
account_branch * | string | 支行。 | 10 |
account_digit * | string | 账户数字 | 10 |
account_number * | string | 账户号码。 | 10 |
owner_document_number * | string | 账户持有人的 CPF 或 CNPJ(仅数字)。 | 14 |
owner_name * | string | 账户持有人姓名。 | 50 |
account_type* | string | 账户类型。 | account_type 枚举 |
ispb * | string | 以金融机构 CNPJ 为 基础(8位数字)。 | 8 |
refusal_reason 对象
| 字段 | 类型 | 描述 | 字符数 |
|---|---|---|---|
bacen_code * | string | 巴西中央银行拒绝代码 | 3 |
enumerator * | string | 巴西中央银行拒绝枚举值 | 100 |
description * | string | 巴西中央银行拒绝描述 | 100 |
account_type 枚举
| 枚举值 | 描述 |
|---|---|
| checking_account | 活期账户 |
| deposit_account | 存款账户 |
| guaranteed_account | 担保账户 |
| investment_account | 投资账户 |
| payment_account | 支付账户 |
| saving_account | 储蓄账户 |