GraphQL API

URL de pruebas: https://api-sandbox.koywe.com/graphql

Esta URL corre una instancia del explorador Apollo, por si es que quieres probar la API desde tu navegador.

Envíanos un email a hola@koywe.com para obtener tus credenciales de prueba o que te hagamos un tour personalizado.

Pruebas: La API de pruebas funciona en las testnets de las distintas blockchains. Tenemos un stock limitado de tokens, por lo que te pedimos criterio al probarlas.

Queries y Mutaciones

Para hacer llamados a la API GraphQL, siempre debes enviar un request POST a la URL base, incluyendo la query y variables como objeto JSON. Un ejemplo en CURL de autenticación (header de Authorization incluido ilustrativamente):

$curl --request POST \
> --header 'content-type: application/json' \
> --header 'Authorization: Bearer JWTTOKEN' \
> --url 'https://api-sandbox.koywe.com/graphql' \
> --data '{"query":"mutation authenticate($input: AuthInput!) {\n authenticate(input: $input) {\n token\n }\n}","variables":{"input":{"clientId":"63631a561f41f8fd18f8c3e0","secret":"supersecretstringFTW"}}}'

En los ejemplos siguientes sólo pondremos el objeto JSON del request.

devuelve un Bearer Token que dura 24 horas.

Require: clientId, secret

Opcional: email. Este campo asocia las transacciones a una cuenta de usuario específica y permite ver la información asociada a esta.

1mutation Authenticate($input: AuthInput!) {
2 authenticate(input: $input) {
3 token
4 }
5}
6"variables" :
7{
8 "input": {
9 "clientId": "63631a561f41f8fd18f8c3e0",
10 "secret": "secretpassword",
11 "email": "email@domain.com" # optional
12 }
13}

Los dos siguientes servicios permiten la validación de un usuario final de manera directa. El primer servicio enviará un código al correo deseado. Ese código debe ser ingresado en el segundo servicio para recibir la información de la sesión.

Envía un código de 6 dígitos al email entregado en el input.

1mutation validateAccount($input: ValidateAccountInput!) {
2 validateAccount(input: $input) {
3 _id
4 }
5}
6"variables" :
7{
8 "input": {
9 "email": "email@domain.com",
10 "clientId": "f87aad3as90fe5489bb5099f"
11 }
12}

El valor de code en el input debe ser recogido del correo enviado por el servicio anterior.

1mutation validateCode($input: ValidateCodeInput!) {
2 validateCode(input: $input) {
3 token
4 isIdentify
5 needVerificate
6 identity
7 firstOp
8 }
9}
10"variables" :
11{
12 "input": {
13 "clientId": "40401a5615d9d8fd18f8a0b4",
14 "code": "940577",
15 "email": "example@domain.com"
16 }
17}

Obtiene los pares de moneda-tokens soportados.

Opcional: symbol: El símbolo de la moneda a elección. clientId.

1query GetCurrencyTokensV2($input: GetCurrenciesInput!) {
2 GetCurrencyTokensV2(input: $input) {
3 _id
4 name
5 symbol
6 decimals
7 clientId
8 logo
9 locate
10 limits {
11 min
12 max
13 }
14 tokens {
15 _id
16 name
17 symbol
18 decimals
19 logo
20 }
21 }
22}
23"variables":
24{
25 "input": {
26 "symbol": null,
27 "clientId": null
28 }
29}

Obtiene los pares de token-monedas soportados.

Opcional: symbol. El símbolo del cripto a elección. clientId

1query GetTokenCurrencies($input: GetCurrenciesInput!) {
2 GetTokenCurrencies(input: $input) {
3 _id
4 name
5 symbol
6 decimals
7 logo
8 currencies {
9 _id
10 name
11 symbol
12 decimals
13 locale
14 logo
15 limits {
16 min
17 max
18 }
19 }
20 }
21}
22"variables":
23{
24 "input": {
25 "symbol": null,
26 "clientId": null
27 }
28}

Listado de los medios de pago disponibles y sus detalles (fee, datos de transferencia, etc) para una moneda específica.

