Skip to content
By using Twitter’s services you agree to our Cookies Use. We and our partners operate globally and use cookies, including for analytics, personalisation, and ads.
  • Home Home Home, current page.
  • About

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @
  • Language: English
    • Bahasa Indonesia
    • Bahasa Melayu
    • Català
    • Čeština
    • Dansk
    • Deutsch
    • English UK
    • Español
    • Filipino
    • Français
    • Hrvatski
    • Italiano
    • Magyar
    • Nederlands
    • Norsk
    • Polski
    • Português
    • Română
    • Slovenčina
    • Suomi
    • Svenska
    • Tiếng Việt
    • Türkçe
    • Ελληνικά
    • Български език
    • Русский
    • Српски
    • Українська мова
    • עִבְרִית
    • العربية
    • فارسی
    • मराठी
    • हिन्दी
    • বাংলা
    • ગુજરાતી
    • தமிழ்
    • ಕನ್ನಡ
    • ภาษาไทย
    • 한국어
    • 日本語
    • 简体中文
    • 繁體中文
  • Have an account? Log in
    Have an account?
    · Forgot password?

    New to Twitter?
    Sign up
thijsniks's profile
Thijs Niks
Thijs Niks
Thijs Niks
@thijsniks

Tweets

Thijs Niks

@thijsniks

Product Manager for ☎️ at @WhatsApp / ❤️ retweets

San Francisco, CA
thijs.niks.nu
Joined February 2009

Tweets

  • © 2021 Twitter
  • About
  • Help Center
  • Terms
  • Privacy policy
  • Cookies
  • Ads info
Dismiss
Previous
Next

Go to a person's profile

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @

Promote this Tweet

