Balance of payments by country - quarterly data (BPM6)

Data - Eurostat

Info

source dataset .html .RData
eurostat bop_c6_q 2025-01-26 2025-01-26

Example

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

Data on europe

source dataset .html .RData
eurostat bop_gdp6_q 2025-01-26 2024-10-09
eurostat nama_10_a10 2025-01-26 2024-10-08
eurostat nama_10_a10_e 2025-01-26 2025-01-26
eurostat nama_10_gdp 2025-01-31 2025-01-31
eurostat nama_10_lp_ulc 2025-01-26 2024-10-08
eurostat namq_10_a10 2025-01-31 2025-01-31
eurostat namq_10_a10_e 2025-01-31 2025-01-31
eurostat namq_10_gdp 2025-01-31 2025-01-31
eurostat namq_10_lp_ulc 2025-01-26 2024-11-04
eurostat namq_10_pc 2025-01-26 2024-12-29
eurostat nasa_10_nf_tr 2025-01-26 2024-12-14
eurostat nasq_10_nf_tr 2025-01-26 2024-10-09
eurostat tipsii40 2025-01-26 2024-12-29

Data on macro

source dataset .html .RData
eurostat nama_10_a10 2025-01-26 2024-10-08
eurostat nama_10_a10_e 2025-01-26 2025-01-26
eurostat nama_10_gdp 2025-01-31 2025-01-31
eurostat nama_10_lp_ulc 2025-01-26 2024-10-08
eurostat namq_10_a10 2025-01-31 2025-01-31
eurostat namq_10_a10_e 2025-01-31 2025-01-31
eurostat namq_10_gdp 2025-01-31 2025-01-31
eurostat namq_10_lp_ulc 2025-01-26 2024-11-04
eurostat namq_10_pc 2025-01-26 2024-12-29
eurostat nasa_10_nf_tr 2025-01-26 2024-12-14
eurostat nasq_10_nf_tr 2025-01-26 2024-10-09
fred gdp 2025-01-26 2025-01-26
oecd QNA 2024-06-06 2025-01-31
oecd SNA_TABLE1 2025-01-31 2025-01-31
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 2025-01-24 2025-01-24
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 2025-01-31 2025-01-31
wdi NY.GDP.PCAP.KD 2024-09-18 2024-09-18
wdi NY.GDP.PCAP.PP.CD 2025-01-31 2025-01-31
wdi NY.GDP.PCAP.PP.KD 2025-01-31 2025-01-31

LAST_COMPILE

LAST_COMPILE
2025-01-31

Last

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

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 40158954
MIO_NAC Million units of national currency 39656926

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 35563433
S13 General Government 8338680
S1P Other sectors than MFIs and general government 5339632
S123 Money market funds 4608111
S121 Central Bank 4585668
S122 Deposit-taking corporations except the central bank 4460629
S12T Monetary Financial Institutions (MFI) other than central bank 4402389
S12M Financial corporations other than MFIs 4191397
S1V Non-financial corporations, households and non-profit institutions serving households 4181557
S1W Other sectors than General Government 3917122
S1Z Sectors other than deposit-taking corporations and general government 88314
S12R Other financial corporations 72416
S1X Monetary authorities 66532

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 76711963
S12M Financial corporations other than MFIs 427913
S123 Money market funds 417285
S12T Monetary Financial Institutions (MFI) other than central bank 362423
S1P Other sectors than MFIs and general government 359915
S121 Central Bank 346727
S122 Deposit-taking corporations except the central bank 342512
S13 General Government 331436
S1V Non-financial corporations, households and non-profit institutions serving households 325546
S1N Not sectorised 178562
S12K Monetary financial institutions (MFI) 11360
S1Z Sectors other than deposit-taking corporations and general government 238

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 17476505
CRE Credit 16100769
DEB Debit 11700888
NET Net 11696732
BAL Balance 11521349
LIAB Liabilities 11310181
NI Net FDI inward 2372
NO Net FDI outward 2372
II Net income on inward FDI 2356
IO Net income on outward FDI 2356

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()