Requiere: symbol. currencyId.

Opcional: clientId. La lista de medios de pago disponibles pueden variar de acuerdo a este parámetro.

1query GetPaymentProviderList($input: GetPaymentProviderListInput!) {
2 getPaymentProviderList(input: $input) {
3 _id
4 name
5 fee
6 image
7 description
8 details
9 }
10}
11"variables":
12{
13 "input": {
14 "symbol": "COP"
15 "clientId": "f87aad3as90fe5489bb5099f"
16 "currencyId": "489bb507aad3as90fe0f"
17 }
18}

Reglas para Pagos por Transferencia Bancaria WIRE: Para los pagos realizados mediante transferencia bancaria, se han establecido las siguientes reglas:

  • Se permite a los usuarios tener solo una orden activa por cliente si utilizan la transferencia bancaria como su método de pago. Esto implica que si un usuario crea una nueva orden mediante transferencia bancaria, las órdenes anteriores se cancelarán, y solo se mantendrá activa la orden más reciente.
  • Si un usuario realiza un pago mediante transferencia bancaria y el saldo no es igual al monto de la orden, el sistema ajustará automáticamente la orden. Este ajuste es necesario tanto para los pagos que son inferiores al monto de la orden como para las órdenes que superan el monto especificado.
Este endpoint está obsoleto y se eliminará en una versión futura.

Listado de los payouts disponibles y sus detalles (fees, tiempos, etc) para una moneda específica.

Requiere: symbol. currencyId.

Opcional: clientId. La lista de medios de pago disponibles pueden variar de acuerdo a este parámetro.

1query GetPayoutProviderList($input: GetPayoutProviderListInput!) {
2 getPayoutProviderList(input: $input) {
3 _id
4 name
5 fee
6 image
7 description
8 details
9 }
10}
11"variables":
12{
13 "input": {
14 "symbol": "COP"
15 "clientId": "f87aad3as90fe5489bb5099f"
16 "currencyId": "489bb507aad3as90fe0f"
17 }
18}

Consultar Quote

Devuelve un “Quote”. Recibe un quoteId.

1query getQuote($quoteId: String!) {
2 getQuote(quoteId: $quoteId) {
3 amountIn
4 amountOut
5 co2
6 exchangeRate
7 symbolIn
8 symbolOut
9 paymentMethodId
10 koyweFee
11 networkFee
12 validFor
13 validUntil
14 }
15}
16"variables":
17{
18 "quoteId": "63c59396a38c6506a620162f" #Created when calling mutation quote
19}

Crear Quote

1mutation quote($input: QuoteInput!) {
2 quote(input: $input) {
3 quoteId
4 amountIn
5 amountOut
6 co2
7 exchangeRate
8 symbolIn
9 symbolOut
10 paymentMethodId
11 koyweFee
12 networkFee
13 validFor
14 validUntil
15 }
16}
17"variables":
18{
19 "input": {
20 "amountIn": 3716338,
21 "amountOut": 3.3,
22 "clientId": "cse7fj283rkn2x6v7rr",
23 "symbolIn": "CLP",
24 "symbolOut": "ETH",
25 "paymentMethodId": null, # This value corresponds to the _id value returned after calling GetPaymentProviderList
26 "executable": false #set false by default. If value is set true, we store it and return a UUID.
27 }
28}

Queries Privadas

Todas las queries a continuación requieren un Bearer Token en los headers:

Authorization: Bearer [token]

Estos servicios de usuario incluye: la creación de nuevos perfiles de usuario, la capacidad de actualizar información de usuarios, la posibilidad de consultar detalles de usuario, y una función de validación que verifica si el usuario brindo datos suficientes de su persona para poder operar.
Ver Consideraciones

Check account

Verifica la información de la cuenta del usuario y determina si es posible realizar alguna operación. Si llegase a faltar algún dato del usuario, podría agregarlo mediante el servicio de actualización de usuario detallado mas abajo.

