Balance of payments by country - quarterly data (BPM6)

Data - Eurostat

Info

source dataset .html .RData
eurostat bop_c6_q 2024-11-08 2024-11-21

Example

  • Third quarter of 2023. EU current account surplus €85.4 bn. pdf

Data on europe

source dataset .html .RData
eurostat bop_gdp6_q 2024-11-08 2024-10-09
eurostat nama_10_a10 2024-11-08 2024-10-08
eurostat nama_10_a10_e 2024-11-08 2024-11-21
eurostat nama_10_gdp 2024-11-08 2024-10-08
eurostat nama_10_lp_ulc 2024-11-08 2024-10-08
eurostat namq_10_a10 2024-11-16 2024-11-21
eurostat namq_10_a10_e 2024-11-16 2024-11-16
eurostat namq_10_gdp 2024-11-05 2024-10-08
eurostat namq_10_lp_ulc 2024-11-05 2024-11-04
eurostat namq_10_pc 2024-11-05 2024-11-21
eurostat nasa_10_nf_tr 2024-11-05 2024-10-08
eurostat nasq_10_nf_tr 2024-11-05 2024-10-09
eurostat tipsii40 2024-11-05 2024-11-21

Data on macro

source dataset .html .RData
eurostat nama_10_a10 2024-11-08 2024-10-08
eurostat nama_10_a10_e 2024-11-08 2024-11-21
eurostat nama_10_gdp 2024-11-08 2024-10-08
eurostat nama_10_lp_ulc 2024-11-08 2024-10-08
eurostat namq_10_a10 2024-11-16 2024-11-21
eurostat namq_10_a10_e 2024-11-16 2024-11-16
eurostat namq_10_gdp 2024-11-05 2024-10-08
eurostat namq_10_lp_ulc 2024-11-05 2024-11-04
eurostat namq_10_pc 2024-11-05 2024-11-21
eurostat nasa_10_nf_tr 2024-11-05 2024-10-08
eurostat nasq_10_nf_tr 2024-11-05 2024-10-09
fred gdp 2024-11-21 2024-11-21
oecd QNA 2024-06-06 2024-11-21
oecd SNA_TABLE1 2024-11-16 2024-11-16
oecd SNA_TABLE14A 2024-09-15 2024-06-30
oecd SNA_TABLE2 2024-07-01 2024-04-11
oecd SNA_TABLE6A 2024-07-01 2024-06-30
wdi NE.RSB.GNFS.ZS 2024-09-18 2024-09-18
wdi NY.GDP.MKTP.CD 2024-09-18 2024-09-26
wdi NY.GDP.MKTP.PP.CD 2024-09-18 2024-09-18
wdi NY.GDP.PCAP.CD 2024-11-17 2024-11-21
wdi NY.GDP.PCAP.KD 2024-09-18 2024-09-18
wdi NY.GDP.PCAP.PP.CD 2024-11-21 2024-11-21
wdi NY.GDP.PCAP.PP.KD 2024-11-21 2024-11-21

LAST_COMPILE

LAST_COMPILE
2024-11-21

Last

Code
bop_c6_q %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2024Q2 659985

currency

Code
bop_c6_q %>%
  left_join(currency, by = "currency") %>%
  group_by(currency, Currency) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
currency Currency Nobs
MIO_EUR Million euro 39516561
MIO_NAC Million units of national currency 39024525

bop_item