Block

  • Tweet with a location

    You can add location information to your Tweets, such as your city or precise location, from the web and via third-party applications. You always have the option to delete your Tweet location history. Learn more

    Your lists

    Create a new list


    Under 100 characters, optional

    Privacy

    Copy link to Tweet

    Embed this Tweet

    Embed this Video

    Add this Tweet to your website by copying the code below. Learn more

    Add this video to your website by copying the code below. Learn more

    Hmm, there was a problem reaching the server.

    By embedding Twitter content in your website or app, you are agreeing to the Twitter Developer Agreement and Developer Policy.

    Preview

    Why you're seeing this ad

    Log in to Twitter

    · Forgot password?
    Don't have an account? Sign up »

    Sign up for Twitter

    Not on Twitter? Sign up, tune into the things you care about, and get updates as they happen.

    Sign up
    Have an account? Log in »

    Two-way (sending and receiving) short codes:

    Country Code For customers of
    United States 40404 (any)
    Canada 21212 (any)
    United Kingdom 86444 Vodafone, Orange, 3, O2
    Brazil 40404 Nextel, TIM
    Haiti 40404 Digicel, Voila
    Ireland 51210 Vodafone, O2
    India 53000 Bharti Airtel, Videocon, Reliance
    Indonesia 89887 AXIS, 3, Telkomsel, Indosat, XL Axiata
    Italy 4880804 Wind
    3424486444 Vodafone
    » See SMS short codes for other countries

    Confirmation

     

    Welcome home!

    This timeline is where you’ll spend most of your time, getting instant updates about what matters to you.

    Tweets not working for you?

    Hover over the profile pic and click the Following button to unfollow any account.

    Say a lot with a little

    When you see a Tweet you love, tap the heart — it lets the person who wrote it know you shared the love.

    Spread the word

    The fastest way to share someone else’s Tweet with your followers is with a Retweet. Tap the icon to send it instantly.

    Join the conversation

    Add your thoughts about any Tweet with a Reply. Find a topic you’re passionate about, and jump right in.

    Learn the latest

    Get instant insight into what people are talking about now.

    Get more of what you love

    Follow more accounts to get instant updates about topics you care about.

    Find what's happening

    See the latest conversations about any topic instantly.

    Never miss a Moment

    Catch up instantly on the best stories happening as they unfold.

    1. Thijs Niks‏ @thijsniks 23 May 2020

      I wish the @EBA_new/@EPC_SEPA would have a bank transfer URL scheme to make payment requests easy: pay.europa.​eu/v2/ ?type=sct &receiver_name=Franz+Mann &receiver_identifier=NL91ABNA0417164300 &sender_identifier=FI211235600000785 &currency=EUR &amount=12.30

      1 reply 2 retweets 9 likes
      Show this thread
    2. Thijs Niks‏ @thijsniks 23 May 2020

      The link routes to a central website which redirects to the sender’s bank and it pre-fills the bank transfer information. If the sender identifier is not provided, it would let you select your country and bank on the central website first.

      1 reply 0 retweets 2 likes
      Show this thread
    3. Thijs Niks‏ @thijsniks 23 May 2020

      Bought a present with a group? Send this link to the group chat: pay.europa.​eu/v2/ ?type=sct &receiver_name=Franz+Mann &receiver_identifier=NL91ABNA0417164300 &currency=EUR &amount=17.50 &description=Gift+for+Susan

      1 reply 0 retweets 1 like
      Show this thread
    4. Thijs Niks‏ @thijsniks 23 May 2020

      Send your invoice and include a payment link: pay.europa.​eu/v2/ ?type=sct &receiver_name=Studio+Red &receiver_identifier=NL91ABNA0417164300 &currency=EUR &amount=3950.00 &reference=RF18539007547034

      1 reply 0 retweets 0 likes
      Show this thread
    5. Thijs Niks‏ @thijsniks 23 May 2020

      This is effectively the same information as the EPC QR code scheme https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/quick-response-code-guidelines-enable-data-capture-initiation …pic.twitter.com/WbBYBOM33k

      1 reply 0 retweets 1 like
      Show this thread
    6. Thijs Niks‏ @thijsniks 23 May 2020

      The minimum required information is the scheme version, transfer type, and receiver name and identifier: pay.europa.​eu/v2/ ?type=sct &receiver_name=Franz+Mann &receiver_identifier=NL91ABNA0417164300 Everything else can be filled in by the sender in their banking app.

      1 reply 0 retweets 0 likes
      Show this thread
    7. Thijs Niks‏ @thijsniks 23 May 2020

      This specification is so simple that I’m tempted to remove the versioning parameter. Even the transfer type might be unnecessary, given the arrival of instant bank transfers.

      1 reply 0 retweets 0 likes
      Show this thread
      Thijs Niks‏ @thijsniks 23 May 2020

      This does expose the bank account number online, which is generally ok (because of the direct debit rules). Though could still be undesirable. The identifier can also be any proxy (or alias). Such as a phone number, email address, or short code.

      11:03 PM - 23 May 2020
      1 reply 0 retweets 0 likes
        1. New conversation
        2. Thijs Niks‏ @thijsniks 23 May 2020

          Both the amount and description are editable within the bank app by default, but you could turn that off: &amount=12.30 &amount_edit=false &description=Free+form+text &description_edit=false (sure, easy to change the URL, but this is about preventing user errors)

          1 reply 0 retweets 0 likes
          Show this thread
        3. Thijs Niks‏ @thijsniks 23 May 2020

          A callback url could be used to redirect back to the initiator: &callback=initiator.​com/payment

          1 reply 0 retweets 0 likes
          Show this thread
        4. Thijs Niks‏ @thijsniks 23 May 2020

          You could even extend it with a schedule date and/or recurrence rules: &date=2020-03-15 &recur_frequency=[once|d|w|m|q|y] &recur_day=[-366..366] &recur_interval=[0..n] &recur_count=[0..n] &recur_until=2020-12-31

          1 reply 0 retweets 0 likes
          Show this thread
        5. Thijs Niks‏ @thijsniks 23 May 2020

          For example, this would make the transfer repeat every other week for 10 times total: &recur_frequency=week &recur_interval=2 &recur_count=10

          1 reply 0 retweets 0 likes
          Show this thread
        6. Thijs Niks‏ @thijsniks 23 May 2020

          Every 2nd and 16th day of the month till the end of the year: &recur_frequency=month &recur_day=2,16 &recur_until=2020-12-31

          1 reply 0 retweets 0 likes
          Show this thread
        7. Thijs Niks‏ @thijsniks 23 May 2020

          Every last day of the quarter: &recur_frequency=quarter &recur_day=-1

          1 reply 0 retweets 0 likes
          Show this thread
        8. Thijs Niks‏ @thijsniks 23 May 2020

          Every Christmas day, till you cancel it: &date=2020-12-25 &recur_frequency=year

          1 reply 0 retweets 0 likes
          Show this thread
        9. Thijs Niks‏ @thijsniks 23 May 2020

          As an aside: I wonder if more people would understand “repeat” instead of “recur” recur_frequency → repeat_frequency recur_day → repeat_day recur_interval → repeat_interval recur_count → repeat_count recur_until → repeat_until

          1 reply 0 retweets 0 likes
          Show this thread
        10. Thijs Niks‏ @thijsniks 23 May 2020

          This is more light-weight than the PSD2 Payment Initiation API, yet preserves the push payment setup and bank authentication

          1 reply 0 retweets 0 likes
          Show this thread
        11. Thijs Niks‏ @thijsniks 23 May 2020

          The downside for the initiator is the lack of transaction status confirmation, so that will have to be done out of band. Which is the same for the EPC QR code

          1 reply 0 retweets 0 likes
          Show this thread
        12. Thijs Niks‏ @thijsniks 23 May 2020

          No reason why the United States couldn’t do this too, as long as they introduce alias/proxy support (think Zelle): pay.federalreserve.​gov/v1/ ?type=now &receiver_name=John+Smit &receiver_identifier=541-754-3010 [phone] &currency=USD &amount=5.00

          1 reply 0 retweets 0 likes
          Show this thread
        13. Thijs Niks‏ @thijsniks 23 May 2020

          A risk is that people might just click on a random link, get redirected to their bank, and don’t realize they are asked to transfer money. Though request services like Venmo, PayPal, and Tikkie seem to show this is manageable.

          1 reply 0 retweets 0 likes
          Show this thread
        14. Thijs Niks‏ @thijsniks 23 May 2020

          Thoughts? What am I missing?

          3 replies 0 retweets 0 likes
          Show this thread
        15. Thijs Niks‏ @thijsniks 24 May 2020

          The benefit of this Payment Link scheme over the EPC QR scheme is that: (a) Both of these QR codes can be scanned with your bank app (b) Only the Link can be scanned with your default camera app (c) Only the Link can be shared in a message or typed into a browser

          1 reply 0 retweets 0 likes
          Show this thread
        16. Thijs Niks‏ @thijsniks 24 May 2020

          It’s honestly a little maddening that the @EPC_SEPA was able to release a very clean QR code scheme https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2018-05/EPC069-12%20v2.1%20Quick%20Response%20Code%20-%20Guidelines%20to%20Enable%20the%20Data%20Capture%20for%20the%20Initiation%20of%20a%20SCT.pdf … and is completely over-complicating the mobile payment scheme https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2019-06/MSG%20MSCT%20026-18v09%20MSCT%20IIGs.pdf …

          1 reply 2 retweets 1 like
          Show this thread
        17. Thijs Niks‏ @thijsniks 24 May 2020

          The EPC even seems to want to drop their own simple QR code scheme and use the over-engineered EMVCo one… https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2019-06/EPC109-19v1.0%20White%20paper%20MCPPs_final.pdf …pic.twitter.com/cwiU30mEvW

          1 reply 0 retweets 0 likes
          Show this thread
        18. Thijs Niks‏ @thijsniks 24 May 2020

          Let’s add a second type to confirm direct debit mandates: pay.europa.​eu/v2/ ?type=sdd &receiver_name=Magazine &receiver_identifier=NL91ABNA0417164300 &currency=EUR &amount=9.50 &amount_edit=false &date=2020-05-25 &recur_frequency=week &callback=magazine.​nl Thanks to @japborst

          1 reply 1 retweet 1 like
          Show this thread
        19. Thijs Niks‏ @thijsniks 24 May 2020

          In this case, it’s a request to get permission for a weekly magazine subscription charge. This SEPA Direct Debit (SDD) would redirect to your bank, where you confirm the mandate. It would return a sender_name, sender_identifier (IBAN), and mandate_identifier to the callback url

          1 reply 0 retweets 0 likes
          Show this thread
        20. Thijs Niks‏ @thijsniks 24 May 2020

          This is also where we run into some naming problems. The person paying is confirming, but no longer actively sending the money. To indicate who sends and who receives money, the payment world likes to use: payer/payee payer/beneficiary debtor/creditor

          1 reply 0 retweets 0 likes
          Show this thread
        21. Thijs Niks‏ @thijsniks 24 May 2020

          However, those are difficult words. payer/payee only differ one letter, making mistakes easy. beneficiary scores 36/100 on the Flesch–Kincaid test. creditor scores just 23/100 https://www.webfx.com/tools/read-able/check.php …

          1 reply 0 retweets 0 likes
          Show this thread
        22. Thijs Niks‏ @thijsniks 24 May 2020

          In my opinion, comprehension outweighs precision for light-weight protocols used by a broad public. Especially because the people who need the exact definition will be capable enough to read the specification.

          1 reply 0 retweets 0 likes
          Show this thread
        23. Thijs Niks‏ @thijsniks 24 May 2020

          Another thing to add is an idempotency key to prevent the same transaction from being completed twice. Given the decentralized nature of this scheme and the fact that the key does not need to be exposed to the user, I suggest an RFC 4122 UUID.

          1 reply 0 retweets 0 likes
          Show this thread
        24. Thijs Niks‏ @thijsniks 24 May 2020

          You would add: &unique_key=[uuid] And it gets passed on to the bank, which stores it for a minimum of 30 days. They also return it to the callback url. Again, ‘unique’ should be easier to understand to the general public than ‘idempotent.’

          1 reply 0 retweets 0 likes
          Show this thread
        25. Thijs Niks‏ @thijsniks 24 May 2020

          The callback needs to be verified though, which we can do through a combination of: (a) The unique key (which transaction) (b) HTTP Signatures (correct server) (c) Bank account number to domain name mapping maintained by the central directory (server is a bank)

          1 reply 0 retweets 0 likes
          Show this thread
        26. Thijs Niks‏ @thijsniks 24 May 2020

          URL maximum is 2048 characters, but they are preferably shorter than that to generate easy to scan QR codes. Every parameter has a preferred long-form and optional short-form: type = t receiver_name = rn receiver_identifier = ri sender_identifier = si recur_frequency = rf

          1 reply 0 retweets 0 likes
          Show this thread
        27. Thijs Niks‏ @thijsniks 24 May 2020

          And we can even merge some variables: &currency=EUR &amount=9.50 is shortened as &a=EUR9.50

          3 replies 0 retweets 0 likes
          Show this thread
        28. Thijs Niks‏ @thijsniks 24 May 2020

          What else should we consider for a light-weight, permissionless payment request link scheme?

          0 replies 0 retweets 0 likes
          Show this thread
        29. End of conversation

      Loading seems to be taking a while.

      Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.

        Promoted Tweet

        false

        • © 2021 Twitter
        • About
        • Help Center
        • Terms
        • Privacy policy
        • Cookies
        • Ads info