1query CheckAccount($input: InputEmailAccountDto!) {
2 checkAccount(input: $input) {
3 canOperate
4 errors {
5 field
6 message
7 }
8 accountStatus
9 nextVerificationDate
10 }
11}
12"variables" :
13{
14 "input": {
15 "email": "email@domain.com"
16 }
17}

Get account

Devuelve la información registrada del usuario.

1query GetAccountProfile($input: InputEmailAccountDto!) {
2 getAccountProfile(input: $input) {
3 document {
4 documentNumber
5 documentType
6 country
7 isCompany
8 others {
9 documentNumber
10 documentType
11 country
12 }
13 }
14 address {
15 addressStreet
16 addressCountry
17 addressZipCode
18 addressNeighborhood
19 addressCity
20 addressState
21 }
22 personalInfo {
23 names
24 firstLastname
25 secondLastname
26 nationality
27 gender
28 dob
29 phoneNumber
30 activity
31 }
32 email
33 }
34}
35"variables" :
36{
37 "input": {
38 "email": "email@domain.com"
39 }
40}

Create account

Crea una cuenta nueva de usuario.

1mutation CreateAccount($input: InputCreateAccountDto!) {
2 createAccount(input: $input) {
3 document {
4 documentNumber
5 documentType
6 country
7 isCompany
8 others {
9 documentNumber
10 documentType
11 country
12 }
13 }
14 address {
15 addressStreet
16 addressCountry
17 addressNeighborhood
18 addressCity
19 addressState
20 addressZipCode
21 }
22 personalInfo {
23 names
24 firstLastname
25 secondLastname
26 nationality
27 gender
28 dob
29 phoneNumber
30 activity
31 }
32 email
33 }
34}
35"variables" :
36{
37 "input": {
38 "email": "email@domain.com",
39 "document": {
40 "documentNumber": "",
41 "documentType": "",
42 "country": "",
43 "isCompany": false,
44 "others": [
45 {
46 "documentNumber": "",
47 "documentType": "",
48 "country": ""
49 }
50 ]
51 },
52 "address": {
53 "addressStreet": "",
54 "addressCountry": "",
55 "addressZipCode": "",
56 "addressCity": "",
57 "addressState": ""
58 },
59 "personalInfo": {
60 "names": "",
61 "firstLastname": "",
62 "secondLastname": "",
63 "nationality": "",
64 "dob": "",
65 "gender": "",
66 "phoneNumber": "",
67 "activity": ""
68 }
69 }
70}

Update account

Actualiza datos del usuario. Si updateEmail está presente, la API valida que sea un email válido y que no exista ya otra cuenta con ese email.

Si updateDocumentNumber o updateDocumentType está presente, la API valida que tenga un formato válido, que no exista en otra cuenta, que no tenga ordenes ejecutadas y ejecuta una validación asíncrona para corroborar que los datos personales sean correctos.

Los resultados de la validación asíncrona serán enviados a el callback configurado. Puedes ver más información en la sección de webhooks.

1mutation UpdateAccount($input: InputUpdateAccountDto!) {
2 updateAccount(input: $input) {
3 document {
4 documentNumber
5 documentType
6 country
7 isCompany
8 others {
9 documentNumber
10 documentType
11 country
12 }
13 }
14 address {
15 addressStreet
16 addressCountry
17 addressNeighborhood
18 addressCity
19 addressState
20 addressZipCode
21 }
22 personalInfo {
23 names
24 firstLastname
25 secondLastname
26 nationality
27 gender
28 dob
29 phoneNumber
30 activity
31 }
32 email,
33 resultUpdateDocumentNumber
34 }
35}
36"variables" :
37{
38 "input": {
39 "email": "email@domain.com"
40 "document": {
41 "documentNumber": "",
42 "documentType": "",
43 "country": "",
44 "others": [
45 {
46 "documentNumber": "",
47 "documentType": "",
48 "country": ""
49 }
50 ]
51 },
52 "address": {
53 "addressStreet": "",
54 "addressCountry": "",
55 "addressZipCode": "",
56 "addressCity": "",
57 "addressState": "",
58 "addressNeighborhood": ""
59 },
60 "personalInfo": {
61 "names": "",
62 "firstLastname": "",
63 "secondLastname": "",
64 "nationality": "",
65 "dob": "",
66 "activity": "",
67 "gender": "",
68 "phoneNumber": ""
69 },
70 "updateEmail",
71 "updateDocumentNumber"
72 "updateDocumentType"
73 }
74}