Code
bop_c6_q %>%
  left_join(bop_item, by = "bop_item") %>%
  group_by(bop_item, Bop_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional

sector10

Code
bop_c6_q %>%
  left_join(sector10, by = "sector10") %>%
  group_by(sector10, Sector10) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
sector10 Sector10 Nobs
S1 Total economy 34965358
S13 General Government 8191458
S1P Other sectors than MFIs and general government 5231461
S123 Money market funds 4551875
S121 Central Bank 4532541
S122 Deposit-taking corporations except the central bank 4399867
S12T Monetary Financial Institutions (MFI) other than central bank 4329913
S12M Financial corporations other than MFIs 4134071
S1V Non-financial corporations, households and non-profit institutions serving households 4123916
S1W Other sectors than General Government 3855340
S1Z Sectors other than deposit-taking corporations and general government 87588
S12R Other financial corporations 71770
S1X Monetary authorities 65928

sectpart

Code
bop_c6_q %>%
  left_join(sectpart, by = "sectpart") %>%
  group_by(sectpart, Sectpart) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
sectpart Sectpart Nobs
S1 Total economy 75471847
S12M Financial corporations other than MFIs 422660
S123 Money market funds 413042
S12T Monetary Financial Institutions (MFI) other than central bank 358214
S1P Other sectors than MFIs and general government 355728
S121 Central Bank 343054
S122 Deposit-taking corporations except the central bank 338828
S13 General Government 327852
S1V Non-financial corporations, households and non-profit institutions serving households 321954
S1N Not sectorised 176383
S12K Monetary financial institutions (MFI) 11288
S1Z Sectors other than deposit-taking corporations and general government 236

stk_flow

Code
bop_c6_q %>%
  left_join(stk_flow, by = "stk_flow") %>%
  group_by(stk_flow, Stk_flow) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
stk_flow Stk_flow Nobs
ASS Assets 17204346
CRE Credit 15844675
DEB Debit 11515599
NET Net 11496492
BAL Balance 11337662
LIAB Liabilities 11133328
NI Net FDI inward 2254
NO Net FDI outward 2254
II Net income on inward FDI 2238
IO Net income on outward FDI 2238

partner

Code
bop_c6_q %>%
  left_join(partner, by = "partner") %>%
  group_by(partner, Partner) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional

geo

Code
bop_c6_q %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

time

Code
bop_c6_q %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  print_table_conditional()

France

Goods and Services

Code
bop_c6_q %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA20", "EXT_EA20", "WRL_REST"),
         bop_item %in% c("GS")) %>%
  left_join(partner, by = "partner") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Partner)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

WRL_REST

Code
bop_c6_q %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("WRL_REST"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EA19

Code
bop_c6_q %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EXT_EA19

Code
bop_c6_q %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EXT_EA19"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Germany

Goods and Services

Code
bop_c6_q %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST"),
         bop_item %in% c("GS")) %>%
  left_join(partner, by = "partner") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Partner)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

WRL_REST

Code
bop_c6_q %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("WRL_REST"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EA19

Code
bop_c6_q %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EXT_EA19

Code
bop_c6_q %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EXT_EA19"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

By Destination: Europe, ex-Europe

France

Balance (Flow)

Code
bop_c6_q %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = 100*values / B1GQ) %>%
  select_if(~n_distinct(.) > 1) %>%
  spread(partner, values) %>%
  arrange(-`WRL_REST`) %>%
  print_table_conditional()

Net (Stock)

Code
bop_c6_q %>%
  filter(geo == "FR",
         stk_flow == "NET",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = 100*values / B1GQ) %>%
  select_if(~n_distinct(.) > 1) %>%
  spread(partner, values) %>%
  arrange(-`WRL_REST`) %>%
  print_table_conditional()

Germany

Balance (Flow)

Code
bop_c6_q %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = 100*values / B1GQ) %>%
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) %>%
  spread(partner, values) %>%
  arrange(-`WRL_REST`) %>%
  print_table_conditional()

Net (Stock)

Code
bop_c6_q %>%
  filter(geo == "DE",
         stk_flow == "NET",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = 100*values / B1GQ) %>%
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) %>%
  spread(partner, values) %>%
  arrange(-`WRL_REST`) %>%
  print_table_conditional()

By Destination: Europe, ex-Europe

France

All

Code
bop_c6_q %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = 100*values / B1GQ) %>%
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) %>%
  spread(partner, values) %>%
  arrange(-`WRL_REST`) %>%
  select(-sector10, -sectpart) %>%
  print_table_conditional()

Services

Code
bop_c6_q %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = 100*values / B1GQ) %>%
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) %>%
  spread(partner, values) %>%
  arrange(bop_item) %>%
  select(-sector10, -sectpart) %>%
  filter(grepl("Services", Bop_item)) %>%
  mutate_at(vars(-bop_item, -Bop_item), funs(round(., 2))) %>%
  print_table_conditional()

Germany

Code
bop_c6_q %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) %>%
  left_join(bop_item, by = "bop_item") %>%
  quarter_to_date %>%
  left_join(B1GQ, by = c("geo", "date")) %>%
  mutate(values = 100*values / B1GQ) %>%
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) %>%
  spread(partner, values) %>%
  arrange(-`WRL_REST`) %>%
  print_table_conditional()