Pay By Bank Payment

Endpoint: POST /v2/moneyins/paybybank/transfer/init


sequenceDiagram
  title Pay By Bank

  participant Customer
  participant Partner
  participant Lemonway_API_Public
  participant Lemonway_Webkit as "Lemonway_Webkit (Webkit PHP)"
  participant Lemonway_API_Private as "Lemonway_API_Private (Webkit Webservice)"
  participant PISP
  participant Banks

  Partner->>Lemonway_API_Public: NEW CALL GetBankList (GET /moneyins/transfers)\nOptional: ListCountryCode
  Lemonway_API_Public->>PISP: GET /api/v1/providers/{market}
  PISP-->>Lemonway_API_Public: { ...,\n  "name":"se-bink-thirdpartyapp",\n  ... }
  Lemonway_API_Public-->>Partner: OUTPUTS\n{\n  CountryCode: FR,\n  ParentName: BNP,\n  BankName: BNP Paribas Privée,\n  logoURL: https://web.bankin.com/img/banks-logo/350_bnp.png,\n  BankId: se-bink-thirdpartyapp,\n  Filtre pro ?\n}

  Customer->>Partner: Selects Pay by Bank + chooses bank\nIf bank not found: VIBAN / classic transfer option

  Partner->>Lemonway_API_Public: NEW CALL MoneyInPayByBank (POST /v2/moneyins/transfer/PayByBank)\n{\n  AccountId,\n  amount,\n  returnUrl,\n  cancelUrl,\n  errorUrl,\n  comment,\n  CountryCode,\n  BankId\n}
  Lemonway_API_Public->>Lemonway_API_Public: Checks\n- account blocked\n- threshold\n- BankId exists (else: Incorrect BankId)
  Lemonway_API_Public->>Lemonway_API_Public: Create pending transaction (id=1234)
  Lemonway_API_Public-->>Partner: webkit-url/?MoneyInToken={webkitToken}
  Partner-->>Customer: Redirect URL (webkit)

  Customer->>Lemonway_Webkit: webkit-url/?MoneyInToken={webkitToken}
  Lemonway_Webkit->>Lemonway_API_Private: BuildPaymentTransferForm

  Lemonway_API_Private->>PISP: PAYMENT REQUEST\n{\n  amount,\n  currency,\n  destinations:[{accountNumber,type}],\n  executionDate,\n  market,\n  paymentScheme,\n  recipientName,\n  remittanceInformation:{type,value},\n  sourceMessage\n}
  PISP-->>Lemonway_API_Private: PAYMENT RESPONSE\n{ id: "18408f4...", ... }

  Lemonway_API_Private->>Lemonway_API_Private: Set real_ref of 1234 = PISP id (18408f4...)
  Lemonway_API_Private-->>Lemonway_Webkit: RESPONSE\naction=https://link.tink.com/1.0/pay/\nmethod=GET\ncontent={client_id,redirect_uri,market,input_provider?,payment_request_id}

  Note over Partner,PISP: User is redirected to the PISP link (Tink) with payment_request_id
  Partner->>PISP: https://link.tink.com/1.0/pay/?client_id=...&redirect_uri=...&market=...&input_provider=...&payment_request_id=18408f4...
  PISP->>Banks: Payer redirected to their bank

  PISP-->>Lemonway_Webkit: redirect_uri callback\n/webhook/paybybank?payment_request_id=18408f4...
  Lemonway_Webkit->>Lemonway_API_Private: Confirm transaction received\nWebhookHandle (keep pending)

  Lemonway_API_Private->>PISP: Check payment status\nGET /api/v1/payments/requests/18408f4.../transfers
  PISP-->>Lemonway_API_Private: { paymentRequestCreatedTransfers:[{status,statusMessage,...}, ...] }

  Lemonway_API_Private->>Lemonway_API_Private: Update transaction 1234\n- CANCELLED if cancelled\n- REFUSED/FAILED if failed

  Lemonway_API_Private-->>Lemonway_Webkit: WebPaymentForm\n{ actionUrl: returnUrl/cancelUrl/errorUrl,\n  method: GET }
  Lemonway_Webkit-->>Partner: Redirect to action URL



To view the diagram, copy and paste the code on the following site:

https://sequencediagram.org/


title Pay By Bank

participant Customer
participant Partner
participant Lemonway_API_Public
participant Lemonway_Webkit (Webkit PHP)
participant Lemonway_API_Private (Webkit Webservice)
participant PISP
participant Banks

Partner->Lemonway_API_Public:**NEW CALL GetBankList or GET/Moneyins/transfers/**\n\nOptional : ListCountryCode
Lemonway_API_Public->PISP:GET /api/v1/providers/{market}\n\n\n
PISP->Lemonway_API_Public:{\n  ...,\n  "name": "se-bink-thirdpartyapp",\n  ...\n}
Lemonway_API_Public->Partner:**OUTPUTS**\n\n{\n   CountryCode : FR,\n     ParentName : BNP,\n        BankName : BNP Paribas Privée,\n        logoURL : https://web.bankin.com/img/banks-logo/350_bnp.png,\n        BankId : se-bink-thirdpartyapp,\n<color:#red>Filtre pro ?</color>\n}
Customer->Partner:Selects Pay by Bank & chooses his bank on the partner's page.\nIf he can't find his bank, the partner shows him an option (VIBAN/classic transfer)
Partner->Lemonway_API_Public:**NEW CALL MoneyInPayByBank or POST/v2/moneyins/transfer/PayByBank**\n\n{\n  AccountId,\n  amount,\n  returnUrl: "http://1000mercis.fr"\n  cancelUrl: "http://1000mercis.fr"\n  errorUrl: "http://1000mercis.fr"\n  comment, <color:#red>>> 35 characters as for moneyouts ?</color>\n  CountryCode,\n  BankId, (example: se-bink-thirdpartyapp)\n}
Lemonway_API_Public->Lemonway_API_Public:Check lists \n<color:#red>>> could we have the full list ? ?</color>\n- if the account is blocked\n- threshold\n- Create a new error message : Incorrect BankId
Lemonway_API_Public->Lemonway_API_Public:Create pending transaction id = 1234
Partner<-Lemonway_API_Public:http://webkit-url/?MoneyInToken=Webkit token
Customer<-Partner:url\n
Customer->Lemonway_Webkit (Webkit PHP):http://webkit-url/?MoneyInToken=Webkit token
Lemonway_Webkit (Webkit PHP)->Lemonway_API_Private (Webkit Webservice):BuildPaymentTransferForm
Lemonway_API_Private (Webkit Webservice)->PISP:**PAYMENT REQUEST**\n\n{\n  "amount": 10,\n  "currency": "SEK", <color:#red>>> devise compte acquéreur </color> >> errors if no bank account attached to environment + currency not supported by TINK\n  "destinations": [\n    {\n      "accountNumber": "4578-3748", >> Lemonway\n      "type": "se-pg" >>iban\n    }\n  ],\n  "executionDate": "2019-11-20",\n  "market": "SE",  >> mandatory, if we provide input_provider ?\n  "paymentScheme": "SEPA_CREDIT_TRANSFER",\n  "recipientName": "Test AB", >> Lemonway\n  "remittanceInformation": {\n    "type": "OCR", <color:#red>>> check with Tink</color>\n    "value": "3245928392092" >> SolutionId.TransId + Partner Comment >> nb of guaranteed characters ?\n  },\n  "sourceMessage": "Payment for Gym Equipment" >> Only for Sweden, leave empty\n}
Lemonway_API_Private (Webkit Webservice)<-PISP:**PAYMENT RESPONSE**\n\n{\n  "id": "18408f41163f4748b87da9b9a68b6df8",\n  ...\n}
Lemonway_API_Private (Webkit Webservice)->Lemonway_API_Private (Webkit Webservice):Set real_ref of 1234 to tink transaction id: 18408f41163f4748b87da9b9a68b6df8
Lemonway_API_Private (Webkit Webservice)->Lemonway_Webkit (Webkit PHP):**RESPONSE**\n\n     action = https://link.tink.com/1.0/pay/\n     method = GET \n     content = {client_id: {YOUR_CLIENT_ID}, \n               redirect_uri: http://LEMONWAY_WEBKIT_URL/payline/1234, \n               market: {MARKET},\n               input_provider: se-bink-thirdpartyapp, (optional)\n               payment_request_id: 18408f41163f4748b87da9b9a68b6df8
Partner->PISP:https://link.tink.com/1.0/pay/?client_id={YOUR_CLIENT_ID}&redirect_uri=http://LEMONWAY_WEBKIT_URL/webhook/paybybank&scope=user:read,credentials:read&market={MARKET}&locale=en_GB&input_provider=se-bink-thirdpartyapp, &payment_request_id=18408f41163f4748b87da9b9a68b6df8
PISP->Banks:Payer is redirected to his bank
Lemonway_Webkit (Webkit PHP)<-PISP:http://LEMONWAY_WEBKIT_URL/webhook/paybybank?payment_request_id=18408f41163f4748b87da9b9a68b6df8
Lemonway_Webkit (Webkit PHP)->Lemonway_API_Private (Webkit Webservice):Confirm transaction received\nWebhookHandle (leave transaction in pending)
Lemonway_API_Private (Webkit Webservice)->PISP:** Check payment status **\n\nhttps://api.tink.com/api/v1/payments/requests/18408f41163f4748b87da9b9a68b6df8/transfers \\n   -H 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \\n   -H 'Content-Type: application/json'
Lemonway_API_Private (Webkit Webservice)<-PISP:{\n  "paymentRequestCreatedTransfers": [\n    {\n       ...\n       "status": "SENT", // CANCELLED / FAILED\n       "statusMessage": "Payment is sent to your bank",\n       ...\n    },\n    {\n       ...\n    }\n  ]\n}
Lemonway_API_Private (Webkit Webservice)->Lemonway_API_Private (Webkit Webservice):Update status of 1234 cancelled or refused if tink is status is cancelled or failed
Lemonway_Webkit (Webkit PHP)<-Lemonway_API_Private (Webkit Webservice):WebPaymentForm { \n  action url: returnUrl or cancelUrl or errorUrl \n  method: GET \n}\n\n
Partner<-Lemonway_Webkit (Webkit PHP):Redirect to action url