Create Order

Crea una orden de compra o venta, retorna un UUID para seguimiento (orderId) y, dependiendo del medio de pago, una URL para realizarlo (providedAction).

Para llamadas autenticadas sin haber asociado un email, debe incluirse uno como parámetro para asociar la transacción a un usuario específico.

Necesitas introducir amountIn o amountOut, no ambos.

On ramp

Requiere: destinationAddress, quoteId .

Off ramp

Requiere: destinationAddress, quoteId.

Opcional: email (obligatorio si no se está autenticado con email), documentNumber (para facilitar la conciliación bancaria).

Descripción de datos: ver Order Rest

1mutation createOrder($input: OrderInput!) {
2 createOrder(input: $input) {
3 orderId
4 amountIn
5 amountOut
6 documentNumber
7 email
8 metadata
9 orderId
10 paymentMethodId
11 providedAction
12 providedAddress
13 quoteId
14 symbolIn
15 symbolOut
16 externalId
17 }
18}
19"variables":
20{
21 "input": {
22 "quoteId": "63e154dbc47d9176668a9af6",
23 "amountIn": 1.100.000,
24 "amountOut": 1,
25 "email": "example@domain.com", #for API calls
26 "documentNumber": null,
27 "paymentMethodId": "632d7fe6237ded3a748112cf", # This value corresponds to the _id value returned after calling GetPaymentProviderList
28 "destinationAddress": "0x40f9bf922c23c43acdad71Ab4425280C0ffBD697", # Will return error if address is invalid
29 "symbolIn": "CLP",
30 "symbolOut": "ETH",
31 "metadata": null,
32 "externalId": "12A2324A",
33 "callbackUrl": "https://urlexample/mytracing/",
34 }
35}

Consultar Orden

Retorna información de una order. Recibe un orderId.

1query getOrder($input: GetOrderInput!) {
2 getOrder(input: $input){
3 orderId # unique identifier
4 quoteId # quote id
5 orderType # currency-crypto for on ramp, crypto-currency for off ramp
6 symbolIn
7 symbolOut
8 amountIn
9 amountOut
10 email
11 exchangeRate
12 koyweFee
13 partnerFee
14 networkFee
15 status # see the webhooks and states docs for more info
16 outReceipt
17 bankAccountId # bank account id for off ramps
18 metaData
19 externalId
20 feesInFiat { #Only if the order has a partnerFee and is greather than 0
21 koyweFee
22 netFee
23 partnerFee
24 }
25 feesInUSD { #Only if the order has a partnerFee and is greather than 0
26 koyweFee #(koyweFee / exchangeRate) truncated to 4 digits after the comma
27 netFee #(netFee / exchangeRate) truncated to 4 digits after the comma
28 partnerFee #(partnerFee / exchangeRate) truncated to 4 digits after the comma
29 }
30 dates {
31 confirmationDate
32 paymentDate
33 executionDate
34 deliveryDate
35 }
36 destinationAddress # wallet address to send or receive tokens
37 paymentMethodId
38 logoIn # logo url for symbolIn
39 logoOut # logo url for symbolOut
40 refund { # refund details for off ramps
41 dates {
42 startDate
43 processDate
44 deliveredDate
45 }
46 destinationAddress
47 transactionReceipt
48 }
49 errors { # error details for off ramps
50 invalidWithdrawalsDetails {
51 _id
52 name
53 bankCode
54 countryCode
55 currencySymbol
56 accountNumber
57 account
58 accountType
59 entityName
60 }
61 }
62 }
63}
64"variables":
65{
66 "input": {
67 "orderId": "02a5f0c7-b9bf-48e0-8b5d-190d2e2f7fc1" #Created when calling mutation Order
68 }
69}

Consultar Orden Por ExternalId

Retorna información de una order. Recibe un ExternalId.

1query getOrderByExternalId($input: GetExternalIdOrderInput!) {
2 getOrderByExternalId(input: $input){
3 orderId # unique identifier
4 quoteId # quote id
5 orderType # currency-crypto for on ramp, crypto-currency for off ramp
6 symbolIn
7 symbolOut
8 amountIn
9 amountOut
10 email
11 exchangeRate
12 koyweFee
13 partnerFee
14 networkFee
15 status # see the webhooks and states docs for more info
16 outReceipt
17 bankAccountId # bank account id for off ramps
18 metaData
19 externalId
20 feesInFiat { #Only if the order has a partnerFee and is greather than 0
21 koyweFee
22 netFee
23 partnerFee
24 }
25 feesInUSD { #Only if the order has a partnerFee and is greather than 0
26 koyweFee #(koyweFee / exchangeRate) truncated to 4 digits after the comma
27 netFee #(netFee / exchangeRate) truncated to 4 digits after the comma
28 partnerFee #(partnerFee / exchangeRate) truncated to 4 digits after the comma
29 }
30 dates {
31 confirmationDate
32 paymentDate
33 executionDate
34 deliveryDate
35 }
36 destinationAddress # wallet address to send or receive tokens
37 paymentMethodId
38 logoIn # logo url for symbolIn
39 logoOut # logo url for symbolOut
40 refund { # refund details for off ramps
41 dates {
42 startDate
43 processDate
44 deliveredDate
45 }
46 destinationAddress
47 transactionReceipt
48 }
49 errors { # error details for off ramps
50 invalidWithdrawalsDetails {
51 _id
52 name
53 bankCode
54 countryCode
55 currencySymbol
56 accountNumber
57 account
58 accountType
59 entityName
60 }
61 }
62 }
63}
64"variables":
65{
66 "input": {
67 "externalId": "12A2324A" #Defined when calling mutation Order
68 }
69}

Consultar Ordenes Por txHash

Retorna la información de las ordenes vinculadas al txHash. Recibe un txHash.

1query GetOrderByTxHash($input: GetTxHashOrderInput!) {
2 getOrderByTxHash(input: $input) {
3 orderId # unique identifier
4 quoteId # quote id
5 orderType # currency-crypto for on ramp, crypto-currency for off ramp
6 symbolIn
7 symbolOut
8 amountIn
9 amountOut
10 email
11 exchangeRate
12 koyweFee
13 partnerFee
14 networkFee
15 status # see the webhooks and states docs for more info
16 outReceipt
17 bankAccountId # bank account id for off ramps
18 metaData
19 externalId
20 feesInFiat { #Only if the order has a partnerFee and is greather than 0
21 koyweFee
22 netFee
23 partnerFee
24 }
25 feesInUSD { #Only if the order has a partnerFee and is greather than 0
26 koyweFee #(koyweFee / exchangeRate) truncated to 4 digits after the comma
27 netFee #(netFee / exchangeRate) truncated to 4 digits after the comma
28 partnerFee #(partnerFee / exchangeRate) truncated to 4 digits after the comma
29 }
30 dates {
31 confirmationDate
32 paymentDate
33 executionDate
34 deliveryDate
35 }
36 destinationAddress # wallet address to send or receive tokens
37 paymentMethodId
38 logoIn # logo url for symbolIn
39 logoOut # logo url for symbolOut
40 refund { # refund details for off ramps
41 dates {
42 startDate
43 processDate
44 deliveredDate
45 }
46 destinationAddress
47 transactionReceipt
48 }
49 errors { # error details for off ramps
50 invalidWithdrawalsDetails {
51 _id
52 name
53 bankCode
54 countryCode
55 currencySymbol
56 accountNumber
57 account
58 accountType
59 entityName
60 }
61 }
62 }
63}
64"variables":
65{
66 "input": {
67 "txHash": "0x7bd90e6285dbf85b48f0907288bdbd79ba082bc2c639640ie8234a5867cgd190"
68 }
69}

Lista de órdenes pasadas

Retorna una lista de todas las órdenes asociadas al clientId o al email especificado al autenticarse.

pagesize: Límite de 300, representa la cantidad de respuestas por página.

pageNumber: Número de páginas a mostrar.

initDate: Fecha de inicio desde la cual se obtienen los registros. Formato: YYYY-MM-DD. Se incluirán los registros desde esta fecha en adelante, a menos que se especifique un endDate.

endDate: Fecha de fin hasta la cual se obtienen los registros. Formato: YYYY-MM-DD. Se incluirán solo los registros hasta esta fecha. Si se omite, se retornarán los registros hasta la fecha actual.

1query orders($input: PaginationInput!) {
2 orders(input: $input) {
3 pagination {
4 totalCount
5 pageSize
6 pageNumber
7 }
8 data {
9 orderId # unique identifier
10 quoteId # quote id
11 orderType # currency-crypto for on ramp, crypto-currency for off ramp
12 symbolIn
13 symbolOut
14 amountIn
15 amountOut
16 email
17 exchangeRate
18 koyweFee
19 partnerFee
20 networkFee
21 status # see the webhooks and states docs for more info
22 outReceipt
23 bankAccountId # bank account id for off ramps
24 metaData
25 externalId
26 feesInFiat { #Only if the order has a partnerFee and is greather than 0
27 koyweFee
28 netFee
29 partnerFee
30 }
31 feesInUSD { #Only if the order has a partnerFee and is greather than 0
32 koyweFee #(koyweFee / exchangeRate) truncated to 4 digits after the comma
33 netFee #(netFee / exchangeRate) truncated to 4 digits after the comma
34 partnerFee #(partnerFee / exchangeRate) truncated to 4 digits after the comma
35 }
36 dates {
37 confirmationDate
38 paymentDate
39 executionDate
40 deliveryDate
41 }
42 destinationAddress # wallet address to send or receive tokens
43 paymentMethodId
44 logoIn # logo url for symbolIn
45 logoOut # logo url for symbolOut
46 refund { # refund details for off ramps
47 dates {
48 startDate
49 processDate
50 deliveredDate
51 }
52 destinationAddress
53 transactionReceipt
54 }
55 errors { # error details for off ramps
56 invalidWithdrawalsDetails {
57 _id
58 name
59 bankCode
60 countryCode
61 currencySymbol
62 accountNumber
63 account
64 accountType
65 entityName
66 }
67 }
68 }
69 }
70}
71"variables":
72{
73 "input": {
74 "pageNumber": 100,
75 "pageSize": 1,
76 "initDate": "2024-01-01", # opcional
77 "endDate": "2024-03-01", # opcional
78 }
79}

Agrega txHash para orden Off Ramp

Agrega el txHash a una orden de off ramp. Valida que el hash sea válido para la red de la operación.

1 mutation SetTxHashOrder($input: TxHashOrderInputDto!) {
2 setTxHashOrder(input: $input) {
3 orderId
4 message
5 }
6 }
7 "variables":
8 {
9 "input": {
10 "txHash": "0xcef85d0123ea3d2a3c4bdfaa6d13019c1b3d2aa6943e6ba853644d443ab83ad7",
11 "orderId": "ec2af111-acdc-43bb-a0f3-eb1ed1800bbc"
12 }
13 }

Reembolso de Orden

Inicia una solicitud de reembolso para una orden off-ramp debido a errores en los detalles de la transferencia de fiat, devolviendo el orderId y el estado de la solicitud.

1mutation OffRampRefund($input: OrderRefundInputDto!) {
2 offRampRefund(input: $input) {
3 code
4 data {
5 orderId
6 }
7 message
8 timestamp
9 }
10}
11"variables":
12{
13 "input": {
14 "orderId": "ec2af111-acdc-43bb-a0f3-eb1ed1800bbc"
15 }
16}
17
18
19#### Ejemplo de Respuesta de Error
20{
21 "errors": [
22 {
23 "message": "Refund already requested",
24 "status": "INTERNAL_SERVER_ERROR"
25 }
26 ],
27 "data": null
28}
29
30#### Ejemplo de Respuesta Exitosa
31
32{
33 "data": {
34 "offRampRefund": {
35 "code": "REFUND_000",
36 "data": {
37 "orderId": "ec2af111-acdc-43bb-a0f3-eb1ed1800bbc"
38 },
39 "message": "ok",
40 "timestamp": "2024-06-27T22:34:04.685Z"
41 }
42 }
43}

Reprocesando una orden

Servicio responsable de reprocesar un pedido en caso de errores bancarios. El objetivo es poder finalizar la transacción OFF correspondiente, donde se realiza una transferencia a la cuenta bancaria asociada.

1mutation UpdateOrderWithdrawalDetails($input: UpdateBankInTransactionInput!) {
2 updateOrderWithdrawalDetails(input: $input) {
3 _id
4 name
5 bankCode
6 countryCode
7 currencySymbol
8 accountNumber
9 account
10 accountType
11 entityName
12 }
13}
14"variables":
15{
16 "input": {
17 "orderId": "8bc5b15e-7d9a-4748-b343-cc7d01d20e5f",
18 "destinationAddress": "665a3d05320291a30b6befef" // New bank account id without errors
19 }
20}

Create Bank Account

Crea una nueva cuenta bancaria y la guarda para futuras operaciones.

opcional: bankCode, documentNumber, payoutMethodId (deprecado)

documentNumber es requerido en el caso de que el usuario no haya hecho el KYC.

1mutation createBankAccount($input: BankAccountInput!) {
2 createBankAccount(input: $input) {
3 _id
4 name
5 bankCode
6 countryCode
7 currencySymbol
8 accountNumber
9 account
10 }
11}
12"variables":
13{
14 "input": {
15 "bankCode": "SANTANDER",
16 "accountNumber": "0123123123",
17 "countryCode": "CHL",
18 "currencySymbol": "CLP",
19 "documentNumber": "12345678",
20 "email": "example@domain.com"
21 }
22}

Validaciones Bancos en Colombia

Para evitar rechazos, debes cumplir con estos requerimientos al crear una cuenta en Colombia:

BankValidations
NEQUIMaximum account number size must be 11
DAVIVIENDAMinimum account number size must be 12
BANCOLOMBIAMaximum account number size must be 11
DAVIPLATAThe account number must start with 3 and the minimum size must be 10
BANCO CAJA SOCIAL BCSC SAMaximum account number size must be 11
BANCO DE BOGOTÁMaximum account number size must be 9
SCOTIABANK COLPATRIA SAMaximum account number size must be 10
UALAAccount number must be 15 numeric digits

Warning: El número de cuenta: el campo Bank Account Number debe contener sólo números y ser distinto a 0.

Get Bank Account

Retorna una lista de cuentas bancarias asociadas al usuario, filtrados de acuerdo a countryCode, currencySymbol y email.

1query getBankAccount($filters: FiltersBankAccount!) {
2 getBankAccount(filters: $filters) {
3 _id
4 name
5 bankCode
6 countryCode
7 currencySymbol
8 accountNumber
9 account
10 }
11}
12"variables":
13{
14 "filters": {
15 "countryCode": "CHL",
16 "currencySymbol": "CLP"
17 }
18}

Delete Bank Account

Elimina una cuenta bancaria de la lista de cuentas guardadas.

1mutation deleteBankAccount($input: DeleteBankAccountInput!) {
2 deleteBankAccount(input: $input) {
3 _id
4 name
5 bankCode
6 countryCode
7 currencySymbol
8 accountNumber
9 account
10 }
11}
12"variables":
13{
14 "input": {
15 "_id": "63bd75901ea16ea6e23109b5", #Bank account identifier
16 "countryCode": "CHL",
17 "currencySymbol": "CLP"
18 }
19}

Get Bank Info by Country

Retorna una lista con los bancos que son soportados para un countryCode dado.

1query getBankInfoByCountry($countryCode: String!) {
2 getBankInfoByCountry(countryCode: $countryCode) {
3 bankCode
4 name
5 institutionName
6 transferCode
7 }
8}
9"variables":
10{
11 "countryCode": "CHL"
12}